我们正在为许多套餐使用内部Feed。今天我们注意到Package Restore不再有效。每个包都失败并出现错误:
无法找到版本' ...'包裹' ...'。
有问题的项目于2013-10-04首次提交,当时NuGet的版本为2.7 多个人成功地克隆了源控制仓库,它根本没有二进制文件,没有人回想起包恢复的任何问题。所以要么我们所有人都疯了,要么工作正常 当我今天尝试新克隆并更新到第一次提交时,我得到上面的错误。与最近的提交相同。这是NuGet 2.8
These are the docs concerning Package Restore changes in 2.7:
然而,在采取上述任何步骤之前,NuGet会对此进行验证 同意是在两个层面上给出的:
- Visual Studio配置为允许NuGet下载缺少的包'
- Visual Studio配置为在Visual Studio中构建期间自动检查缺少的包'
醇>
在VS选项中检查这两个项目。
这种包恢复方法具有以下几个优点:
- 无需为项目或解决方案启用它。 Visual Studio将在您的项目之前自动下载缺失的包 建立和团队成员不需要了解NuGet包恢复。
醇>
然而,这正是我们今天成功解决问题的方法:右键单击解决方案并启用Package Restore。这导致了多个级别的变化。
.csproj等级
+ <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
+ <RestorePackages>true</RestorePackages>
.sln级
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{6FE1C500-523A-4E05-B72E-28F14DEDB055}"
+ ProjectSection(SolutionItems) = preProject
+ .nuget\NuGet.Config = .nuget\NuGet.Config
+ .nuget\NuGet.exe = .nuget\NuGet.exe
+ .nuget\NuGet.targets = .nuget\NuGet.targets
+ EndProjectSection
+EndProject
最后,创建了.nuget\NuGet.Config
,.nuget\nuget.exe
和.nuget\NuGet.targets
。
作为测试,我还创建了一个新的解决方案和项目。现在我
答案 0 :(得分:2)
在当前版本的NuGet中它是confirmed bug,但它已在夜间版本中修复。
现在的解决方法是在程序包管理器控制台中将程序包源设置为 All 。
答案 1 :(得分:0)
这可能是由以下问题引起的:https://nuget.codeplex.com/workitem/4000
与此问题相关,nuget.exe客户端不会遵循重定向,因此如果您的内部NuGet服务器在尝试下载程序包时返回302,则客户端将不会跟随它并且不会发生任何事情。值得用Fiddler跟踪进行双重检查以查看VS扩展是否具有相同的行为。