使用-source参数的NuGet Install Packages不会下载nuget.org

时间:2013-01-03 14:58:24

标签: visual-studio nuget

我公司拥有自己的内部NuGet包存储库,供我们上传我们自己的私有专有包。我们仍然使用官方的NuGet.org存储库来下载所有公共包。我们还在项目中启用Package Restore,以允许我们的构建下载丢失的包。

我们已将自己的NuGet仓库添加到Tools > Library Package Manager > Package Manager Settings > Package Sources的列表中,我们也在列表中保留了默认值(NuGet official package source)。我们在NuGet.targets文件中也有自己的repo作为PackageSource元素。该官方回购邮件包含在该文件中作为PackageSource

这对我们来说已经有好几个月了。当我们将自己的软件包的新版本发布到我们的仓库时,它们对项目是可见的。此外,当新的公共包可用时,我们的项目在nuget.org上找到它们没有任何问题。

但是最近,该版本已经开始无法从官方仓库下载软件包。当我构建解决方案时,输出包含每个项目的以下行,这些项目引用了我们不在我们自己的仓库中托管的缺失包:

C:\code\MyCodebase\.nuget\nuget.targets(79,9): error MSB3073: The command ""C:\code\MyCodebase\.nuget\nuget.exe" install "C:\code\MyCodebase\MyProject\packages.config" -source "http://nuget.example.com/repo/" -o "C:\code\MyCodebase\packages"" exited with code -1.

如果我自己从命令行运行该命令,我会看到此输出为鲜红色:

Unable to find version '2.5.10.11092' of package 'NUnit'.
Unable to find version '1.2.0' of package 'Common.Logging'.

我认为这种情况正在发生,因为我们的repo不包含任何NUnit包,-Source参数没有使用官方仓库。

我的问题是:为什么以前工作?我疯了吗?或者在最新更新中NuGet.exe行为中的某些内容是否已更改?我的印象是,NuGet 总是使用官方回购作为最后的后备,直到昨天它似乎都是这样。

将官方NuGet repo添加到NuGet.targets文件中的唯一解决方案是什么?在同一解决方案中处理私有和公共包依赖关系的最佳方法是什么?我想避免将我们使用的所有公共包上传到我们自己的仓库。

1 个答案:

答案 0 :(得分:2)

nuget.target中的注释声明如下,您需要将官方订阅源添加到列表中

&lt ;! - 用于恢复包的包源。默认情况下,将使用%APPDATA%\ NuGet \ NuGet.Config下的注册来源 - >
       
<! - 如果指定了包源并且它没有出现在列表中,则将排除官方NuGet包源(https://nuget.org/api/v2/) - >

您最近是否从%appdata%\ local \ nuget \ cache清除了您的nuget缓存?当我尝试我的盒子上的步骤时,如果缺少的包(来自本地存储库)位于本地nuget缓存中,它就可以安装依赖项。