.net 知新:【4】NuGet简介和使用

在包管理之前咱们在项目中引用第三方包一般是去下载dll放到项目中再引用,后来逐渐发展成各类包管理工具,nuget就是一种工具,适用于任何现代开发平台的基本工具可充当一种机制,经过这种机制,开发人员能够建立、共享和使用有用的代码。 一般,此类代码捆绑到“包”中,其中包含编译的代码(如 DLL)以及在使用这些包的项目中所需的其余内容。
Linux 咱们可使用apt、yum来安装软件,js 可使用npm来搭建下载,Java 有maven管理包,而对于.net nuget就是一样效果和机制的工具。html

NuGet 客户端工具

要使用 NuGet,做为软件包使用者或建立者,可使用命令行接口 (CLI) 工具以及 Visual Studio 中的 NuGet 功能。npm

CLI工具可使用 dotnet CLI 或 nuget.exe CLI。json

dotnet CLI 随某些 Visual Studio 工做负载一块儿安装,例如 .NET Core 。从 Visual Studio 2017 开始dotnet CLI 将自动随任何与 .NET Core 相关的工做负载一块儿安装。
dotnet CLI 适用于 .NET Core 和 .NET Standard 项目(SDK 样式的项目类型),以及任何其余 SDK 样式项目(例如,面向 .NET Framework 的 SDK 样式项目)
也就是说安装VS的时候会自动包含在工做负载中,对于.net 5 也能够直接安装.NET SDK,如以前.net 知新:【1】 .Net 5 基本概念文章介绍中能够看到.NET SDK是包含了CLI的。
而对于.NET Framework(仅限非 SDK 样式项目),使用 nuget.exe CLI。这种方式如今基本不使用,由于咱们通常不会去单独安装,都是安装VS后直接使用就好了,除非你还在使用Visual Studio 2017 之前的版本。api

至于他们有什么区别呢?网络

第一个是之前.NET Framework时期使用包管理的方式是使用单独的 packages.config 文件进行管理。maven

可是不建议使用packages.config,.NET Framework能够在VS中右键点击packages.config迁移到PackageReference。工具

如今.net 5的项目默认使用 PackageReference,包保留在 global-packages 文件夹中(而不是解决方案中的 packages 文件夹中)。
PackageReference 仅列出那些直接安装在项目中的 NuGet 包,不会显示引用包所包含的低级依赖更加简洁。visual-studio

好比咱们使用nuget安装NPOI包,它的依赖以下:ui

在.net framework的packages.config文件中看到NPOI和它的依赖项.net

在.net 5项目文件中只有NPOI

第二个就是两个工具的功能有差别

某些高级功能没法使用的时候咱们就须要用命令的方式。

visual studio 使用 nuget

在VS里面有两种方式管理nuget包。第一种是右键项目->管理程序nuget包 进入导UI界面。

能够进行程序包的查找和安装的包管理,对包进行卸载更新。 在右上角有一个程序包源,能够进行包源设置,设置包源地址。默认是将 NuGet.org 用做 NuGet 客户端的包存储库。
因此咱们配置应使用如下 V3 API 终结点:

https://api.nuget.org/v3/index.json

NuGet.org 是 NuGet 包的公用主机,NuGet 技术还支持在云中(如在 Azure DevOps 上)、在私有网络中或者甚至直接在本地文件系统以私密方式托管包。
https://www.nuget.org/ 打开NuGet.org站点能够进行包搜索和包的上传等。

另一种方式就是工具->nuget管理器->程序包管理器控制台 ,调出控制台后就可使用cli命令进行nuget包管理了。
因此有时候咱们搜索文章的时候看到别人添加包,命令dotnet add package Newtonsoft.Json 咱们要知道这是nuget包添加,程序包管理器控制台执行,或者在ui界面搜索包可视化操做添加,之前的 nuget.exe CLI添加包是install 命令,要注意区分下。

建立发布包

首先须要设置属性,建立包须要如下属性。

  • PackageId,包标识符,在托管包的库中必须是惟一的。 若是未指定,默认值为 AssemblyName。
  • Version,窗体 Major.Minor.Patch[-Suffix] 中特定的版本号,其中 -Suffix 标识预发布版本。 若是未指定,默认值为 1.0.0。
  • 包标题应出如今主机上(例如 nuget.org)
  • Authors,做者和全部者信息。 若是未指定,默认值为 AssemblyName。
  • Company,公司名称。 若是未指定,默认值为 AssemblyName。

在 Visual Studio 中,能够在项目属性中设置这些值(在解决方案资源管理器中右键单击项目,选择“属性” ,而后选择“包” 选项卡)。 也能够直接在项目文件 (.csproj) 中设置这些属性。

在包的 NuGet.org 页面上所示的包说明能够在 .csproj 文件中的 设置,或者经过 .nuspec 文件中的 $description 拉取。
.nuspec 文件是包含包元数据的 XML 清单,.nuspec 当你建立包时将生成。

运行 pack 命令

运行dotnet pack 命令会打包解决方案中可打包的全部项目,也能够在项目属性上设置“在构建时生成NutGet包”。

具备 .nupkg 扩展名的 NuGet 包只是一个 zip 文件。 若要轻松查看任何包的内容,只需将扩展名更改成 .zip 并按常规方法展开内容。 尝试将包上传到主机前,请务必将扩展名改回 .nupkg。
命令执行完成后打包后生成的文件路径会显示在控制台上,到目录查看到ConsoleAppNet5.1.0.0.nupkg 包,并复制一个改为zip验证。

发布到 nuget.org

登陆到nuget.org,使用 Microsoft 账户进行登陆,而后选择upload上传,选择了文件后会进行自动校验,若是有问题处理后再从新上传。
还能够经过命令的方式去上传,可是须要api密钥,本身去看下官网好了。

相关文章
相关标签/搜索