2011-12-26 2 views
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)); 
} 
+0

はパスのように聞こえます。.net 3.5アセンブリと4.0は、特にGACの点では、たとえば、.net 4.0フレームワークをインストールした場所と同じGACチェックをスターターで共有しません。 – MethodMan

+0

.net4がC:\ Windows \ Microsoft.NET \ Framework \ Framework \ v4.0.30319 \にインストールされていて、.net3.5がC:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ – Loman

+0

にインストールされている場合、辞書に "CompilerVersion"コンストラクタに渡します。 http://msdn.microsoft.com/en-us/library/bb537926.aspx –

答えて

4

私は、.NET 4.0からcsc v3.5を使用することができます。

しかし、その逆はありません。

(私は間違っている可能性があります)。

関連する問題