Mar*_*ker 5 c# c#-8.0 .net-4.7.2 visual-studio-2019
在面向 .NET Framework 4.7.2 的 ac# 项目中,我将本地函数设为静态,因为 Visual Studio (16.3.3) 建议这样做。一切都编译并运行良好。但是当我在安装了 Visual Studio Build Tools (16.3.3) 的 CI 构建服务器上推送它时,它抱怨:
错误 CS8652:“静态本地函数”功能当前处于预览状态且不受支持。要使用预览功能,请使用“预览”语言版本。
我能弄清楚的是,静态本地函数是 C# 8 的一项功能,而 C# 8 不适用于面向 .NET Framework 4.7.2 的项目。那么为什么它首先起作用,我该怎么做才能让它在构建服务器上编译?
cre*_*mor 12
C# 8.0 的一些功能在 .NET Framework 中可用,但不是全部。如果您可以在本地编译,那么您的构建服务器也应该能够编译。但请注意:只有实现 .NET Standard 2.1 的框架才正式支持 C# 8.0(.NET Framework 永远不会这样做)。因此,虽然它可能有效,但也可能存在问题。
不要再使用 LangVersion preview。C# 8.0 随 VS2019 16.3 一起发布。在默认情况下不支持 C# 8.0 的项目中,使用 LangVersion latest(或latestMajor或8.0)获得 C# 8.0 支持(请参阅C# 语言版本控制)。
为此,请确保您的 csproj 文件包含属性<LangVersion>latest</LangVersion>. 您需要手动编辑 csproj 文件才能执行此操作。用于更改语言版本的 UI 在 VS2019 16.3 中被禁用,因为每个目标框架现在正式仅支持单一语言版本。