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

C# 每个目标框架的C语言默认版本?,c#,.net-core,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

我有一个C#项目,它指定了目标框架,但没有指定语言版本。是否有任何文档指定将为任何给定的目标框架版本选择什么语言版本?如果目标框架较低,使用中的SDK版本是否也很重要?例如,在我的例子中,我使用的是.NET Core SDK 2.2,但项目的目标是netcoreapp2.1,我是否会获得与使用针对netcoreapp2.1的SDK 2.1相同的语言版本?我目前收到一个编译错误,该错误表示“请使用语言版本7.2或更高版本以允许…”,因此我得出结论1)默认版本低于7.2,2)工具支持或至少知道7.2

我发现:

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等)


写了以上所有内容后,我将
最新的
添加到我的csproj中,现在它可以编译了。我的印象是语言版本的默认值是“最新的”,但显然不是这样。

关于这一点,我不认为这是OP的要求。看起来OP询问的是语言版本与框架版本。我从链接到的Q/A Codexer了解到,如果未指定默认语言版本,则是最新的主要版本(例如7.0),而不是最新的次要版本。这反映了我看到的行为。所以这很有帮助。除非我真的读错了,否则我上面引用的Microsoft页面是不正确的,因为它说它使用的是最新的次要版本。但我要找的是一些文档,这些文档告诉我SDK版本X和目标框架Y的每个组合,如果:A)我根本没有指定LangVersion,B)我指定LangVersion为“默认”,C)我指定LangVersion为“最新”。描述每个版本中的语言版本,但没有说明这是“默认”还是“最新”。