2010-12-01 155 views
0

嗨,當我嘗試執行此過程時,爲什麼會出現拒絕訪問錯誤? 我運行(的MSBuild「project文件在這裏」,「額外的參數」)命令與這種新工藝將stdout重定向到文件問題?

public bool CmdExecute(string command,string args) 
    { 



      bool isOk = true; 
     try 
     { 
      using (System.Diagnostics.Process proc = new System.Diagnostics.Process()) 
      { 

       proc.EnableRaisingEvents = false; 
       proc.StartInfo.UseShellExecute = false; 
       proc.StartInfo.RedirectStandardOutput = true; 
       proc.StartInfo.FileName = command; 
       proc.StartInfo.Arguments = args; 

       // Console.Out.WriteLine(proc.StartInfo.Arguments); 

       proc.Start(); 
       string output = proc.StandardOutput.ReadToEnd(); 
       proc.WaitForExit(); 
       Console.WriteLine(output); 
      } 

      } 
     } 
     catch(Exception e) 
     { 
      Console.WriteLine(e.Message); 
      isOk = false; 
     } 
     return isOk; 
    } 

回答

1

閱讀Process.StartInfo.RedirectStandardOutput的文檔。你沒有正確使用它。

http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardoutput.aspx

如果您使用RedirectStandardOutput,你應該閱讀Process.StandardOutput和Process.StandardError和做與它的東西。

我懷疑你的訪問被拒絕,因爲你的結果命令行沒有意義。你會得到:

msbuild args &> P:\\build.txt 

的外來號(&)會造成很多問題。

+0

嗨,詹姆斯感謝您的回覆。我修改了我的代碼,仍然得到了訪問被拒絕的錯誤(見上文),它總是進入捕獲。我注意到,當proc.StartInfo.UseShellExecute爲真,我沒有得到訪問被拒絕的錯誤,但重定向標準輸出需要它是錯誤的。請幫助我,我需要將msbuild的輸出寫入文件 – 3ggerhappy 2010-12-02 17:03:22