19

重複の可能性:
.net4.5ベータ版でCSharpCodeProviderを使用する

.net 3.5の場合、v3.5をCSharpCodeProviderに渡しますが、v4.5アプリでv4.5をCSharpCodeProviderに渡すと、InvalidOperationException「コンパイラ実行可能ファイルcsc.exeが見つかりません」というメッセージが表示されます。

ここで何が起こっているのか、私が間違っていることを誰かが知っていますか?

再現するコード。。。

using Microsoft.CSharp;
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;

namespace Console1
{
    class Program
    {
        static void Main(string[] args)
        {
            var options = new Dictionary<string, string>{{"CompilerVersion", "v4.5"}};
            var cs = new CSharpCodeProvider(options);

            var compilerParams = new CompilerParameters();

            var r = cs.CompileAssemblyFromSource(compilerParams , "namespace ns { class program { public static Main(string[] args) { System.Console.WriteLine(\"Hello world\"); } } }");
        }
    }
}
4

1 に答える 1

30

This is by design, something you can see when you navigate to c:\windows\microsoft.net\framework with Windows Explorer. Note that you'll only see a subdirectory named v4.0.30319, there is no v4.5 subdirectory. Or in other words, .NET 4.5 is a true in-place update for version 4.0 and the C# v5 compiler replaces the v4 compiler.

You'll need to specify "v4.0".

于 2012-11-06T16:38:51.393 に答える