C#增加最新主要版以及预览版两种语言版本

微软从Visual Studio 2019第四预览版以及候选版开始,对C#版本以及工具进行调整。现在C#的语言版本(LangVersion)增加了最新主要版本(LatestMajor)以及预览版(Preview),因此除了原先的最新(Latest)版本,提供最新的主要以及次要更新外,最新主要版本只提供C#最新的主要更新,而预览版则提供C#的预览功能。

当开发者没有指定语言版本时,则默认的版本值现在由项目中的开发框架决定,也就是说,假设项目的目标框架使用C#预览版,而同时也存在相对应的预览版C#,则预览版便为默认使用的版本,但是当用户没有指定预览版框架时,系统便会使用最新版本。

因此微软提到,针对Netcoreapp3.0预览版或是Netstandard2.1预览版,默认的C#语言版本为预览版,用户可以利用的C# 8.0预览版功能,将完全根据使用的编译器版本以及.NET SDK,因此随着未来使用更新的预览版时,可以获得的功能也会更多。

而在.NET开发框架方面,默认的C#语言版本则是最新版本,所以所有使用的C# 8.0功能,都会出现编译错误,Visual Studio工具会跳出快速修复提示,要求开发者更改项目或是解决方案的语言版本,借此解决遭遇到的问题。而针对Netcoreapp3.0或是Netstandard2.1预览版跟.NET并存的情况下,系统将会选择使用最新版的C#。

目前Visual Studio 2019默认使用的C#版本,相当于最新主要版本,微软解释,第一个原因是,现在C#的更新正处于两个Visual Studio发布周期之间,但是Visual Studio的新项目仍然默认使用较旧版的C#,第二个原因则是,对于使用.NET Core 3.0预览版的项目,使用C# 8.0是更好的选择,但是无法不在项目默认使用.NET Core 3.0预览版的情况下,使C# 8.0成为默认值。

微软预告,C# 8.0以及.NET Core 3.0将会一起发布正式版,因此到时候,语言版本的最新版以及最新主要版本都会是C# 8.0,而预览版则未定,当开发者没有指定项目语言版本,则一率被视为使用最新的版本C# 8.0正式版。

微软希望在发展C#以及.NET Core新功能的同时,让开发者赶快跟上开发的脚步,无缝的使用这些新功能,当开发者在开发生命周期初期接触这些功能,就能拉长新功能反馈的时间区间。微软提到,所有的C# 7.3以及更低版本都能在Visual Studio 2019兼容,功能及行为都没有改变,但是也提醒,当开发者在使用C# 8.0预览功能时要注意,预览版本间不保证兼容,在未来功能行为可能随时会改变。