【问题标题】:How to target .net 4.5 with CSharpCodeProvider? [duplicate]如何使用 CSharpCodeProvider 定位 .net 4.5? [复制]
【发布时间】:2012-11-06 15:15:56
【问题描述】:

可能重复:
Using CSharpCodeProvider with .net 4.5 beta

对于 .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.5 测试版的问题,并决定问这个问题,因为测试版和最终版本之间可能发生了一些变化。
  • 您是否尝试使用 v4.0 来查看它是否适用于 4.5 语法?

标签: c# reflection .net-4.5


【解决方案1】:

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

您需要指定“v4.0”。

【讨论】:

  • 谢谢,我认为它的工作方式应该与 .net 3.0-3.5 更新相同,但显然不是。当从 4.5 定位 v4.0 并且发生了一些我不知道的事情时,无法确定它是否“意外”工作。再次感谢您的明确答复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
  • 2016-07-01
相关资源
最近更新 更多