[.net core] 创建和发布NuGet包 (dotnet CLI)
[原文] :https://docs.microsoft.com/zh-cn/nuget/quickstart/create-and-publish-a-package-using-the-dotnet-cli
以下为测试DEMO简记
.NET core CLI 发布:dotnet nuget push AppLogger.1.0.0.nupkg -k qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -s https://api.nuget.org/v3/index.json
注意点:
1. 需要定位到打包好的 *.nupkg 后缀的文件夹目录,再运行 .NET core CLI 发布
2. 替换内容 AppLogger.1.0.0.nupkg 和 API Key
发布成功后,搜索看下效果:
哈哈,挺好玩吧!第一个属于自己的NuGet包 。too perfect!
PS: 还可以添加 Readme.txt 文件, 当在直接安装包之后立即将该文件的内容显示(文末有详解)
下面所有内容均为上述地址拷贝,仅用作其他任何情况不能访问时阅读,如上 [ 原文 ] 地址可访问,请直接阅读忽略下面内容!!
------------------------------------- 以下为备份 --------------------------
从 .NET 类库创建 NuGet 包并使用 dotnet
命令行接口 (CLI) 将其发布到 nuget.org 是很简单的过程。
必备条件
-
从 Visual Studio 2017 开始,dotnet CLI 将自动随任何与 .NET Core 相关的工作负载一起安装。
-
必须先确认该帐户,才能上传包。
创建类库项目
你可以使用现有的 .NET 类库项目用于要打包的代码,或者创建一个简单的项目,如下所示:
-
创建名为
AppLogger
的文件夹。 -
打开命令提示符并切换到
AppLogger
文件夹。 -
类型
dotnet new classlib
,它使用项目当前文件夹的名称。这会创建新项目。
将包元数据添加到项目文件
在最终包中,清单是基于项目文件中包含的 NuGet 元数据属性生成的 .nuspec
文件。
-
打开项目文件 (
.csproj
),并在现有<PropertyGroup>
标记内至少添加以下属性,同时根据需要更改值:复制<PackageId>AppLogger</PackageId> <Version>1.0.0</Version> <Authors>your_name</Authors> <Company>your_company</Company>
重要
对于本次演练,我们建议在名称中包含“Sample”或“Test”,因为稍后的发布步骤确实会使该包公开显示(尽管实际上不太可能有人会使用它)。
-
NuGet 元数据属性中描述的任何可选属性。
备注
对于面向公共使用而生成的包,请特别注意 PackageTags 属性,因为这些标记可帮助其他人查找包并了解其用途。
运行 pack 命令
若要从项目中生成 NuGet 包(.nupkg
文件),运行 dotnet pack
命令,它也会自动生成项目:
# Uses the project file in the current folder by default
dotnet pack
输出显示 .nupkg
文件的路径:
Microsoft (R) Build Engine version 15.5.180.51428 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.
Restore completed in 29.91 ms for D:projAppLoggerNetAppLoggerAppLogger.csproj.
AppLogger -> D:projAppLoggerNetAppLoggerinDebug
etstandard2.0AppLogger.dll
Successfully created package 'D:projAppLoggerNetAppLoggerinDebugAppLogger.1.0.0.nupkg'.
在生成期间自动生成包
若要在运行 dotnet pack
时自动运行 dotnet build
,请将以下行添加到 <PropertyGroup>
中的项目文件内:
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
发布包
有了 .nupkg
文件后,可以使用 dotnet nuget push
命令以及从 nuget.org 获取的 API 密钥将其发布到 nuget.org。
备注
此外,还会定期扫描 nuget.org 上列出的所有包。
托管包。
获取 API 密钥
-
登录你的 nuget.org 帐户,或创建一个帐户(如果你还没有帐户)。
个人帐户。
-
选择用户名(在右上角),然后选择“API 密钥”。
-
(请参阅下面有关范围的详细信息。)
-
创建密钥后,选择“复制”,检索需要在 CLI 中使用的访问密钥 :
-
如果不再希望通过 CLI 推送包,还可以删除 API 密钥。
范围内的 API 密钥。
用 dotnet nuget push 发布
-
更改到包含
.nupkg
文件的文件夹。 -
运行以下命令,指定包名称(唯一包 ID)并使用你的 API 密钥替换密钥值:
复制dotnet nuget push AppLogger.1.0.0.nupkg -k qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -s https://api.nuget.org/v3/index.json
-
dotnet 会显示发布过程的结果:
复制info : Pushing AppLogger.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'... info : PUT https://www.nuget.org/api/v2/package/ info : Created https://www.nuget.org/api/v2/package/ 12620ms info : Your package was pushed.
dotnet nuget push。
发布错误
例如,你可能会忘记更新项目中的版本号,因此尝试发布已存在的包。
在这种情况下,push
命令会给出以下错误:
Response status code does not indicate success: 403 (The specified API key is invalid,
has expired, or does not have permission to access the specified package.).
更改包标识符,重建项目,重新创建 .nupkg
文件,然后重试 push
命令。
管理已发布的包
在该时间段,包页面会显示以下消息:
刚刚已将第一个 NuGet 包发布到 nuget.org,其他开发人员可在自己的项目中使用它。
如果你已在本演练中创建一个实际上并不使用的包(例如使用空的类库创建的包),则应取消列出将在搜索结果中隐藏的包:
-
在 nuget.org 上,选择用户名(在该页的右上角),然后选择“管理包” 。
-
找到你需要在“已发布”下取消列出的包,然后选择右侧的回收站图标:
-
在随后的页面上,清除标记有“在搜索结果中列出(包名)”的框,然后选择“保存”:
添加自述文件和其他文件
若要直接指定要包含在包中的文件,请编辑项目文件并使用 content
属性:
<ItemGroup>
<Content Include="readme.txt">
<Pack>true</Pack>
<PackagePath></PackagePath>
</Content>
</ItemGroup>
例如,下面是 HtmlAgilityPack 包的自述文件的显示方式:
备注
只在项目根目录添加 readme.txt 不会导致它被包含在生成的包中。
相关视频
YouTube 上查找更多 NuGet 视频。