2011-08-24 7 views
1

하나의 환경에서 완벽하게 작동하는 NAnt 빌드 스크립트를 실행하려고하지만 최근에 아래의 문제에 직면 한 새 컴퓨터로 내 빌드 파일을 마이그레이션했습니다.NANT 빌드 오류 : Cmd

은 NAnt 코드 사용 : 간부 프로그램 = "cmd를"명령 행을 = "/ C의 $ {build.dir} \ XXX.vbs $ {build.version}"failonerror = "false"를

하는 nanE cmd를 내가 환경 변수를 확인 한이 을 극복하기 위해

내 가능한 시도 (리턴 코드 1이었다)와 모두 일치하는 기존 시스템과 비교하여도 잘하고있는 것을 발견 : 오류 외부 프로그램 실패를 수신 같은.

모든 솔루션/의견 ??

+0

cmd.exe의 전체 경로를 지정하면 어떻게됩니까? 'C : \ Windows \ system32 \ cmd.exe' – johnluetke

+0

@ johnluetke> 음 ... 그걸 시도하지 않았다. ..Lemme try it .. 고마워. :) –

답변

1

"cmd"가 실행 중이며 전체 경로를 제공 할 필요가없는 것으로 보입니다. "외부 프로그램 실패 : cmd (return code was 1)"오류는 'cmd'가 실행되었음을 나타내지 만 오류가 발생했습니다. 즉, VB 스크립트 (예 : 'XXX.vbs')가 실패합니다. 하여 실제 오류를 찾기 위해 다음보십시오 : "$ {build.dir} \ XXX.vbs"의 확장 된 값이 유효한 파일/위치입니다

  1. 확인합니다. 상대 경로로 작업하는 경우 작업 디렉토리를 다시 확인하십시오.

    <echo message="${build.dir}\XXX.vbs" /> 
    

    또는

    <echo message="${file::exists(build.dir + '\XXX.vbs')}" /> 
    
  2. 는 명령 줄에서은 NAnt 스크립트를 실행합니다. 이렇게하면 Windows Script Host의 팝업 오류와 같은 더 나은 오류 메시지가 표시됩니다.

    C:\YourTools\NAnt.exe -buildfile:MyBuildScript.build 
    

    프로그램 창 출력을 리디렉션하지 마십시오. 'exec'작업의 명령 줄 문자열에 ">> exec.log"를 추가 한 다음 출력/로그 파일의 내용 (예 : 'exec.log')을 확인하십시오.

    <exec program="cmd" commandline="/c ${build.dir}\XXX.vbs ${build.version} >> xxx_exec.log" failonerror="false" /> 
    
  3. 는 다른 방법으로, '간부'작업을 사용하는 것이 더 좋은 방법은 중첩 된 '인수'요소를 사용하는 것입니다. 이것은 당신의 주장에 공백이있는 경우에 도움이 될 것입니다; 당신의 스크립트는 명확하게 읽을 :

    <exec program="cmd" failonerror="false"> 
        <arg value="/c" /> 
        <arg value="${build.dir}\XXX.vbs" /> 
        <arg value="${build.version}" /> 
    </exec> 
    
  4. 마지막으로, 당신의 VB 스크립트 (아마도 때문에 '$ {build.version}'의 공백) 때문에 유효하지 않은 인수 실패하는 경우, 다음과 같은 것을 사용 이 도움이

    WScript.echo "Argument count", wscript.arguments.count 
    
    For i = 0 to wscript.arguments.count - 1 
        Wscript.Echo wscript.arguments.item(i) 
    Next 
    

희망 다음 VB 스크립트를 디버깅 할 수 있습니다.

관련 문제