目录
1、您的项目
2、创建 .nuspec 文件
3、一张图片胜过一千个拉取请求
4、包括自述文件 MD 文件
5、构建软件包
6、将包部署到 Nuget.Org
7、手动上传软件包
8、自动化和脚本化部署
9、我们如何构建和部署 ErrLog.IO Nuget 包
10、Nuget统计数据
11、最后的思考
创建 Nuget 包是一个相对简单的过程,但第一次可能有点令人生畏。本教程将逐步引导您完成该过程。
Microsoft 提供了有关 Nuget 的全面文档,但我们在此处简化了该过程以提供帮助。
1、您的项目
理想情况下,Nuget 包应为 .NET Framework 类库。在我们的实例中,我们使用一个 C# 实例,并且该包在所有意图中都是一个普通的类库。
要包含在包中的任何文件(如文档或 readme.md 文件)都应包含在项目中。
2、创建 .nuspec 文件
Nuget 包的主要组件是 .nuspec 文件。这是一个表示包的 XML 文件,包含 Nuget.org 发布包所需的所有信息。
虽然不是必需的,但如果将 .nuspec 文件包含在项目的根目录中,则会使工作变得更容易一些。
空的 .nuspec 文件如下所示。这是可用于创建第一个包的基本结构。
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id></id>
<version></version>
<title></title>
<authors></authors>
<owners></owners>
<licenseUrl></licenseUrl>
<projectUrl></projectUrl>
<iconUrl></iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description></description>
<releaseNotes></releaseNotes>
<copyright></copyright>
<tags></tags>
<dependencies>
<dependency id="" />
</dependencies>
<summary></summary>
</metadata>
<files>
<file src="" target="" />
</files>
</package>
一个真实的例子 - 我们的 ErrLog.IO.Nuspec 文件
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>errlog.io</id>
<version>1.1.18</version>
<title>ErrLog.IO Error and Exception Logging Tool</title>
<authors>Matthew Proctor, Michael Sanders, Alastair Bateman</authors>
<owners>kutamo</owners>
<licenseUrl>https://errlog.io/terms</licenseUrl>
<projectUrl>https://errlog.io/docs/getting-started</projectUrl>
<iconUrl>https://www.errlog.io/images/errlog_dark_logo.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>ErrLog.IO is an exception and error logging tool</description>
<releaseNotes>Bug fixes and performance improvements </releaseNotes>
<copyright>Copyright 2017 Kutamo Pty. Ltd.</copyright>
<tags>exceptions web http error logging</tags>
<dependencies>
<dependency id="Newtonsoft.Json" version="10.0" />
</dependencies>
<summary>ErrLog.IO is an exception and error logging tool.</summary>
</metadata>
<files>
<file src="readme.md" target="" />
</files>
</package>
必需的 .nuspec 元素
元素 | 描述或细节 |
id | 不区分大小写的包标识符,该标识符在 nuget.org 中必须是唯一的。ID 不能包含对 URL 无效的空格或字符,并且通常遵循 .NET 命名空间规则。 |
version | 包的版本,遵循以下模式。请确保为每个后续包部署更新此值。major.minor.patch |
description | 用于 UI 显示的包的长描述 - 这应该是对包及其提供的功能的描述。 |
authors | 以逗号分隔的包作者列表,与 nuget.org 上的配置文件名称匹配。 |
有用但可选的 .nuspec 元素
元素 | 描述或细节 |
title | 只需包的标题,通常在 UI 中显示为 nuget.org 和 Visual Studio 中的包管理器。如果未指定,则使用包 ID。 |
projectUrl | 程序包主页的 URL,通常显示在 UI 显示和 nuget.org 中。 |
licenseUrl | 包许可证的 URL(如果有)。 |
iconUrl | 具有透明背景的 64x64 图像的 URL,用作 UI 显示中包的图标。这必须是完全限定的 URL。如果未指定,则包将具有默认的 Nuget 徽标。 |
releaseNotes | 在此版本的包中所做的更改的简要说明。 |
copyright | 软件包的版权详细信息。 |
.nuspec 文件具有许多其他配置选项,此处记录了这些选项。
3、一张图片胜过一千个拉取请求
为了帮助您的软件包与 Nuget.org 库中的数千个其他软件包区分开来,创建自己的徽标是个好主意。
徽标必须是具有透明背景的 64x64 像素图像,并且包含在 .nuspec 文件的元素中。<iconUrl></iconUrl>
4、包括自述文件 MD 文件
readme.md 文件是向用户提供有关如何使用包的说明的好方法。
安装包后,这将显示在 Visual Studio 中,并使用 markdown 编写。
您可以在此处查看我们的自述文件。
5、构建软件包
创建 .nuspec 文件后,现在可以生成包了!
Nuget.Org 提供了一个应用程序 nuget.exe用于将库捆绑到 Nuget 包中。如果使用的是 Visual Studio,则应该已经安装了此软件,也可以从 nuget.org/downloads 下载它。
Nuget.exe 需要从项目文件夹内运行,因此最简单的方法是从命令提示符或 powershell 窗口进入此文件夹。
Nuget.Exe 包存储库
如果你的库使用任何包,则需要告诉 Nuget 它们在电脑上的位置。这是通过使用 -Set
repositoryPath
参数运行 nuget.exe 来完成的。
如果使用的是 Visual Studio,则包文件夹通常位于解决方案的根文件夹中。
nuget.exe config -Set repositoryPath="\full-path-to-your-packages-folder\"
现在,我们可以创建包了。在下面的示例中,我们将生成配置设置为 Release。
nuget.exe pack -IncludeReferencedProjects -properties Configuration=Release
使用这些选项,Nuget 将创建一个 .nupkg,其中包含任何引用的包和项目。
使用以下格式自动创建包文件名[package id].[package version].nupkg
例如,最近的软件包文件名是 errlog.io.1.1.18.nupkg。ErrLog.IO
6、将包部署到 Nuget.Org
准备好 .nupkg 文件后,现在可以将其部署到 Nuget.Org。
此时,我们假设您已经在 Nuget.Org 上创建了一个帐户,并创建了一个 API 密钥。
7、手动上传软件包
只需访问 https://www.nuget.org/packages/manage/upload,即可将 .nupkg 文件上传到 nuget。
Nuget 将打开包,读取 .nuspec 文件,然后发布包,只需一个步骤即可完成。
8、自动化和脚本化部署
NuGet.exe 能够自动上传包 - 这意味着你可以编写脚本来自动生成和部署包,无需交互。
若要通过 nuget.exe 上传包,首先需要设置 API 密钥。您可以在 Nuget.Org 上的帐户中创建 API 密钥。
nuget.exe config setApiKey aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
设置 API 密钥后,现在可以使用 Nuget.Exe 将包推送到 Nuget.Org。这听起来很奇怪,不管你说多少次。
nuget.exe push [your-package-filename].nupkg -Source https://www.nuget.org/api/v2/package
方便的提示!
该命令还支持通配符,因此您只需使用单个命令即可自动推送文件夹中的任何 .nupkg 文件。push
nuget.exe push *.nupkg -Source https://www.nuget.org/api/v2/package
9、我们如何构建和部署 ErrLog.IO Nuget 包
我们使用一个简单的批处理文件来自动生成和部署我们的 Nuget 包,我们很高兴在下面分享它(对一些项目进行了模糊处理)。ErrLog.IO
REM Move to project folder cd E:\ErrLog\ErrLogNuget\ REM Configure Nuget Settings nuget config -Set repositoryPath="E:\ErrLog\packages" nuget setApiKey aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee REM Create Nuget Package nuget pack -IncludeReferencedProjects -properties Configuration=Release REM Deploy to Nuget.Org nuget push *.nupkg -Source https://www.nuget.org/api/v2/package
10、Nuget统计数据
Nuget 包页提供了包下载的便捷摘要,以及数据透视表形式的更多详细信息,使你能够查看每个版本和每个客户端类型的下载。
11、最后的思考
部署用于全球分发的 Nuget 包很容易,但也很容易意外部署损坏的包,因为测试是你的责任。
请确保你有一个可靠的测试过程,以便在发布包后立即下载和验证包,以确保你的用户有一个出色且无错误的体验。