在包管理之前咱们在项目中引用第三方包一般是去下载dll放到项目中再引用,后来逐渐发展成各类包管理工具,nuget就是一种工具,适用于任何现代开发平台的基本工具可充当一种机制,经过这种机制,开发人员能够建立、共享和使用有用的代码。 一般,此类代码捆绑到“包”中,其中包含编译的代码(如 DLL)以及在使用这些包的项目中所需的其余内容。
Linux 咱们可使用apt、yum来安装软件,js 可使用npm来搭建下载,Java 有maven管理包,而对于.net nuget就是一样效果和机制的工具。html
要使用 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
第二个就是两个工具的功能有差别
某些高级功能没法使用的时候咱们就须要用命令的方式。
在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 命令,要注意区分下。
首先须要设置属性,建立包须要如下属性。
在 Visual Studio 中,能够在项目属性中设置这些值(在解决方案资源管理器中右键单击项目,选择“属性” ,而后选择“包” 选项卡)。 也能够直接在项目文件 (.csproj) 中设置这些属性。
在包的 NuGet.org 页面上所示的包说明能够在 .csproj 文件中的
.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密钥,本身去看下官网好了。