釋出nuget包的正確姿勢---cicd自動打包釋出nuget包

gui.h發表於2022-04-17

最輕便的釋出nuget包方式,方便cicd自動打包釋出nuget包

首先新建專案

專案名隨便取,這裡就叫它GuiH.ClassLibrary

預設即可,需要改目標版本時,等建立好再改

專案建立好了

隨便寫個介面方法

namespace GuiH.ClassLibrary
{
    public class Class1
    {
        public static void Test()
        {
            Console.WriteLine("Hello Nuget!!!");
        }
    }
}

接下來修改工程檔案,預設情況是這樣的


我們新增下面一些配置

<Project Sdk="Microsoft.NET.Sdk">

	<PropertyGroup>
		<TargetFramework>net6.0</TargetFramework>
		<ImplicitUsings>enable</ImplicitUsings>
		<Nullable>enable</Nullable>

		<!--以下是我們自己新增的-->
		<!--版本號,重要性不必多說-->
		<Version>1.0.0</Version>
		<!--新增該配置,在編譯時進行打包-->
		<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
		<!--新增該配置才會生成註釋檔案,預設無註釋-->
		<GenerateDocumentationFile>true</GenerateDocumentationFile>
	</PropertyGroup>

</Project>

執行編譯命令,根據上面的配置,編譯後會自動進行打包

// 該命令在GuiH.ClassLibrary專案根目錄下執行
dotnet build -c=Release


命令列中也提示了 已成功建立包“E:\工作區\GuiH.ClassLibrary\GuiH.ClassLibrary\bin\Release\GuiH.ClassLibrary.1.0.0.nupkg”

GuiH.ClassLibrary.1.0.0.nupkg推送至nuget倉庫,可以自己搭建,也可以是微軟官方nuget倉庫

www.nuget.org註冊一個賬號,然後獲取apikey


詳細釋出nuget命令參考:dotnet-nuget-push

// $apikey 替換為你的apikey
dotnet nuget push ./bin/Release/GuiH.ClassLibrary.1.0.0.nupkg -k $apikey -s https://api.nuget.org/v3/index.json --skip-duplicate

正在將 GuiH.ClassLibrary.1.0.0.nupkg 推送到 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
warn : All published packages should have license information specified. Learn more: https://aka.ms/deprecateLicenseUrl.
  Created https://www.nuget.org/api/v2/package/ 1404 毫秒
已推送包。

搜尋釋出的包(一般會短暫延遲幾分鐘才能搜到),在專案中使用(應該建立一個控制檯測試,知道就好~)


多種目標平臺支援

例如相容framwork4.6.1,修改工程檔案如下,注意單詞TargetFrameworks的單複數

// 修改前
<TargetFramework>net6.0</TargetFramework>
// 修改後
<TargetFrameworks>net6.0;net461</TargetFrameworks>

或只支援net461

<TargetFrameworks>net461</TargetFrameworks>

CICD

cicd指令碼中核心的兩條命令就是上述兩個,執行環境安裝相應的sdk(.net5/.net6)即可。

關於如何多平臺相容的詳細內容,下篇文章介紹。

相關文章