2011-04-24 6 views
2

C# 코드를 사용하여 Nant를 시작하려고합니다. 명령 줄에 입력 한 것과 동일한 문자열이 제대로 작동하지만 코드에서는 작동하지 않습니다. 여기에 내가 externaly 파일을 구축 할 nant.core를 사용하고 있지만 실 거예요 작업 ... 내가 cmd를 모두에서 같은 명령을 사용하면 잘 어울린다Nant 코드에서 시작하십시오

StringWriter consoleOut = new StringWriter(); 
Console.SetOut(consoleOut); 

ConsoleDriver.Main(new string[] { "-buildfile:" + filePath }); 

을 사용하고있는 코드입니다 ... 코드에서 시작 내가

{은 NAnt 0.91이 (0.91.3881.0 구축, 알파 2, 2010년 8월 17일.) 다음과 같은 메시지를 얻을 \ 연구 \ nCopyright (C) 2001-2010 게리 쇼 \ 연구 \ nhttp : // NANT. sourceforge.net \ r \ n \ r \ n \ r \ n 의 경우 빌드가 실패한 에 대한 자세한 정보는 디버그 모드에서 빌드를 다시 실행하십시오. \ r \ n \ r \ n 자세한 내용은 \ r에 \ n에 대한 NT -help '}

너무 -help보고 있지만 일반적으로 명령 줄에서 부를 것이다 당신은 당신의 실행에 밖으로 껍질 수 :(

답변

3

유용한 아무것도 찾을 didnt는 :

  var startInfo = new ProcessStartInfo(executable, parameters) 
      { 
       UseShellExecute = false, 
       RedirectStandardError = false, 
       RedirectStandardOutput = false, 
       CreateNoWindow = true 
      }; 

      using(var process = Process.Start(startInfo)) 
      { 
       if(process != null) 
       { 
        process.WaitForExit(timeoutInMilliSeconds); 
        return process.ExitCode; 
       } 
      } 
+0

좋아 보인다 ... 내가 당신에게 확인 표시 : 하나 개 더 질문 ... 어쩌면 조금 바보를 제공하기 전에 병이 몇 가지 검사를 할 ...하지만이 또한 웹에서의 asp.net MVC를 사용하여 작동합니다 섬기는 사람? :) –

+0

방금 ​​발견 한 문제가 하나 있습니다. 경로에 "Documents/Visual Studio 2010"과 같은 공백이있는 경우 작동하지 않습니다 ... 경로에 공백이 없으면 문제가 해결됩니다. 또한 cmd를 선물에 ... 어떤 제안? –

+0

Asp.net 웹 서버가 실행 파일을 실행하기에 충분한 권한을 가진 사용자의 컨텍스트에서 실행되고 있다고 가정합니다. – danielpops