2013-12-18 2 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" 

나는이 같은 크루즈 컨트롤 프로젝트에서 박쥐 파일을 실행하고 있습니다 :

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

CC.Net 프로젝트가 실행될 때 작업은 실행되지만 아무것도 수행하지 않고 무기한 실행됩니다.

그러나 배치 스크립트를 cmd에서 직접 실행하면 완벽하게 실행됩니다.

이 작업을하는 방법에 어떤 아이디어?

추신 : 어떤 명령이 실행되고 있는지 알 수 있도록 CC.Net을 실행하는 방법에 대한 제안 사항 CC.Net 셸은 유용한 디버그 정보를 제공하지 않기 때문에.

답변

1

다른 프로세스를 실행하고 끝내려면 cmd.exe에 /c이 누락되었습니다.

고정 간부 블록 :

<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을 실행할 수있는 방법에 대한 제안 사항. CC.Net 셸은 유용한 디버그 정보를 제공하지 않기 때문에. //

(제어판 - 서비스 에서처럼) CC.NET (서비스)을 종료하십시오.

명령 줄에서 ccnet.exe를 실행하십시오. 값은 ccnet.exe.config에서 가져옵니다.

이것은 명령 창에서 일어나는 모든 것을 보여줍니다.

......

당신은 .bat 파일을 시도 할 수 있습니다,하지만 난 보통 작업과 함께 (당신의 "CodeCoverageSetup.bat"일 것입니다 무슨)에서 일어나는 어떤 레코딩 끝.

그러나 CodeCoverageSetup.bat에 많은 기능이 있는지 알고 있습니다.

명령 프롬프트 방법을 시도해보십시오. 그러면 무슨 일이 일어나고 있는지 힌트를 얻을 수 있습니다.