6
.net 3.5アプリケーションからCSharpCodeProviderを使用して.csファイルをコンパイルしようとしていますが、.net4コンパイラを対象にしたいのですが、 "コンパイラ実行ファイルcsc.exeが見つかりません"というエラーが表示されます。私は.net4をインストールしました。以下は、簡潔にするために省略した行を使用しているコードです。 CompilerVersionを "v3.5"に設定するとエラーは表示されません。CSharpCodeProviderを持つ.net3.5アプリケーションから.net4コンパイラをターゲットにすることは可能ですか?
CompilerResults results = null;
using (CSharpCodeProvider provider = new CSharpCodeProvider(new Dictionary<string, string>() {{"CompilerVersion", "v4.0"},}))
{
CompilerParameters options = new CompilerParameters();
...
results = provider.CompileAssemblyFromFile(options, Directory.GetFiles(path, "*.cs", SearchOption.AllDirectories));
}
はパスのように聞こえます。.net 3.5アセンブリと4.0は、特にGACの点では、たとえば、.net 4.0フレームワークをインストールした場所と同じGACチェックをスターターで共有しません。 – MethodMan
.net4がC:\ Windows \ Microsoft.NET \ Framework \ Framework \ v4.0.30319 \にインストールされていて、.net3.5がC:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ – Loman
にインストールされている場合、辞書に "CompilerVersion"コンストラクタに渡します。 http://msdn.microsoft.com/en-us/library/bb537926.aspx –