在TFS 2012升级后,TFS Build在升级的MSBuild构建脚本中使用Exec任务失败

时间:2013-01-11 23:28:02

标签: msbuild tfs2012

我们有一个项目,我们在TFS 2008中定制了TFS构建脚本,当构建是基于MSBuild而不是工作流文件时。此自定义脚本使用<Exec> task来调用NAnt进行一些打包。

将TFS 2010安装迁移到新服务器并升级到TFS 2012后,TFSBuild.proj文件中的该行导致错误:

Target "AfterCompile: (TargetId:321)" in project "C:\Builds\2\Proj\Continuous Integration (Proj)\BuildType\TFSBuild.proj" (target "Compile" depends on it):
Using "Exec" task from assembly "Microsoft.Build.Tasks.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
Task "Exec" (TaskId:209)
  Task Parameter:Command=C:\Tools\NAnt\bin\Nant.exe (TaskId:209)
  Task Parameter:WorkingDirectory=..\Sources\ (TaskId:209)
  Command: (TaskId:209)
  C:\Tools\NAnt\bin\Nant.exe (TaskId:209)
C:\Builds\2\Proj\Continuous Integration (Proj)\BuildType\TFSBuild.proj(225,5): error MSB6003: The specified task executable "cmd.exe" could not be run. The directory name is invalid
Done executing task "Exec" -- FAILED. (TaskId:209)
Done building target "AfterCompile" in project "TFSBuild.proj" -- FAILED.: (TargetId:321)

这一行看起来像这样:

<Target Name="AfterCompile">
  <Exec Command="C:\Tools\NAnt\bin\Nant.exe" WorkingDirectory="..\Sources\" />
  <!-- ... -->
</Target>

1 个答案:

答案 0 :(得分:3)

检查您的工作目录。我希望这指向一个不存在的位置。

具体而言,默认的SourcesBinaries目录名称已在TFS 2012中更改为srcbin。使用属性$(SourcesSubdirectory)$(BinariesSubdirectory)来获取正确的值。