首页 > 解决方案 > .NET Framework 4.7.2 中的 C# 8 功能

问题描述

在针对 .NET Framework 4.7.2 的 ac# 项目中,我将本地函数设为静态,因为 Visual Studio (16.3.3) 建议使用它。一切都编译并运行良好。但是当我在安装了 Visual Studio 构建工具(16.3.3)的 CI 构建服务器上推送它时,它抱怨:

错误 CS8652:“静态本地函数”功能当前处于预览状态且不受支持。要使用预览功能,请使用“预览”语言版本。

我能弄清楚的是,静态本地函数是 C# 8 的一项功能,而 C# 8 不适用于面向 .NET Framework 4.7.2 的项目。那么为什么它首先可以工作,我该怎么做才能让它在构建服务器上编译呢?

标签: c#visual-studio-2019c#-8.0.net-4.7.2

解决方案


.NET Framework 中提供了 C# 8.0 的某些功能,但不是全部。如果您可以在本地编译,那么您的构建服务器也应该能够编译。但请注意:C# 8.0 仅在实现 .NET Standard 2.1 的框架上得到官方支持(.NET Framework 永远不会这样做)。因此,虽然它可能有效,但也可能存在问题。

不要再使用 LangVersionpreview了。C# 8.0 与 VS2019 16.3 一起发布。在默认情况下不支持 C# 8.0 的项目中使用 LangVersion latest(或latestMajor或)获得 C# 8.0 支持(请参阅C# 语言版本控制)。8.0

为此,请确保您的 csproj 文件包含 property <LangVersion>latest</LangVersion>。您需要手动编辑 csproj 文件来执行此操作。更改语言版本的 UI 在 VS2019 16.3 中被禁用,因为每个目标框架现在正式只支持单一语言版本。


推荐阅读