【问题标题】:Why does VS2015 allow C# 6.0 functions for .Net 4.5.2 applications? [duplicate]为什么 VS2015 允许 .Net 4.5.2 应用程序使用 C# 6.0 函数? [复制]
【发布时间】:2016-06-03 09:24:12
【问题描述】:

我在 Visual Studio 2015 中遇到了一个奇怪的行为。我正在编写一个针对 4.5.2 .Net Framework 的应用程序:

然后在应用程序中,我尝试使用一些在 C# 6.0(来自 .Net 6.0)中实现的东西:

int number = 456;
var name = nameof(number);
string str = $"Time = {DateTime.Now}";

我很确定 nameof 和使用 $ 的字符串格式仅在 .Net 4.6 中可用,但我仍然能够编译此代码 - 尽管我的目标是 4.5.2。

我在 Visual Studio 2013 中运行了相同的代码,同样针对 4.5.2 版本,但这次我无法编译代码(nameof 未找到)。

VS2015 怎么可能允许我编译目标 .Net Framework 版本中不应允许的代码?

我在黑暗中的拍摄是 VS2015 能够将 C# 6.0 代码计算到 CIL 中,它仍然与以前的版本兼容,但我不确定这是否正确。

【问题讨论】:

  • 直到我找到重复的 语言 才与 framework 绑定。只有 VS 2015 支持 C# 6
  • 副本是第一个相关的答案
  • “只有 VS 2015 支持 C# 6” - 这是错误的@Panagiotis Kanavos
  • dotNET 库决定了您可以使用哪些类,IDE(因为它包含编译器)决定了您可以使用哪些语言功能。

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


【解决方案1】:

C# 6 是 C# 语言的新版本,它与 .NET Framework 版本无关。因此,即使是旧版本的 .NET,您也可以使用 C# 6。 Roslyn compiler 是 VS2015 附带的新编译器,但 could be installed on older versions of VS 是独立的。所以基本上 Roslyn 会为您编译新功能,无论您使用的是什么框架版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    相关资源
    最近更新 更多