【问题标题】:Roslyn and .NET Runtime version [duplicate]Roslyn 和 .NET 运行时版本 [重复]
【发布时间】:2014-08-17 15:28:54
【问题描述】:

是否可以将 Roslyn 编译器和 C# 6.0 的新功能与旧版本的 .NET Runtime(例如 .NET 4.0)一起使用?

例如,我想在 .NET 4.0 应用程序中使用表达式主体成员(int S => x + y; 而不是 int S { get { return x + y; } })。

【问题讨论】:

  • 你认为会是什么?
  • 编译器如何将它不知道(因为它在创建时不存在)的方法编译IL
  • 它的可能性相对较大,因为这可以完全通过编译器支持实现,并发出 4.0 CLR 可以运行的 IL。就像如果您使用 C# 3.0 编译器编译,您可以在面向 .Net 2.0 的项目中使用自动属性一样。 stackoverflow.com/questions/9393982/…
  • 你试过了吗?主要构造函数为我工作以 .NET 3.5 为目标的项目。
  • @GeorgeStocker 什么会让你认为它不会?除非该功能需要 .NET 运行时中的更改(如 async/await)来支持,否则没有理由不应该在旧的 .NET 运行时上使用它。

标签: c# .net roslyn c#-6.0


【解决方案1】:

新的 C# 6.0 功能不依赖于框架支持,所以是的,您使用 C# 6.0 编译器编译的应用程序将在 .NET 4.0 上运行,当然假设您在项目文件中指定目标是 .NET 4.0第一名。

【讨论】:

  • 自 6 月以来这种情况发生了变化吗?我们仍然可以在 .net 4.0 中使用新的编译器吗?
  • 仍然如此,此时 C# 6.0 已完全锁定,因此不太可能更改。
  • 感谢您的更新。在其他地方找不到此信息。我们的客户仍然需要 XP 支持,我很高兴看到我们能够升级到 Roslyn
  • 即使 C# 6.0 确实 与较新版本的框架有联系,编译器仍然支持编译为旧版本语言的标志。因此,您不会在这种假设情况下使用语言功能,但仍会获得 Roslyn 的“其他”好处。
  • 答案给人的印象是 C# 编译器在 .NET 4.0 上运行没有问题,但实际上它不是受支持的平台。
【解决方案2】:

截至目前,Roslyn C# 编译器和工具无法在 .NET 4.0 上运行

您当然可以为 .NET 4.0交叉编译,但要运行编译器本身,您至少需要 .NET 4.5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 2017-08-07
    • 2016-05-20
    • 2017-08-16
    相关资源
    最近更新 更多