使用代码-1退出NuGet包还原

时间:2012-07-03 16:05:25

标签: visual-studio-2010 nuget

我在输出窗口中收到以下错误:

D:\{solutionPath}\.nuget\nuget.targets(76,9): error : 
D:\{solutionPath}\.nuget\nuget.targets(76,9): error : Unhandled Exception: OutOfMemoryException.
D:\{solutionPath}\.nuget\nuget.targets(76,9): error MSB3073: The command ""D:\{solutionPath}\.nuget\nuget.exe" install "D:\{pathToConfigLocation}\packages.config" -source "" -o "D:\{solutionPath}\packages"" exited with code -1.

上面是NuGet.targets。

D:\{solutionPath}\.nuget\nuget.targets(76,9): error : 
D:\{solutionPath}\.nuget\nuget.targets(76,9): error : Unhandled Exception: OutOfMemoryException.
D:\{solutionPath}\.nuget\nuget.targets(76,9): error MSB3073: The command ""D:\{solutionPath}\.nuget\nuget.exe" install "D:\{pathToConfigLocation}\packages.config" -source "{localPackageDir}" -o "D:\{solutionPath}\packages"" exited with code -1.

我的包源是否在NuGet.targets

当构建正在进行时,它会创建尽可能多的nuget.exe进程,因为它会占用所有内存,然后它会失败并再次进行。

我已经接受了命令并通过cmd运行它。

"D:\{longPah}\.nuget\nuget.exe" install "D:\{longPah}\packages.config" -source "\\{longPah}\NuGetPackages" -o "D:\{longPah}\packages"

这给了我以下错误:

Unhandled Exception: System.IO.FileLoadException: Could not load file or assembl
y 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or
 one of its dependencies. Exception from HRESULT: 0x800705AF
   at Bootstrapper.Program.Main(String[] args)

我的机器上有.net 4。

如果可以,请帮忙。

谢谢, 大卫

修改

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Company.Common.Library" version="0.1.2" targetFramework="net35" />
</packages>
按要求

packages.config。

修改

我尝试通过Visual studio命令提示符(以管理员身份运行)运行命令,并抛出以下异常:

  

未处理的异常:OutOfMemoryException。

编辑 - 可能修复

我想我发现了问题......它似乎与.nuget文件夹中的nuget.exe有关。

我有几个解决方案,发现一对工作,腰部负载时间查看文件权限(被告知这是问题)然后考虑检查每个解决方案中的nuget.exe属性。

在我找到的解决方案中:

enter image description here

在我找不到的解决方案中:

enter image description here

如您所见,两者的文件大小截然不同。所有项目都由团队中的不同人员添加,这可能是开发人员机器上安装的nuget版本的问题吗?

如果有这样的话,当你选择为解决方案启用包恢复时,是否有人知道哪个版本的nuget会导致上述问题?我在我的机器上安装了最新版本的NuGet。

1 个答案:

答案 0 :(得分:12)

它们都会导致错误。较小的文件只是一个shell,它将命令传递给下载到%LOCALAPPDATA%\ NuGet的实际版本。它每10天检查一次新版本。

看一下这个问题:http://nuget.codeplex.com/workitem/2390(nuget包恢复假定是因特网访问) - 可能是18K shell试图将完整的nuget.exe下载到%LOCALAPPDATA%\ NuGet文件夹并且可以'由于某种原因。

当NuGet 2.0发布时,它已获得Package Restore的选择同意。请查看http://blog.nuget.org/20120619/nuget-2.0-released.htmlhttp://blog.nuget.org/20120518/package-restore-and-consent.html,其中详细说明了要使其发挥作用需要做些什么。

或者,您可以使用NugetEnablePackageRestore包永久接受完整的同意 - http://nuget.org/packages/NuGetEnablePackageRestore - 请注意,此修复程序将修复所有未来用户,包括构建服务器。