2013-12-18 30 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。

尝试命令提示符方法,也许它会给你提示发生了什么。