2011-04-24 40 views
2

我想用C#代碼啓動南特。在命令行中輸入的字符串工作正常,但不能從代碼中運行。下面是我使用從代碼開始南特

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

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

我使用nant.core到externaly建文件,但它不會工作...如果我使用CMD一切相同的命令順利代碼...從代碼中啓動它我得到以下信息

{惡性0.91(構建0.91.3881.0;α-2; 2010年8月17日。)\ r \ n版權所有(C)2001-2010格里 肖\ r \ nhttp://惡性。 sourceforge.net \ r \ n \ r \ n \ r \ n對於 關於構建失敗的原因 的更多信息,請在調試模式下再次運行構建 。\ r \ n \ r \ n試一試NT -help」以獲取更多信息\ r \ n}

看-help太多,但沒有發現任何有用:(

回答

3

你可以掏出你的可執行文件,你通常會在命令行調用:

  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工作服務器? :) – 2011-04-24 23:05:09

+0

只是發現有一個問題...如果路徑有像「Documents \ Visual Studio 2010」的空間,那麼它不會工作...如果路徑沒有空格,那麼它工作正常......這個問題是也在CMD目前...任何建議? – 2011-04-24 23:13:10

+0

假設Asp.net Web服務器在具有足夠權限運行可執行文件的用戶上下文中運行,是的。 – danielpops 2011-04-24 23:13:20