安装具有多个源依赖项的NuGet包

时间:2016-03-03 17:40:10

标签: visual-studio nuget nuget-server

我的工作有私人NuGet回购。我可以从它和nuget.org安装软件包。当私有存储库中存储了一个依赖于nuget.org托管的软件包的软件包时,我遇到了问题。

例如,我的私人仓库托管了一个包P1。 P1依赖于P2,它托管在nuget.org上。如果使用我的私人仓库作为源进行“安装包P1”,我将收到一条错误消息,说它无法找到依赖关系P2。这是有道理的,因为它在私人仓库中寻找P2,但它在nuget.org上托管。到目前为止,解决方法是从nuget.org安装P2,然后从私人仓库安装P1。虽然这在技术上是有效的,但是很难将NuGet卖给团队的其他成员。

无论如何我可以使用多个源运行install-package吗?我已经尝试将列表传递给-Source参数,但到目前为止已经

NuGet.config由visual studio管理,因此每次在Visual Studio中运行nuget命令时,我对其所做的任何更改都将被删除。我尝试在解决方案级别添加一个额外的nuget.config文件,但据我所知,它被忽略了。我已经尝试了几次install = package命令的访问,但它们通常看起来像这样:

Install-Package P1 -Source https://api.nuget.org/v3/index.json,http://privatefeed.com

这里是NuGet.config文件的参考,但改变它似乎是徒劳的。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageRestore>
    <add key="enabled" value="True" />
    <add key="automatic" value="True" />
  </packageRestore>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="Private Nuget" value="http://privatefeed.com" />
  </packageSources>
  <disabledPackageSources>
    <add key="Microsoft and .NET" value="true" />
  </disabledPackageSources>
  <activePackageSource>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
  </activePackageSource>
</configuration>

1 个答案:

答案 0 :(得分:3)

使用NuGet.exe,您可以重复-Source选项以指定多个包源。

示例:

nuget install P1 -Source https://api.nuget.org/v3/index.json -Source http://privatefeed.com

似乎无法使用程序包管理控制台(PowerShell)指定多个源。但是,如果未指定-Source,则使用NuGet.Config文件。配置文件可以有多个包源,文件本身可以与团队共享。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="Private Nuget" value="http://privatefeed.com" />
  </packageSources>
</configuration>

将NuGet.Config另存为与解决方案相同的目录,并将其添加到版本控制中。

请注意,您可能需要重新加载visual studio才能使配置更改生效。

现在您可以在不配置-Source的情况下安装软件包。

示例:

Install-Package P1