2013-12-18 31 views
1

我有了下面的命令.bat文件運行VS2010命令提示符:如何從CruiseControl.Net

c: 
cd %1 
"c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" amd64 & for /f "delims==" %%F in ('dir /b *.pdb') do vsinstr /Coverage "%%~nF.dll" 

我從巡航控制項目執行bat文件是這樣的:

<exec> 
    <executable>cmd.exe</executable> 
    <buildArgs>"c:\Development\Batch Scripts\CodeCoverageSetup.bat" $(CodeCoverageSetupWorkingDirectory)</buildArgs> 
</exec> 

當CC.Net項目運行時,任務被執行,但它什麼都不做,並且它無限期地運行。

但是,當我直接從cmd執行批處理腳本時,它會執行完美。

關於如何使這項工作的任何想法?

PS:有關如何讓CC.Net運行cmd窗口的任何建議,以便我可以看到正在執行的命令?因爲CC.Net shell不提供任何有用的調試信息。

回答

1

您錯過了/c以便cmd.exe執行另一個進程並在結束時退出。

固定 EXEC塊:

<exec> 
    <executable>cmd.exe</executable> 
    <buildArgs>/c "c:\Development\Batch Scripts\CodeCoverageSetup.bat" $(CodeCoverageSetupWorkingDirectory)</buildArgs> 
</exec> 

或者你可以簡單地刪除cmd.exe參考。

<exec> 
    <executable>c:\Development\Batch Scripts\CodeCoverageSetup.bat</executable> 
    <buildArgs>$(CodeCoverageSetupWorkingDirectory)</buildArgs> 
</exec> 
0

我可以回答一個部分。

// PS:有關如何讓CC.Net運行cmd窗口的任何建議,以便我可以看到正在執行的命令?因爲CC.Net shell不提供任何有用的調試信息。 //

關閉CC.NET(服務)(如在控制面板 - 服務中)。

從命令行運行ccnet.exe。 (它的值是從ccnet.exe.config中提取的)。

這將顯示在命令窗口中發生的所有事情。

......

您可以嘗試.bat文件,但我通常最終會重新編碼中無論發生什麼事(這將是你的「CodeCoverageSetup.bat」)的任務。

但我明白,如果你有很多CodeCoverageSetup.bat。

嘗試命令提示符方法,也許它會給你提示發生了什麼。