来自C#代码的csc.exe

时间:2017-02-26 18:50:13

标签: c# cmd csc

我想用另一个用C#编写的C#代码编译。

到目前为止,我编写了以下代码:

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。

1 个答案:

答案 0 :(得分:1)

实际上有可能在内置的情况下编译C#代码,因此您不需要经历自己调用csc.exe的麻烦。 看一下下面的博客文章,它解释了如何做到这一点: https://blogs.msdn.microsoft.com/abhinaba/2006/02/09/c-writing-extendable-applications-using-on-the-fly-compilation/

如果您想通过调用csc.exe来执行此操作,您可以尝试直接调用csc.exe而不是通过命令行调用:

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

为了找到错误,您可以从命令行运行完全相同的命令并检查输出。这应该会让你走上正轨。