私は独自の言語を設計し、最終的には C# コードに変換します。ここで、Windows フォーム アプリケーションから C# コンパイラを使用して、この C# コードをコンパイルしたいと考えています。
実際のコンパイラ ファイルはどこにあり、どのようにコードをコンパイルしますか (現在は文字列に配置されています)??
私は独自の言語を設計し、最終的には C# コードに変換します。ここで、Windows フォーム アプリケーションから C# コンパイラを使用して、この C# コードをコンパイルしたいと考えています。
実際のコンパイラ ファイルはどこにあり、どのようにコードをコンパイルしますか (現在は文字列に配置されています)??
を探しているようですねCSharpCodeProvider
。http://support.microsoft.com/kb/304655またはMSDNに例があります。
この目的でC#CodeDomを使用できます。このリンクはあなたを助けるかもしれません
http://www.codeproject.com/Articles/3445/Runtime-Compilation-A-NET-eval-statement
次の2つのサイトを確認する必要があります。
1-csc.exeを使用したコマンドラインビルド
http://msdn.microsoft.com/en-us/library/78f4aasd.aspx
と
2-インストールされている.NETFrameworkのバージョンを確認する
http://msdn.microsoft.com/en-us/library/y549e41e.aspx
使用する.NETFrameworkコンパイラのバージョンを、次の2番目のリンクから特定する必要があります。
「コンピューターに.NETFrameworkの複数のバージョンをインストールして実行できます。バージョンは任意の順序でインストールできます。インストールされているバージョンを確認するには、%WINDIR%\ Microsoft.NET \ Frameworkディレクトリを表示してください(また、 32ビットまたは64ビットバージョンがインストールされている64ビットコンピューターでFramework64ディレクトリを表示します。).NET Frameworkの各バージョンにはディレクトリがあり、ディレクトリ名の最初の2桁は.NETFrameworkのバージョンを識別します。例:.NET Framework 1.1の場合はv1.1.4322、.NET Framework 2.0の場合はv2.0.50727、.NETFramework3.5の場合はv3.5など。」
csharp 構文のサービスとして nemerle コンパイラを使用するだけです。
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);
代わりにEmitを使用することを検討しましたか?
通常、csc.exe 実行可能ファイルは、システム ディレクトリの下の Microsoft.NET\Framework\ フォルダーにあります。その場所は、個々のコンピューターの正確な構成によって異なる場合があります。複数のバージョンの .NET Framework がコンピューターにインストールされている場合、この実行可能ファイルの複数のバージョンがコンピューターに存在します。このようなインストールの詳細については、「 インストールされている .NET Framework のバージョンを確認する 」を参照してください。