首页 > 解决方案 > 在 Visual Studio 中,“目标框架”和高级构建设置“语言版本”有什么区别?

问题描述

在 Visual Studio(我目前使用 2017)中,您可以选择一个目标框架。

目标框架

但您也可以在 Advanced Build Settings -> Language version 中选择语言设置:

在此处输入图像描述

我可以将目标框架设置为 4.7,将语言版本设置为4.7.2 和将目标框架设置为4.7.2一样吗?有什么区别?

标签: .netvisual-studio

解决方案


.NET 框架具有与 C# 语言不同的版本历史记录。例如,框架定义了类库中存在哪些类。

C# 语言版本定义了可供您使用的语法。例如,在第二版中,语言得到了泛型,在 3.0 中,我们得到了Linq,等等。没有语言版本 4.7.2,即最近的 .NET 框架的版本名称。如果您从语言版本下拉列表中选择,您应该能够看到例如 3.0、4.0、5.0、6.0、7.0、7.1、7.2 和 7.3(最新)。

https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history

所谓的“完整”.NET 框架的通用框架版本是

4.0、4.5、4.5.1、4.5.2、4.6、4.6.1、4.6.2、4.7、4.7.1、4.7.2。

https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/versions-and-dependencies

您可以说语言版本仅适用于编译时。目标框架决定应用程序的使用者需要什么框架。如果您以框架 4.6 为目标,那么消费者至少需要拥有该框架。

请注意,诸如 .NET 核心/标准之类的概念会在某种程度上混淆框架的选择,但我认为这超出了问题的范围。


推荐阅读