Nuget.exe:远程主机强制关闭现有连接

时间:2015-04-24 13:05:45

标签: visual-studio-2013 tfs build nuget nuget-package-restore

在我的预构建脚本中的构建服务器上,我想获得解决方案所需的所有软件包。

为什么呢?因为这种情况发生了:

This project references NuGet package(s) that are missing on this computer.
Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105.
The missing file is ..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets.

根据Nuget documentation包恢复应该作为TFS 2013版本的一部分进行 - 但很明显它不会。

我尝试将其实现为预构建操作(自定义脚本执行)。 每当我尝试在构建服务器上运行nuget时,就会发生这种情况:

PS D:\ws\more\txs04\Data\Services\MyProject\.nuget> .\nuget.exe
An existing connection was forcibly closed by the remote host

显然是代理问题。不幸的是我没有找到任何解决方案。我以构建用户身份登录并更改了代理设置。我还尝试了环境变量 - 以及nuget配置选项。但是,因为我甚至无法调用nuget.exe config,所以这不是一种选择。

编辑:我可以在我的开发机器上重现此行为(nuget通常可以正常工作)。 runas /user:dev\tfsbuild powershell接下来我尝试执行nuget.exe并发生上述错误。但是,如果我使用tfsbuild用户登录,则不会发生这种情况。

1 个答案:

答案 0 :(得分:0)

我在构建.proj文件中从目标运行nuget restore命令时遇到了类似的问题。

 <Target Name="RestorePackages">
   <Exec Command="&quot;$(ToolsHome)NuGet\NuGet.exe&quot; restore &quot;$(SourceHome)SolutionFile.sln&quot;" />
 </Target>

我添加了两个额外的参数来解决这个问题:    -nonInteractive    -RequireConsent

<Target Name="RestorePackages">
  <Exec Command="&quot;$(ToolsHome)NuGet\NuGet.exe&quot; restore &quot;$(SourceHome)SolutionFile.sln&quot; -NonInteractive -RequireConsent " />
</Target>

希望这可以帮助遇到此问题的其他任何人。