【发布时间】:2016-03-03 17:40:09
【问题描述】:
我的工作有一个私人 NuGet 存储库。我可以从它和 nuget.org 安装软件包。当私有仓库中存储的包依赖于 nuget.org 上托管的包时,我遇到了问题。
例如,我的私人仓库托管了一个包 P1。 P1 依赖于托管在 nuget.org 上的 P2。如果使用我的私人仓库设置为源执行“安装包 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>
【问题讨论】:
-
你能告诉我们你一直在使用的命令行吗?你的 nuget.config 中有什么
-
没问题,请参阅上面的编辑。
-
感谢您的补充。我刚刚在我的机器上测试了它,它在那里工作正常。我可以从本地提要(在我的机器上)获取一个包,并让依赖项来自 nuget.org。所以下一个问题是如果你运行 nuget.exe(命令行版本)会发生什么。例如做 nuget.exe install p1 看看它是否抓取了所有的包。还有你有什么版本的nuget和VS?
-
我发现从命令行运行 nuget.exe 可以正常工作。但是,从 VS 运行 NuGet 极其不可靠。诸如 install-package nlog -Source api.nuget.org/v3/index.json 之类的基本命令会返回一些不同的错误,例如“Install-Package : A task was cancelled.At line:1 char:1”或“Unable to connect to the remote serverAt line :1 字符:1"。有时关闭 VS 并重新打开会有所帮助,有时则没有。我正在运行 VS 2015 v14 和 NuGet v3.3
-
我不确定这是否重要,但私有 NuGet 需要 Nt 身份验证,因此每当我安装包形式时,我都会被提升为用户名/密码
标签: visual-studio nuget nuget-server