如何从CruiseControl.Net运行VS2010命令提示符

时间:2013-12-18 03:57:29

标签: visual-studio-2010 batch-file cruisecontrol.net

我有一个.bat文件,其中包含以下命令:

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没有提供任何有用的调试信息。

2 个答案:

答案 0 :(得分:1)

你错过了cmd.exe的/c来执行另一个进程并在结束时退出。

修正了 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>

答案 1 :(得分:0)

我可以回答一个部分。

// PS:有关如何使CC.Net运行cmd窗口的任何建议,以便我可以看到正在执行的命令?因为CC.Net shell没有提供任何有用的调试信息。 //

关闭CC.NET(服务)(如在控制面板 - 服务中)。

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

这将显示命令窗口中发生的所有事情。

...

您可以尝试.bat文件,但我通常会使用任务重新编码(在您的“CodeCoverageSetup.bat”中发生的任何事情)。

但我理解你是否在CodeCoverageSetup.bat中有很多。

尝试命令提示方法,也许它会给你一个关于发生了什么的提示。