# NuGet 学习总结

作者:陶小明 时间: 2020-10-16

# 一、NuGet 介绍

NuGet 作为.net 软件包托管平台,方便开发者访问其他开发者发布的程序包,令在项目中添加、移除和更新引用程序集更加快捷。

NuGet 程序包源分为公共库与私有库。用户可通过公共库下载一些常用的组件,比如 log4net.dll、Newtonsoft.Json.dll 等,并利用 NuGet 对这些组件进行管理、版本更新、删除。然而对于公司内部的公共组件,各个项目都需要使用,不可能发布到公共库中;因此,可以搭建公司私有 NuGet 服务器,建立私有组件库。

Nuget 客户端工具主要有 NuGet CLI 工具:dotnet.exe 和 nuget.exe 和 Visual Studio 集成的 Nuget,区别如下表 1.1。

表 1.1 Nuget 客户端工具介绍表

工具 描述
dotnet.exe 包含在 .NET Core SDK 中,并在所有平台上提供核心 NuGet 功能
nuget.exe 提供 Windows 上的所有 NuGet 功能以及 Mac 和 Linux 上在 Mono 下运行时的大多数功能。
Visual Studio 在 Windows 上,通过包管理器 UI 和包管理器控制台提供 NuGet 功能;包含在与 .NET 相关的工作负荷中。 在 Mac 上,通过 UI 提供某些功能。 在 Visual Studio Code 中,通过扩展提供 NuGet 功能。

# 二、VS 平台下的 NuGet 工具

VS2010 及先前版本可以通过工具->拓展管理器,搜索 NuGet Package Manage 安装。从 VS2012 开始集成了 NuGet 工具。工具由程序包管理控制台、NutGut 程序包管理器、程序包管理器设置组成。

# 2.1 程序包管理控制台

打开控制台,设置程序包源和默认项目,通过若干命令对程序包进行管理,常用命令如表 2.1。

表 2.1 Nuget 控制台常用命令表

命令 说明
Find-Package 获取指定的 ID 或包含关键字程序包集
Get-Package 获取指定的 ID 的程序包
Install-Package 安装程序包
Uninstall-Package 卸载程序包
Update-Package 更新程序包
Get-Project 获取项目信息

# 2.2 NuGet 程序包管理器 UI

打开方法:

1)通过工具->NuGet 包管理器->管理解决方案的 Nuget 程序包;

2)/选择项目-》右键选择管理 Nuget 程序包。

功能如下:

浏览:指定资源网站,查看程序包;

已安装:对已安装包进行管理;

更新:更新现有包;

合并:合并程序包。

# 2.3 程序包管理器设置

程序包源管理可以删除、添加自定义程序包源,如图所示:nuget.org 为 nuget 程序包源公共库,Microsoft Visual Studio Offline Packages 为本地的 VS 组件库,如图 2.1。

图 2.1 程序包管理器设置界面

# 三、自定义程序包托管网站

# 3.1 建立共享文件夹

(1)设置共享文件夹 nupkg,权限设置 Everyone,如图 3.1 所示。

​ 图 3.1 共享文件夹设置示意图

(2)将打包好的程序包复制到 package 中。

(3)在 VS 程序包源设置中添加该访问共享文件夹网络路径,如图 3.2 所示,PackageShare 为共享目录。

​ 图 3.2 添加共享目录程序包源界面

# 3.2 搭建 Nuget 服务器

(1)新建空的 ASP.NET,选择.NET4.6 及以上框架;

(2)下载 NuGet.Server,安装;

(3)打开 Web.config,修改配置文件:设置 packagesPath 与 apiKey;

(4)将.pkg 程序包复制到 packages 文件夹中。

(5)部署到 IIS:直接发布到 IIS 或者手动部署到 IIS 中。手动部署 IIS 步骤如下:

1)选择项目右键->发布,配置文件选择“新建配置文件”,

2)点击“连接”栏,发布方法选择“文件系统”,确定目标位置,如图 3.3 所示;

3)发布。

​ 图 3.3 发布网站示意图

4)搭建 IIS 站点。

新建应用程序池;

添加网站,物理路径选择 ASP.NET 项目发布的路径;

启动。浏览网站,如图 3.4 所示,说明 NuGet 服务器搭建成功。点击查看程序包可查看服务器已有的组件。

​ 图 3.4 浏览网站示意图

# 四、类库打包发布

将自己类库打包成.pkg 文件,这些程序包可以托管到 NuGet 程序包源中,可以是 nuget 官网或者自己的 Nuget 服务器中。下面介绍通过 NuGetPackageExplorer 工具打包。

# 4.1 图形界面打包

(1)下载包包管理器 NuGetPackageExplorer,安装。地址:

(2)新建包,填写程序包信息,部分界面如图 4.1 所示:

ID:用于定位类库包的唯一标识;

Version:类库的版本号,这里建议和程序集的真实版本号保持一致,以免发生混淆, 根据实际情况添加依赖类库的 Id 和版本号。

Dependencies:此类库依赖的程序集,且填写的依赖类库需要在 NuGet 服务器上能找到,否则无法完成自动引用添加。

Framework assemblies:依赖的 Framework 程序集,根据实际需要选择即可,一般无需设置;

​ 图 4.1 Explorer 编辑包界面

(3)添加.dll 文件

​ 图 4.2 单个 dll 打包示意图

若有多个.net 版本,则添加多个版本 dll;

​ 图 4.3 多.net 框架 dll 打包示意图

(4)保存为.nupkg 类型文件;

(5)发布,选择 File->publish,发布界面如图 4.4 所示,表示发布成功。若发布到官网http://nuget.org/上,则先注册账号,生成Key,再发布,或者使用官网的Upload工具,选择.nupkg程序包上传。

​ 图 4.4 发布程序包界面

注意:程序包版本号不能重复使用。