TFS Build上的自动包还原失败但在VS中有效

时间:2015-05-06 15:38:56

标签: c# msbuild tfsbuild tfs2013 nuget-package-restore

我将我的解决方案迁移到NuGet推荐的自动包恢复。

源结构(缩写):

MyProject
  |- MyProject.sln
  |- .nuget
    |- NuGet.config
    |- NuGet.exe
  |- MyProject
    |- MyProject.csproj
    |- packages.config
  |- packages
    |- repositories.config
  |- .tfignore

NuGet.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
  <packageSources>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="LocalRepo" value="http://ourlocalrepo/api/v2/" />
  </packageSources>
</configuration>

MyProject.csproj更改:

添加了目标:

<Project ToolsVersion="4.0" DefaultTargets="RestorePackages;Build" ...
...
<Target Name="RestorePackages">
    <Exec Command="&quot;$(SolutionDir).nuget\NuGet.exe&quot; restore &quot;$(SolutionPath)&quot;" />
</Target>

现在这可以完美地运行MSBuild表单:

  • Visual Studio
  • 命令行
  • 以构建代理用户身份登录的构建服务器的命令行

但是当我对构建进行排队时,构建失败了: The command ""C:\Builds\3\Myproject\src\.nuget\NuGet.exe" restore "C:\Builds\3\MyProject\src\MayProject.sln"" exited with code 1.

即使我通过命令行手动执行相同的命令(而不是msbuild),它也会成功并恢复软件包。

当前(脏)解决方法:我在构建服务器上恢复软件包并且不进行清理。另一个选择是将包提交到源控件,我真的不想这样做。

我的nuget.config中有代理设置。

设置似乎很好,我不知道还有什么可以尝试。

0 个答案:

没有答案