繁体   English   中英

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

[英]Programmatically call C# Compiler to Compile C# code

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

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

听起来你正在寻找CSharpCodeProvider http://support.microsoft.com/kb/304655MSDN都有示例。

您可以使用C#CodeDom来实现此目的。 这个链接可以帮到你

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

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);

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

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 Framework版本;例如:.NET Framework 1.1为v1.1.4322,.NET Framework 2.0为v2.0.50727,.NET Framework 3.5为v3.5,依此类推。

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

您是否考虑过使用Emit

csc.exe编译器是.Net的一部分

csc.exe可执行文件通常位于系统目录下的Microsoft.NET \\ Framework \\文件夹中。 它的位置可能会有所不同,具体取决于任何个人计 如果计算机上安装了多个版本的.NET Framework,则此计算机上将存在此可执行文件的多个版本。 有关此类安装的详细信息,请参阅确定安装了哪个版本的.NET Framework

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM