2013-01-11 161 views
2

我们有一个项目,我们在TFS 2008中定制了TFS构建脚本,当时构建基于MSBuild而不是Workflow文件。此自定义脚本使用<Exec> task来呼叫NAnt进行一些打包。在TFS 2012升级后,升级后的MSBuild构建脚本中的TFS构建失败并执行任务

我们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

这是否打开了最大详细日志记录?将/ v:diag添加到MsBuild命令行以获取有关发生的更多信息。 – jessehouwing

+0

我忘了更改日志记录的详细程度,@ jessehouwing,但是一旦我改变诊断信息,就没有得到任何额外的信息... – bdukes

+0

罢工,我只是在错误的地方寻找额外的信息(这不是在在Visual Studio中构建的视图,仅在放置文件夹中的日志文件中)。这就是说,它告诉我们的并不多。 – bdukes

回答

3

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

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