19

可能重复:
在 .net 4.5 beta 中使用 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

这是设计使然,当您使用 Windows 资源管理器导航到 c:\windows\microsoft.net\framework 时可以看到。请注意,您只会看到一个名为 v4.0.30319 的子目录,没有 v4.5 子目录。或者换句话说,.NET 4.5 是 4.0 版的真正就地更新,而 C# v5 编译器取代了 v4 编译器。

您需要指定“v4.0”。

于 2012-11-06T16:38:51.393 回答