官网定义:NuGet是.NET的软件包管理器(免费)。NuGet客户端工具提供了生成和使用软件包的能力。NuGet Gallery 是所有软件包作者和消费者都使用的中央软件包存储库。
简单来说,nuget包解决了dll引用的问题,开发者可以通过打包,然后发布到公有主机或者私有主机上,供其他开发者使用。可以大大的提高创建一个.NET应用的效率。
想了解平时安装的nuget包,是如何产生的。需要了解几个角色。
简单的总结下这几个角色的关系:创建者创建一个nuget包,并发布到主机上。然后使用者在可访问的主机上搜索安装nuget包到项目中,这样项目就可以利用包提供的功能。如图
目前提供的工具还是挺丰富的,下文使用dotnet CLI ,你也可以选择任意你习惯的工具
准备工作,创建一个类库并命名为AA.Nlog。
1.配置包元数据 ,右键项目-》属性
在.csproj文件中,我们发现添加了一下属性:
<PropertyGroup>
<TargetFrameworks>net452;netstandard2.0</TargetFrameworks>
<Description>支持 NLog</Description>
<PackageProjectUrl>https://github.com/ChengLab/AAFrameWork</PackageProjectUrl>
<RepositoryType>git</RepositoryType>
<PackageTags>NLog</PackageTags>
<RepositoryUrl>https://github.com/ChengLab/AAFrameWork</RepositoryUrl>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
</PropertyGroup>
如果勾选了在版本中生成Nuget包选项框,则生成项目时会自动生成nuget包;包ID:是唯一的标识,用户搜索和使用就是通过包ID。包版本:会自动根据程序集版本生成,如果要更新包,只需要把版本号改大点即可。其他信息可以自行填写。
2.从项目中 生成nuget包(.nupkg文件),运行pack命令如下:
dotnet pack
nuget包已经生成了,什么是nupkg文件?.nuspec文件是包含程序包元数据的XML清单。此清单可用于构建包装并向消费者提供信息。清单始终包含在包装中。可以在微软文档中(https://docs.microsoft.com/en-us/nuget/reference/nuspec)找到有关nuspec的更多详细信息
dotnet nuget push AA.NLog.1.0.0.nupkg -k qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -s https://api.nuget.org/v3/index.json
info : 正在将 AA.NLog.1.0.0.nupkg 推送到 'https://www.nuget.org/api/v2/package'...
info : PUT https://www.nuget.org/api/v2/package/
warn : All published packages should have license information specified. Learn more: https://aka.ms/deprecateLicenseUrl.
info : Created https://www.nuget.org/api/v2/package/ 2854 毫秒
info : 已推送包。
我们登录到nuget.org查看我们的软件包:
可以进行管理,发布之后,稍等几分钟会在nuget.org中进行搜索到
管理nuget程序包->搜索我们刚发布的软件包,AA.Nlog。
如上图所示,该软件包已经可以使用。
希望这篇文章可以对你有所帮助!
参考:https://docs.microsoft.com/zh-cn/nuget/what-is-nuget