csc.exe 来自 C# 代码
csc.exe from C# code
我想从另一个用 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 包含 "something" 个单词。
我在 Visual Studio 2012 年工作。
实际上已经内置了动态编译 C# 代码的可能性,因此您无需亲自调用 csc.exe。
看看下面的博客 post,它解释了如何做到这一点:
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);
为了找到错误,您可以 运行 从命令行执行完全相同的命令并检查那里的输出。那应该会让您走上正确的轨道。
我想从另一个用 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 包含 "something" 个单词。
我在 Visual Studio 2012 年工作。
实际上已经内置了动态编译 C# 代码的可能性,因此您无需亲自调用 csc.exe。 看看下面的博客 post,它解释了如何做到这一点: 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);
为了找到错误,您可以 运行 从命令行执行完全相同的命令并检查那里的输出。那应该会让您走上正确的轨道。