如何编写TFSBuild.proj文件,该文件按顺序运行两个批处理文件?

时间:2012-01-31 09:57:03

标签: tfs tfs2010 tfs2008 tfsbuild team-build

我必须编写一个TFSBuild.proj文件,该文件只按顺序运行两个批处理文件。我只需要从构建定义调用proj文件,proj文件将按顺序调用两个批处理文件。所有构建都将由驻留在构建服务器上的批处理文件完成。

我在构建服务器上放置了一个批处理文件。以下是我写过的TFSBuild.proj文件:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="GetLatest" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">

<Target Name="EndToEndIteration"
  Condition=" '$(IsDesktopBuild)'!='true' "
  DependsOnTargets="$(EndToEndIterationDependsOn)" >
  <CallTarget Targets="GetLatest"/>
 </Target>

  <Target Name="GetLatest">
    <Exec Command="C:\BuildScript\GetFromTFSTask.bat" />
  </Target>
  <Target Name="BuildStampVer">
    <Exec Command="C:\BuildScript\BuildTask.bat" />
  </Target>
</Project>  

我收到错误:

  

命令“C:\ StampBuild \ GetFromTFS.bat”退出,代码为3。

我需要在给定路径上从构建服务器运行批处理文件,我正在从我的开发服务器运行构建。

3 个答案:

答案 0 :(得分:0)

阅读本文。

http://www.danielfortunov.com/software/ $ daniel_fortunovs_adventures_in_software_development / 2009/05/21 / invoking_batch_files_from_msbuild?source = ActivityLog

更新 - 示例代码:此示例是您修改的代码,使用EndToEndIterationDependsOn属性来指定MSBuild在运行EndToEndIteration时应调用的从属目标的顺序。这有意义吗?

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="GetLatest" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">

 <PropertyGroup>
  <EndToEndIterationDependsOn>
     GetLatest;
     BuildStampVer
  </EndToEndIterationDependsOn>
 </PropertyGroup>
 <Target Name="EndToEndIteration"
   Condition=" '$(IsDesktopBuild)'!='true' "
   DependsOnTargets="$(EndToEndIterationDependsOn)" >
 </Target>

 <Target Name="GetLatest">
  <Exec Command="C:\BuildScript\GetFromTFSTask.bat" />
 </Target>
 <Target Name="BuildStampVer" DependsOnTargets="GetLatest" >
  <Exec Command="C:\BuildScript\BuildTask.bat" />
 </Target>
</Project>  

答案 1 :(得分:0)

批处理退出代码3是路径错误。 'GetFromTFS.bat'中的路径引用是否正确?任何相对路径引用都将尝试解析运行.proj的位置。

答案 2 :(得分:0)

我从未尝试过您的代码,但您是否尝试过调用cmd / c:

 <Target Name="GetLatest">
  <Exec Command="cmd /c C:\BuildScript\GetFromTFSTask.bat" />
 </Target>
 <Target Name="BuildStampVer" DependsOnTargets="GetLatest" >
  <Exec Command="cmd /c C:\BuildScript\BuildTask.bat" />
 </Target>
</Project>  

我只修改了上面的例子,所以请在命令行中正确调整cmd / c。

希望这可行。