在一个针对c#框架4.7.2的.NET项目中,由于Visual (16.3.3)的建议,我使一个本地函数保持静态。一切都做得很好。但是,当我在安装了Visual Studio build Tools (16.3.3)的CI构建服务器上使用它时,它抱怨道:
错误CS8652:特性“静态本地函数”目前处于预览状态,不受支持。若要使用预览功能,请使用“预览”语言版本。
我能发现的是静态本地函数是C# 8特性,而C# 8不能用于针对.NET框架4.7.2的项目。那么,为什么它一开始就工作,我如何使它在构建服务器上编译呢?
发布于 2019-10-11 05:07:44
C# 8.0的一些特性在.NET框架中是可用的,但并不是所有的特性都可用。如果您可以在本地编译,您的构建服务器也应该能够编译。但是请注意: C# 8.0只在实现.NET标准2.1的框架中得到官方支持( .NET标准永远不会支持)。因此,虽然它可能有效,但也可能存在问题。
不要再使用LangVersion preview了。C# 8.0与VS2019 16.3一起发布。使用LangVersion latest (或latestMajor或8.0)在默认情况下不支持它的项目中获得C# 8.0支持(参见C#语言版本化)。
为此,请确保csproj文件包含属性<LangVersion>latest</LangVersion>。为此,需要手动编辑csproj文件。更改语言版本的UI在VS2019 16.3中被禁用,因为每个目标框架现在正式只支持单一语言版本。
https://stackoverflow.com/questions/58326812
复制相似问题