相关文章推荐
胡子拉碴的眼镜  ·  Linux文本处理三剑客之awk学习笔记03 ...·  2 月前    · 
寂寞的手电筒  ·  海康sdk协议接口_海康威视开发平台-腾讯云 ...·  1 年前    · 
可爱的领带  ·  Nature子刊 | ...·  2 年前    · 
淡定的核桃  ·  手把手|20行Python代码教你批量将PD ...·  2 年前    · 
完美的苹果  ·  让MySql支持Emoji表情(MySQL中 ...·  2 年前    · 
Code  ›  如何从零开发一个NuGet软件包?开发者社区
软件 元数据
https://cloud.tencent.com/developer/article/1765149
不敢表白的钱包
1 年前
作者头像
依乐祝
0 篇文章

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

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 依乐祝 > 如何从零开发一个NuGet软件包?

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

作者头像
依乐祝
发布 于 2020-12-25 11:24:26
722 0
发布 于 2020-12-25 11:24:26
举报

作者:依乐祝 首发地址: https://www.cnblogs.com/yilezhu/p/14175019.html

我想目前每个.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: 这是一个元数据文件,提供了程序包中包含的每个文件扩展名。 软件包的主文件夹。此文件夹包括您的构建输出。换句话说,它在构建之后包含了bin文件夹。所以您可以看到不同目标框架的文件夹与项目输出相同。例如,如果您的.csproj文件是多目标的,您可以像我一样看到每个目标框架的文件夹。 package: 此文件夹包含有关您的包的更多元数据文件。此数据与您在nuget软件包列表中看到的数据相同:“创建者”,“描述”,“标识符”,“版本”和“关键字”。 _rels / .rels: 这是xml格式的文件扩展名,由Microsoft创建和使用。您可以从 此处 查看有关.rels格式的更多信息。它主要用于Microsoft Office。

创建你的第一个库

每一个开发者都应该知道类库。它们很难移动或用于不同的项目。因为它们的输出是 dll 文件。在本文中,我不会谈论如何构建库。我将展示如何将它们转换为可移植的nuget包。因此,让我们从第一步开始。 1-选择目标框架 选择目标框架是非常重要!只需计划你的项目并定义依赖项即可。如果您的依赖项需要.net core(如实体框架)或以.Net core为目标的对象,只需将目标框架选为“.Net core”。但如果不是,请始终尝试在“.Net Standard”上构建库。顺便说一句,你可以建立一个多目标项目。您可以 从此处 阅读有关 多目标项目的 更多信息。 2-填充元数据 在我们所处的时代,MetaData是最重要的事情。MetaData可以更轻松地找到您的包裹并最好地描述其作用。因此,请正确填写您的元数据。在Visual Studio中创建类库后,只需 右键单击 并转到 属性 。您可以在“ 打包” 标签下看到所有可以填写的字段。 如果您的环境不是Visual Studio,则可以直接修改.csproj文件,如下所示。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <PackageId>My.Package</PackageId>
    <Version>1.0.1</Version>
    <Authors>enisn</Authors>
    <Company>enisn</Company>
    <Product>My Package</Product>
    <Description>This is my packages description.</Description>
    <PackageLicenseExpression>MIT</PackageLicenseExpression>
    <PackageProjectUrl>https://github.com/enisn/MyPackage</PackageProjectUrl>
    <RepositoryUrl>https://github.com/enisn/MyPackage</RepositoryUrl>
    <PackageTags>my,awesome,package</PackageTags>
    <PackageReleaseNotes>Hot fixes</PackageReleaseNotes>
  </PropertyGroup>
</Project>

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

dotnet pack My.Package.csproj

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

创建一个API密钥并保存它。您将无法再次看到它。因此,您需要保存它。 现在,从打包开始,然后您可以通过CLI进行推送。

 
推荐文章
胡子拉碴的眼镜  ·  Linux文本处理三剑客之awk学习笔记03:读取文件 - 阿龙弟弟 - 博客园
2 月前
寂寞的手电筒  ·  海康sdk协议接口_海康威视开发平台-腾讯云开发者社区-腾讯云
1 年前
可爱的领带  ·  Nature子刊 | 不确定性驱动、用于主动学习的动力学用于自动采样 - 知乎
2 年前
淡定的核桃  ·  手把手|20行Python代码教你批量将PDF文件转为Word格式(包教包会)-python将pdf转成word
2 年前
完美的苹果  ·  让MySql支持Emoji表情(MySQL中4字节utf8字符保存方法)_牛奔的博客-CSDN博客
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号