2017-02-26 105 views
0

我想編譯另一個用C#編寫的C#代碼。來自C#的csc.exe代碼

我寫了下面的代碼至今:未創建

string cscPath = @"C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe"; 
string command = "/c \"" + cscPath + "\" /out:\"" + resultsFilePath 
+ "\" /reference:\"" + dllPath 
+ "\" \"" + csFilePath + "\" > \"" + resultsPath + "\\result.txt\""; 

Process.Start("cmd.exe", command); 

的Result.txt文件,我不知道如何檢查錯誤消息。

如果我運行是這樣的:

string command = "/c echo something > \"" + resultsPath + "\\result.txt\""; 
Process.Start("cmd.exe", command); 

它的工作原理和的Result.txt包含 「東西」 字。

我與Visual Studio 2012

+0

您是否嘗試將'command'打印到控制檯並在CMD中手動執行?也許你會發現它不是你以前所期望的命令。 – KernelMode

+0

是的。我複製命令字符串(在調試過程中)並在命令窗口中手動執行。有用。 – holocen

回答

0

居然沒有編制上已經內置了飛C#代碼,所以你不需要去通過調用CSC.EXE自己的麻煩的可能性工作。 看一看下面的博客文章,解釋如何做到這一點:通過調用CSC.EXE https://blogs.msdn.microsoft.com/abhinaba/2006/02/09/c-writing-extendable-applications-using-on-the-fly-compilation/

如果你想用做也無妨,你可以嘗試直接調用不通過CSC.EXE命令行:

string cscPath = @"C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe"; 
var cscArguments = "..."; 
Process.Start(cscPath, cscArguments); 

爲了找到錯誤,您可以從命令行運行完全相同的命令並檢查那裏的輸出。這應該會讓你走上正軌。