如何从零开发一个NuGet软件包?

我想目前每个.net开发人员都应该知道nuget.org和NuGet软件包吧。但是,您是否曾经尝试并创建过一个nuget包呢?Nuget软件包比较容易引入到类库中。因此,可以使用NuGet软件包管理器将nuget软件包添加到任何项目中。

Nuget包的剖析

Nuget软件包不仅是dll文件。NuGet包是可移植的,它包含您要放入.Net项目中的所有内容。您可以在其中放置txt文件或png文件。这就是为什么我们称它们为“包裹”。您可以打包一些开发文件,并将它们以.nupkg格式在项目之间移动。
我刚刚解压缩了InputKit的nuget包,您可以在下图中看到nupkg文件的树状视图。

因此,只需查看其中的文件夹和文件。
icon.png:
这是您的NuGet包的图标文件。现在已将其嵌入.nupkg中,但在早期版本的NuGet中只能定义为url。
.nuspec
nuspec是关于nuget包的元数据文件。在早期版本中,它曾经用于打包nuget包。但是在新的dotnet CLI中,此文件是由roslyn编译器从您的.csproj文件生成的。它包括软件包的目标框架,名称,许可证,图标,标签,与其他包的依赖关系以及其中描述的要放置到添加的项目中的静态文件。
[Content_Types] .xml:
这是一个元数据文件,提供了程序包中包含的每个文件扩展名。
lib:
软件包的主文件夹。此文件夹包括您的构建输出。换句话说,它在构建之后包含了bin文件夹。所以您可以看到不同目标框架的文件夹与项目输出相同。例如,如果您的.csproj文件是多目标的,您可以像我一样看到每个目标框架的文件夹。
package:
此文件夹包含有关您的包的更多元数据文件。此数据与您在nuget软件包列表中看到的数据相同:“创建者”,“描述”,“标识符”,“版本”和“关键字”。
_rels / .rels:
这是xml格式的文件扩展名,由Microsoft创建和使用。您可以从此处查看有关.rels格式的更多信息。它主要用于Microsoft Office。

创建你的第一个库


3-打包!
这就是奇迹发生的地方!准备好你的代码,右键单击您的项目,然后单击“打包”按钮。您的nupkg文件将在您项目的bin文件夹中等待着您。
如果您的开发环境不是Visual Studio,则可以使用命令提示符来执行此操作,如下所示:


4-与全世界分享!
转到nuget.org并登录到你的帐户。然后导航到“发布”选项卡,并将您的.nupkg文件拖放到该页面中。填写有关包裹的信息字段并提交。仅此而已!这是在nuget.org上发布软件包的最简单方法。
使用命令行工具
但是您也可以在命令行下执行此操作。让我们来看看这种方式。
首先,您需要一个Api-Key与nuget API通信。转到nuget.org上的个人资料,然后找到“ API密钥”部分,如下所示。

创建一个API密钥并保存它。您将无法再次看到它。因此,您需要保存它。
现在,从打包开始,然后您可以通过CLI进行推送。
dotnet pack –configuration Release -o .packages/
这意味着在发布模式下构建项目,并将输出文件放置到“ .packages”文件夹中。因此,我们可以轻松地从.pacakges文件夹中找到输出。因此,您的nupkg文件已准备好推送。使用以下命令将软件包推送到nuget.org或您自定义的源:
dotnet nuget push ..packagesMy.Pacakge.1.0.1.nupkg –source [https://api.nuget.org/v3/index.json](https://api.nuget.org/v3/index.json) –api-key YOUR_API_KEY –skip-duplicate
我使用了 skip-duplicate 参数,因为如果要配置 CI ,则可以多次推送相同版本的软件包,而如果要推送已经存在的版本,则会出现错误,并且 CI-CD 进程将失败。因此,使用 skip-duplicate 参数忽略已存在的版本推送,并成功完成操作。
感谢您的阅读,我们下篇文章见!

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年11月19日
下一篇 2020年11月19日

相关推荐