我有一个.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没有提供任何有用的调试信息。
答案 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中有很多。
尝试命令提示方法,也许它会给你一个关于发生了什么的提示。