如何將本身的類庫,自動打包並自動發佈到Nuget?html
1. 項目csproject屬性修改
新建一個項目GitToNugetPackageTestgit
不用添加任何類,咱們修改csproject屬性。github
替換爲如下模板內容後,並修改如下節點值:json
- TargetFrameworks 依賴的框架版本,好比net452;netcoreapp3.1,多個版本以分號隔開Version
- Version 版本號,每次須要升級Nuget版本時,能夠修改這個提交一下就好了。
- RespositoryUrl、PackageProjectUrl替換成本身的項目地址和倉庫地址
1 <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> 2 <PropertyGroup> 3 <TargetFrameworks>net45</TargetFrameworks> 4 <GeneratePackageOnBuild>true</GeneratePackageOnBuild> 5 <Version>1.0.0</Version> 6 <Authors>Kybs0</Authors> 7 <UseWpf>True</UseWpf> 8 <UseWindowsForms>true</UseWindowsForms> 9 <RepositoryUrl>https://github.com/Kybs0/GitToNugetPackageTest.git</RepositoryUrl> 10 <PackageProjectUrl>https://github.com/Kybs0/GitToNugetPackageTest</PackageProjectUrl> 11 <PackageIconUrl></PackageIconUrl> 12 <RepositoryType>git</RepositoryType> 13 <Description>測試:Git自動打包,並推到Nuget源。</Description> 14 <LangVersion>latest</LangVersion> 15 </PropertyGroup> 16 <ItemGroup> 17 <None Remove="GitToNugetPackageTest.csproj.DotSettings" /> 18 </ItemGroup> 19 <ItemGroup> 20 <PackageReference Include="System.ValueTuple" Version="4.5.0" /> 21 </ItemGroup> 22 </Project>
2. 生成並上傳Nuget包
在第1步的基礎上,鼠標右擊項目,點擊打包windows
在Debug下能夠查看到本地生成的nuget源包api
將此源包上傳至https://www.nuget.org/packages/manage/upload。app
上傳成功後,在頭像彈框內點擊API KEYS,而後生成一個新的API KEY(關聯上GitToNugetPackageTest)框架
生成成功後,在API Keys列表找到新的Key,點擊複製(複製之後保存在你的記事本里,第4步須要)。post
注:注意保留API KEY!刷新頁面就沒有了,除非點擊從新生成,可是從新生成的Key就是另外一個Key值了。測試
因此爲了減小麻煩,建議一個項目用一個API KEY。
3.新建Action,添加打包流程
在github上新建個repository,並將項目推送上去:https://github.com/Kybs0/GitToNugetPackageTest
而後在Action下新建一個workflow
選.NetCore模板,而後修改成如下內容:
1 name: CI 2 3 on: 4 push: 5 branches: [ master ] 6 pull_request: 7 branches: [ master ] 8 9 jobs: 10 build: 11 runs-on: windows-latest 12 13 # Steps represent a sequence of tasks that will be executed as part of the job 14 steps: 15 # 1.Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 16 - uses: actions/checkout@v2 17 # 2.runtime environment 18 - name: Setup .NET Core 19 uses: actions/setup-dotnet@v1 20 with: 21 dotnet-version: 3.1.100 22 # 3.build 23 - name: Build with dotnet 24 run: dotnet build --configuration Release 25 # 4.Install Nuget 26 - name: Install Nuget 27 run: | 28 $sourceNugetExe = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" 29 $targetNugetExe = "nuget.exe" 30 Invoke-WebRequest $sourceNugetExe -OutFile $targetNugetExe 31 # 5. Push package 32 - name: Push generated package to GitHub registry 33 run: | 34 .\nuget push .\GitToNugetPackageTest\bin\Release\*.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NugetKey }} -NoSymbols
以上對master分支打包,並推送到Nuget。
須要修改的是第5步,若是workflow的yml格式文件是在解決方案下的,須要添加「.\GitToNugetPackageTest\bin\Release\*.nupkg」相對路徑,改個名稱就好。
4. GitHub關聯相應的Nuget源地址
在github項目所在的設置-Secrets頁面,添加第二步從nuget生成的API Key。
添加後,嘗試修改csproject中的版本號爲1.0.1,而後等待github打包,打包完成後,nuget包的版本就更新成1.0.1了:https://www.nuget.org/packages/GitToNugetPackageTest/
VS搜索nuget包:
以上適合小白瀏覽的經驗步驟~
詳細的打包原理及進階,能夠看倆個MVP大佬同事的博客