每个目标框架的默认C#语言版本?

时间:2019-04-24 13:53:21

标签: c# .net-core

我有一个C#项目,它指定目标框架而不是语言版本。是否有任何文档指定为任何给定的目标框架版本选择哪种语言版本?如果目标框架较低,则使用的SDK版本也很重要-例如就我而言,我使用的是.NET Core SDK 2.2,但是该项目的目标是netcoreapp2.1,是否会获得与使用面向netcoreapp2.1的SDK 2.1相同的语言版本?我当前收到一个编译错误,指出“请使用语言版本7.2或更高版本以允许...”,因此我得出结论:1)默认版本小于7.2,并且2)工具支持或至少知道7.2

我发现https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version状态:

  

C#编译器根据项目的目标框架确定默认的语言版本。当您的项目针对具有相应预览语言版本的预览框架时,使用的语言版本就是预览语言版本。如果您的项目未针对预览框架,则使用的语言版本是最新的次要版本。

     

例如,在.NET Core 3.0的预览期间,任何以netcoreapp3.0或netstandard2.1为目标的项目(均在预览中)将使用C#8.0语言(也在预览中)。针对任何发行版本的项目将使用C#7.3(最新发行版本)。这种现象意味着任何针对.NET Framework的项目都将使用最新版本(C#7.3)。

除此之外,还必须包含更多内容,因为句子“当您的项目不针对预览框架时,使用的语言版本是最新的次要版本。”对我来说,它应该至少使用7.2。除非“最新的次要版本”真的意味着给定目标框架的最新次要版本 ,否则在这种情况下,我希望在某个位置看到一个表,列出这些内容(例如2.1-> 7.1、2.2-> 7.3等)。

在完成所有上述操作后,我将<LangVersion>latest</LangVersion>添加到了csproj中,现在可以编译了。我一直觉得语言版本的默认值为“最新”,但是显然不是这种情况。

0 个答案:

没有答案