簡體   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