以编程方式调用C#编译器编译C#代码

时间:2012-07-16 09:37:42

标签: c# .net compiler-construction

我设计了我自己的语言,最后我将其转换为C#代码。现在我想通过我的Windows窗体应用程序使用C#编译器编译这个C#代码。

实际的编译器文件位于何处,如何编译我的代码(当前放在一个字符串中)??

6 个答案:

答案 0 :(得分:5)

听起来你正在寻找CSharpCodeProviderhttp://support.microsoft.com/kb/304655MSDN有例子。

答案 1 :(得分:3)

您可以使用C#CodeDom来实现此目的。此链接可以帮助您

http://www.codeproject.com/Articles/3445/Runtime-Compilation-A-NET-eval-statement

答案 2 :(得分:0)

c:\windows\Microsoft.NET\Framework\v3.5\

包含C#编译器csc.exe

所以,您可以执行以下操作:

const string outputfile = "abc.exe";
const string inputFile = "xyz.cs"

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "c:\\windows\\Microsoft.NET\\Framework\v3.5\\csc.exe";
startInfo.Arguments = "/out:" + outputFile + " " + inputFile;
Process.Start(startInfo);

答案 3 :(得分:0)

您需要查看以下两个网站:

1 - 使用csc.exe进行命令行构建

http://msdn.microsoft.com/en-us/library/78f4aasd.aspx

2 - 确定安装了哪个版本的.NET Framework

http://msdn.microsoft.com/en-us/library/y549e41e.aspx

您需要从第二个链接中确定您将使用的.NET Framework编译器版本:

“您可以在计算机上安装和运行多个版本的.NET Framework。您可以按任何顺序安装版本。要查看安装的版本,请查看%WINDIR%\ Microsoft.NET \ Framework目录。(您还应该在64位计算机上查看Framework64目录,该计算机可以安装32或64位版本。)每个版本的.NET Framework都有一个目录,目录名的前两位数字标识.NET框架版本;例如:.NET Framework 1.1为v1.1.4322,.NET Framework 2.0为v2.0.50727,.NET Framework 3.5为v3.5,依此类推。“

答案 4 :(得分:0)

只需将nemerle编译器用作csharp语法的服务。

答案 5 :(得分:-1)

您是否考虑过使用Emit

csc.exe compiler is part of the .Net

  

csc.exe可执行文件通常位于   系统目录下的Microsoft.NET \ Framework \文件夹。   它的位置可能会有所不同,具体取决于任何配置   个人电脑。这个可执行文件的多个版本将是   如果有多个版本的.NET Framework,则会出现在计算机上   已安装在计算机上。有关此类的更多信息   安装,请参阅Determining Which Version of the .NET Framework Is Installed