2012-01-31 79 views
3

我必須編寫一個僅依次運行兩個批處理文件的TFSBuild.proj文件。我只需要從構建定義中調用proj文件,proj文件將依次調用兩個批處理文件。所有的建築物都將由建立服務器上的批處理文件完成。如何編寫按順序運行兩個批處理文件的TFSBuild.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> 

我得到一個錯誤:

The command "C:\StampBuild\GetFromTFS.bat" exited with code 3.

我需要在給定的路徑運行,從構建服務器批處理文件,我正在從建設我的開發服務器。

回答

0

閱讀此項。 ?

http://www.danielfortunov.com/software/ $ daniel_fortunovs_adventures_in_software_development/2009/05/21/invoking_batch_files_from_msbuild源= 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> 
+0

感謝尼克,但我無法解決我的問題。我已經添加了一些更多的信息,你可以看看它並建議。 – Ashutosh 2012-02-01 08:38:01

+0

蝙蝠文件是否需要特定的工作目錄?你有沒有試圖自己手動運行它?另外,我看到EndToEndIteration在GetLatest上執行一個CallTarget,但我沒有看到你將BuildStampVer目標包含在要調用的目標中。你不應該把這個目標放在DependsOn或其他東西嗎? – 2012-02-01 15:35:05

+0

嗨,尼克,我對proj文件沒有太多的想法。我必須編寫一個應該只按順序調用這兩個批處理文件的proj文件。我已經將所有內容寫入批處理文件,如果手動運行它,批處理文件工作正常。請建議我應該如何修改我的proj文件。 – Ashutosh 2012-02-03 11:18:19

0

批量退出代碼3是路徑錯誤。 'GetFromTFS.bat'中的路徑引用是否正確?任何相對路徑引用將嘗試從.proj運行的位置解析。

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在命令行正常。

希望這可以工作。

相關問題