有没有办法配置 NuGet 以忽略不可用的包源?

Rya*_*ndy 5 nuget

在 Visual Studio 2017 中进行开发时,我结合使用了标准 NuGet 包源和我工作的公司的包源。

要访问这些公司包源,我必须连接到我们公司的 VPN。

不幸的是,这意味着无论我正在开发什么,我都必须始终连接到我们公司的 VPN,因为否则 NuGet 会给我这个:

尝试添加源“ http://[我公司的包源之一]”时抛出异常“System.AggregateException”。请验证您的所有在线包来源是否可用。发生一个或多个错误。无法加载源http://[我公司的包源之一] 的服务索引。发送请求时发生错误。无法解析远程名称:“[我公司的包源之一]”

如果我尝试使用仅托管在我公司服务器上的包,这将是有意义的。但即使我专门将包源下拉列表设置为 nuget.org,我也会收到此错误。

有一个问题需要修复,但它已有两年历史并且没有任何活动迹象: 当 nuget 源不可用时,即使这不是选定的源,安装也会失败 #2614

那么,有没有办法以某种方式配置 NuGet 以忽略丢失的包源?

Rya*_*ndy 2

以下是如何配置 NuGet 以忽略某些源。

如果您将所有非公司代码都放在一个文件夹结构中,那么您可以在根目录中放置一个nuget.config如下所示的文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <disabledPackageSources>
    <add key="My Company's NuGet Source" value="true" />
  </disabledPackageSources>
</configuration>
Run Code Online (Sandbox Code Playgroud)

如果您不确定该键应该是什么,请nuget sources从命令行运行:

>nuget sources
Registered Sources:

  1.  nuget.org [Enabled]
      https://api.nuget.org/v3/index.json
  2.  My Company's NuGet Source [Disabled]
      https://path/to/the/nuget
  3.  Microsoft Visual Studio Offline Packages [Enabled]
      C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\
Run Code Online (Sandbox Code Playgroud)

这也是验证是否nuget.config被检测到的好方法。这Disabled是来自我的nuget.config档案;nuget sources如果我在公司代码文件夹中运行,数字 2 显示为Enabled.

您可以在此处找到有关结构的完整详细信息nuget.config

nuget.config 参考