3

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

实际的编译器文件在哪里以及如何编译我的代码(当前放在一个字符串中)?

4

6 回答 6

5

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

于 2012-07-16T10:09:42.553 回答
3

为此,您可以使用 C# CodeDom。此链接可能对您有所帮助

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

于 2012-07-16T09:41:15.293 回答
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);
于 2012-07-16T09:49:15.170 回答
0

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

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,等等。”

于 2012-07-16T09:51:52.907 回答
0

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

于 2012-07-16T10:41:23.680 回答
-1

您是否考虑过使用Emit代替?

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

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

于 2012-07-16T09:45:10.843 回答