【问题标题】:Does the .Net run-time compiler support C# 3.0?.Net 运行时编译器是否支持 C# 3.0?
【发布时间】:2010-09-22 03:17:10
【问题描述】:

看起来运行时编译器不支持与命令行编译器相同的语言,所以如果你想使用 lambda 表达式、扩展方法或 LINQ,那么你就被卡住了。

这里有更多细节:

http://metadatalabs.com/blog/

这是正确的还是有解决方法? (当然,没有产生命令行编译器。)

【问题讨论】:

  • 为什么不能生成命令行编译器?运行时编译器的有效解决方案似乎拒绝工作。
  • 客户端必须安装命令行工具才能使我们的软件正常工作。这对客户来说是一个负担,也是一个令人头疼的配置,但如果没有其他选择,这就是我们必须做的。

标签: c# .net


【解决方案1】:

看看CSharpCodeProvider constructor的文档:

providerOptions 的值为 从获得 配置文件中的元素。你 可以识别版本 您要使用的 CSharpCodeProvider 指定 元素,提供“CompilerVersion” 作为选项名称,并提供 版本号(例如,“v3.5”) 作为期权价值。你必须先于 小写的版本号 “v”。

【讨论】:

    【解决方案2】:

    我一直在使用它,使用 .Net 3.5 编译时它似乎可以工作

    CodeDomProvider provider = new CSharpCodeProvider(new Dictionary<string, string> { { "CompilerVersion", "v3.5" } });
    

    【讨论】:

      【解决方案3】:

      这家伙的博客好像有答案

      CodeDomProviders

      看起来工厂默认它返回的实例为 2.0。

      这似乎是一种非常疯狂的技术。保罗格雷厄姆在某处哭泣。

      【讨论】:

        【解决方案4】:

        我没试过,但听起来很疯狂..

        将来这不会成为问题,因为 .NET 团队会将 C# 编译器作为服务提供,这意味着您可以在代码中使用真正的 C# 编译器。看看这个视频:

        http://channel9.msdn.com/pdc2008/TL16/

        【讨论】:

          猜你喜欢
          • 2011-09-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多