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

Dav*_*ean 7 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.
Run Code Online (Sandbox Code Playgroud)

以上是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.
Run Code Online (Sandbox Code Playgroud)

我的包源是否在NuGet.targets中

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

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

"D:\{longPah}\.nuget\nuget.exe" install "D:\{longPah}\packages.config" -source "\\{longPah}\NuGetPackages" -o "D:\{longPah}\packages"
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

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)
Run Code Online (Sandbox Code Playgroud)

我在机器上有.net 4.

如果可以的话请帮忙.

谢谢,大卫

编辑

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Company.Common.Library" version="0.1.2" targetFramework="net35" />
</packages>
Run Code Online (Sandbox Code Playgroud)

packages.config按要求.

编辑

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

未处理的异常:OutOfMemoryException.

编辑 - 可能的修复

我想我已经找到了问题......它似乎与.nuget文件夹中的nuget.exe有关.

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

在我发现的解决方案中:

在此输入图像描述

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

在此输入图像描述

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

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

fer*_*der 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 - 请注意,此修复程序将为包括构建服务器在内的所有未来用户修复它.

  • @DavidMcLean另请注意,我评论说shell尝试将完整版本的nuget.exe下载到%LOCALAPPDATA%\ NuGet文件夹.您可以检查该文件夹的权限,或只是查看是否有nuget.exe文件.如果删除它并再试一次.它将命令传递给该文件.如果文件因某种原因而被锁定或不存在,则可能会导致您看到的问题. (2认同)
  • 好的,这是一个权限问题,或者至少与%LOCALAPPDATA%\ NuGet文件夹有关.我删除了所有文件,然后转到%LOCALAPPDATA%文件夹并使其不是只读(对于它的孩子)然后尝试它和宾果游戏..非常感谢. (2认同)