您的位置:

NuGet程序包详解

一、NuGet程序包源

NuGet是一个开放源代码项目,用于Visual Studio环境下的软件开发。它允许用户从一个中心存储库中下载和安装预打包的代码库,也可以自己创建和分享包。

在Visual Studio环境下,我们可以通过NuGet程序包源来安装和管理众多的NuGet程序包。NuGet程序包源就是包含NuGet程序包的仓库,一般情况下包含官方源和第三方源。如果你需要安装一些非官方NuGet程序包,你需要添加第三方源。添加方法是通过Visual Studio的NuGet包管理器管理,可以通过以下步骤添加:

  1. 打开Visual Studio,打开NuGet包管理器。
  2. 点击“包管理器设置”按钮。
  3. 在“程序包源”选项卡中,单击“+”按钮添加新源。
  4. 输入源的名称、源的地址及其他相关信息,确定后保存即可。

添加完源,可以在包管理器中查看该源的包列表,从而安装、卸载、更新这些包。

二、NuGet程序包还原

NuGet程序包还原指的是将受NuGet包引用的项目还原回NuGet包安装时的状态。在引用了NuGet包的项目中进行编译时,NuGet包不是实际编译的一部分,而是在编译之前通过还原操作还原到本地的NuGet包。NuGet程序包还原有两种方式:手动还原和自动还原。

手动还原:

  1. 打开Visual Studio,打开解决方案,双击“解决方案资源管理器”。
  2. 在解决方案资源管理器中,右键单击要还原的项目,选择“还原NuGet程序包”。
  3. 等待还原操作完成即可。

自动还原:

  1. 打开Visual Studio,打开“NuGet包管理器控制台”。
  2. 在“NuGet包管理器控制台”中,输入以下命令:Install-Package -Reinstall
  3. 等待还原操作完成即可。

当一个项目的NuGet程序包发生变化时,自动还原会自动还原到最新状态。这种方式非常便捷且保证了NuGet程序包的一致性。

三、NuGet程序包下载

NuGet程序包下载是指从NuGet程序包源下载NuGet程序包的操作。我们可以在Visual Studio的NuGet包管理器中搜索并下载NuGet程序包。也可以在NuGet程序包源上使用浏览器直接下载。以下是下载NuGet程序包的几种方式:

1. Visual Studio中下载NuGet程序包

  1. 打开Visual Studio,打开“NuGet包管理器”。
  2. 在NuGet包管理器中,搜索需要下载的NuGet程序包。
  3. 选择需要下载的NuGet程序包,点击“安装”按钮,等待安装完成即可。

2. NuGet程序包源上直接下载

  1. 打开nuget.org网站,搜索要下载的NuGet程序包。
  2. 点击NuGet程序包,然后点击“下载”按钮。
  3. 运行下载的文件,将NuGet程序包添加到项目中即可。

四、NuGet程序包管理器离线选取

NuGet程序包管理器离线选取指的是将NuGet程序包源复制到本地以离线选择支持添加或删除NuGet服务器。当你无法访问NuGet官方源时,可以使用离线选取的方式来操作。以下是离线选取的操作步骤:

  1. 打开命令行工具,使用以下命令从NuGet官方源下载NuGet程序包管理器(不要使用普通下载方式):
     nuget.exe install NuGet.CommandLine -OutputDirectory c:\nuget\bin
  2. 按照提示修改环境变量。
  3. 在命令行工具中输入以下命令(替换成离线程序包的路径):
     nuget.exe source Add -Name "Offline Packages" -Source c:\offline\packages\
  4. 成功后,可以在NuGet包管理器中选择“离线包”制定下载源,从而在离线情况下继续使用NuGet程序包管理器。

示例代码:

// 添加第三方程序包源
PM> Install-Package nuget.commandline
PM> nuget.exe source Add -Name "My Lucene" -Source https://binarybucket.com/nuget
// 手动还原NuGet程序包
右键单击项目 -> 还原NuGet程序包
// 自动还原NuGet程序包
PM> Install-Package -Reinstall
// 设置离线选取
PM> Install-Package nuget.commandline
PM> nuget.exe source Add -Name "Offline Packages" -Source c:\offline\packages\