C# 6.0是否支持.NET Core,还是.NET Core响应更高版本的C#?

4

我刚刚安装了.NET Core 1.0并运行了示例hello world。

  1. 是否有.NET Core 1.0和其默认C#版本之间的关系?
  2. 如何通过命令行工具知道此.NET Core安装的C#版本?
3个回答

5

.NET Core 1.0附带了C# 6。您可以在引用中看到:

enter image description here

Microsoft.CodeAnalysis* 是 C# 编译器的 NuGet 包。1.x 版本对应于 C# 6,2.x 版本(目前处于测试版)是 C# 7。

您也可以在 NuGet 上查看此依赖项:Microsoft.NETCore.App

当 C# 7 发布后,将有可能通过将其包添加到 .NET Core 项目中来使用新编译器。


4
语言本身通常不与特定的运行时/框架绑定,尽管某些语言功能确实需要框架功能。(例如,在.NET 4.6上插值字符串比.NET 2.0更灵活,因为存在FormattableString。) 但是,有两件事需要考虑:
  • 您安装的SDK (dotnet cli) 支持的C#编译器版本
  • 特定框架版本支持的C#编译器包的版本
SDK默认支持C# 6。我个人认为Roslyn软件包的C# 7版本也应该支持.NET Core(例如,针对netstandard1.5),因此在这方面编译更多代码的代码应该没问题。我不知道将编译器版本与SDK版本绑定的计划是什么 - 当project.json到msbuild的转换完成时,我认为这一点将变得更加清晰。
我不知道如何确定特定SDK默认支持哪个语言版本 - 当然可以想出一系列小类以使用特定语言功能并查看它们是否编译通过。更棘手的是编写可在多个版本中构建但给出不同结果的代码;在连续的语言版本之间有做到这一点的方式(至少是2-3、3-4、4-5 ... 不确定5-6),但它们稍微有些复杂。

1
自动配置风格的特性检测用于C#编译器;-) - Christian.K

1
区别更多地存在于.Net Core和完整的.Net Framework之间,这意味着您将能够使用相同的语法,但是您会发现可以/不能使用的类以及有时使用它们的方式存在差异。

1
好的,但问题不是关于那个的。 - boj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接