dotnet CLI推送Nuget

发布时间 2023-04-11 13:20:16作者: 贰拾~

前提:

  • 准备好要发布的包
  • 选择一个打包工具,可以是dotnet CLI、nuget.exe CLI、MSBuild

  • 准备好Nuget官方API Key

自述文件

  先必须添加Readme.md到项目中(包含在项目中),双击项目文件,添加README.md(注意路径),并制定文件地址:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
//...
    <PackageReadmeFile>README.md</PackageReadmeFile>
//...
  </PropertyGroup>

  <ItemGroup>
//...
    <None Include="README.md" Pack="true" PackagePath=""/>
//...
  </ItemGroup>
</Project>

 

设置属性

打包工具这里使用的dotnet工具,包的表述来源于项目proj项目的属性,所以首先得设置属性,以下是官方示例

  • PackageId(包标识符)必须跨 nuget.org 和承载包的任何其他目标是唯一的。 如果未指定值,则命令使用 .AssemblyName
  • Version,窗体 Major.Minor.Patch[-Suffix] 中特定的版本号,其中 -Suffix 标识预发布版本。 如果未指定,默认值为 1.0.0
  • Authors 是包的作者。 如果未指定,默认值为 AssemblyName
  • Company 是公司信息。 如果未指定,则默认值为 Authors
  • Product 是产品信息。 如果未指定,默认值为 AssemblyName
  • ....
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <PackageId>UniqueID</PackageId>
    <Version>1.0.0</Version>
    <Authors>Author Name</Authors>
    <Company>Company Name</Company>
    <Product>Product Name</Product>
  </PropertyGroup>
</Project>

 

打包

  要生成 NuGet 包或 .nupkg 文件,请从项目文件夹运行 dotnet pack命令,该命令还会自动生成项目

dotnet pack

  若要在运行 dotnet build 时自动运行 dotnet pack,请将以下行添加到 <PropertyGroup> 中的项目文件内:

<GeneratePackageOnBuild>true</GeneratePackageOnBuild>

 

发布

使用命令dotnet nuget push可将打包好的.nupkg文件推送到Nuget,可将如下命令写入一个.ps1文件用powershell执行,key是nuget的API Key

dotnet nuget push [<ROOT>] [-d|--disable-buffering] [--force-english-output]
    [--interactive] [-k|--api-key <API_KEY>] [-n|--no-symbols]
    [--no-service-endpoint] [-s|--source <SOURCE>] [--skip-duplicate]
    [-sk|--symbol-api-key <API_KEY>] [-ss|--symbol-source <SOURCE>]
    [-t|--timeout <TIMEOUT>]

dotnet nuget push -h|--help
Write-host "PSScriptRoot
dotnet build
dotnet pack -o ./pack
set-location ./pack
dotnet nuget push .nupkg -k oy2xxxxxxxxxxaxxxxxxxxxxqklnlbm -s https://www.nuget.org/
remove-item ./.nupkg -Recurse

 

参考

https://learn.microsoft.com/zh-cn/nuget/create-packages/creating-a-package-dotnet-cli