2016-07-18 87 views

回答

0

差更.Net Core和全.Net Framework,含义之间,你就可以使用相同的语法,但你会发现在类,你可以/不能使用的差异,有时,在你使用它们的方式。

+0

好的,但问题不在于此。 – boj

2

虽然某些语言功能确实需要框架功能,但语言本身通常并不与特定的运行时/框架绑定。 (例如,内插的字符串上.NET 4.6比NET 2.0更灵活一点由于FormattableString存在下进行。)然而,还有需要考虑两件事情:

  • C#编译器的版本支持由SDK你安装(dotnet cli
  • 由一个特定的框架版本

的SDK支持C#编译器包的版本支持C#6开箱。我会亲自期望 Roslyn软件包的C#7版本以支持.NET Core(例如,针对netstandard1.5),因此在执行时编译更多代码的代码在这方面应该没问题。我不知道在将编译器版本绑定到SDK版本方面计划是什么 - 我怀疑当project.json到msbuild转换完成时会变得更清晰。

我不知道有什么方法可以确定特定SDK支持哪些语言版本 - 可以很容易地创建一系列运行特定语言功能的小类,并查看它们是否编译, 当然。 Trickier将会提出构建多个版本的代码,但会给出不同的结果;在连续的语言版本(至少2-3,3-4,4-5 ...不确定5-6)之间可以这样做,但它们稍微复杂一些。

+1

针对C#编译器的'autoconf'样式特征检测;-) –

3

.NET核心1.0附带C#6你可以看到,在参考文献:

enter image description here

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

您也可以在NuGet上看到这种依赖关系:Microsoft.NETCore.App

当C#7出来时,可能会通过将其包添加到.NET Core项目来使用新编译器。