我必须编写一个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。
我需要在给定路径上从构建服务器运行批处理文件,我正在从我的开发服务器运行构建。
答案 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。
希望这可行。