c# - .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 的项目。那么为什么它首先可以工作,我该怎么做才能让它在构建服务器上编译呢?
解决方案
.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 中被禁用,因为每个目标框架现在正式只支持单一语言版本。
推荐阅读
- sql - 同一列的最小值多次
- c# - 可以在没有 Microsoft 帐户的情况下获得免费 IAP 吗?
- ip - 将每个主机路由替换为 ipset+mark 和一个路由
- java - 在运行时更改选项卡布局中的选项卡中的片段
- openshift - Openshift 中 H2 数据库的 URL
- primefaces - primefaces - PickList - 默认情况下,所有值都应移动到目的地
- c# - WPF C# 使用资源以获得一致的外观
- java - 如何解决 InputStream LeftoverDataException:记录 0x85 的初始化剩余 18 个字节仍有待读取
- android - 如何测试 Firebase JobDispatcher Job(每天运行)
- python - Python 在一段时间后挂起,按下 [Enter] 后继续