NuGet退出代码为-1——构建失败

25
我已经通过VS2012的Package Manager在一个混合的C#解决方案(类库和MVC2应用程序)中安装了dotless,但是当我构建它(按F5)时,我会得到以下两个错误:

命令""C:\@GitRepos\EBS\SolutionFiles\.nuget\nuget.exe" install "C:\@GitRepos\EBS\\packages.config" -source "" -o "C:\@GitRepos\EBS\SolutionFiles\packages"的退出代码为-1。

系统找不到指定的路径。

在将dotless添加到解决方案后,".nuget"文件夹中已经添加了"NuGet.exe"和"NuGet.targets"。

我还尝试将dotless添加到一个新的MVC2项目中,并且除了必须将mime类型添加到web.config之外,一切都运行良好。 但是没有“.nuget”文件夹。

我还注意到,在创建新的NServiceBus解决方案(安装后)时也会出现相同的情况。消息中的路径会更改,但错误是相同的。

如果我执行

"C:\@GitRepos\EBS\SolutionFiles\.nuget\nuget.exe" install "C:\@GitRepos\EBS\\packages.config" -source "" -o "C:\@GitRepos\EBS\SolutionFiles\packages"

然后通过命令提示符运行,我会得到:

packages.config中列出的所有程序包都已安装。


8
放弃了这个问题后,几天后再次研究它,我找到了答案。我发现了http://david-martos.blogspot.co.uk/。在打开命令提示符并发现它也显示“系统找不到指定的路径”后,我去查找了注册表。我在“HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor”中发现了一个名为“c:\ansi140\x64\ansicon.exe-p”的AutoRun键。删除这个键之后,尝试再次构建我的 NserviceBus 解决方案,我发现它构建得非常好。希望这可以帮助其他人。 - Canters
1
你应该将这个作为答案发布,它对我很有帮助,我自己永远不会想到要这样做。 - vorou
6个回答

29

在放弃一段时间后,几天后我又来看这个问题并找到了答案。我偶然发现了 david-martos.blogspot.co.uk。在打开命令提示符并找到它也显示 "系统找不到指定的路径" 后,我去查找注册表。我在 "HKEY_CURRENT_USER\Software\Microsoft\Command Processor" 中发现了一个名为 "c:\ansi140\x64\ansicon.exe -p " 的 AutoRun 键。删除此键后,再次尝试我的 NserviceBus 解决方案,我发现编译成功了。希望这能帮助其他人。

这里是 David Martos 文章的直接链接:David Martos post


非常感谢!Ansicon 真是纯粹的恶魔。 - Emil Lundin
我正在使用ConEmu/Cmdr控制台模拟器,它劫持了相同的注册表键,导致我的问题。 - sdanna
1
对我来说最关键的是与上面指出的博客不同的部分,即注册表键“HKEY_CURRENT_USER”的位置,博客将你引导到本地计算机,因此根据您的设置在两个位置查找。 - Thomas Harris
是的,我有一个Ansicon,因为我已经安装了它。但是我在VS中遇到了同样的问题。我删除了AutoRun键,但这对我没有用=( - Vladislav
太好了!只需删除解决方案文件夹中的 .nuget 文件夹,然后运行应用程序即可解决我的问题!感谢你们的回答! - Vladislav
显示剩余2条评论

8

5

只需从NuGet包管理器控制台执行以下命令即可。它对我有用:

PM> Install-Package NuGetEnablePackageRestore

5

我打开包管理器控制台并点击弹出的警告上的“还原”按钮,解决了这个问题。以下是它的外观。这与其他解决方案类似,但从不同的角度看。

enter image description here


1
我也遇到了NuGet莫名其妙地失败的情况。我打开解决方案中的一个随机项目的“管理NuGet包”,在弹出窗口中点击“还原”按钮,然后一切都正常工作了。 - Dan Mirescu

2

我遇到了同样的错误:

"命令 "" 退出代码为-1。"和"系统找不到指定的路径。"

我尝试了所有可能的解决方案,但都没有成功。最后我做的是从另一个项目中获取NuGet.exe,并将其替换到在.nuget文件夹内生成错误的该项目中,现在它可以正常工作了。


1

对我来说,我不小心从项目目录的根目录中删除了NuGet.Config文件。幸运的是,我可以通过源代码控制来恢复它。

如果有人犯了和我一样的错误并且没有备份,这是我的文件内容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="repositorypath" value="NuGet Packages" />
    <add key="globalPackagesFolder" value="NuGet Packages" />
  </config>  
  <packageRestore>
    <add key="enabled" value="True" />
  </packageRestore>  
</configuration>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接