gpt4 book ai didi

.NET Framework 4.7.2 中的 C# 8 功能

转载 作者:太空宇宙 更新时间:2023-11-03 22:30:08 26 4
gpt4 key购买 nike

在一个以 .NET Framework 4.7.2 为目标的 c# 项目中,我将本地函数设为静态,因为 Visual Studio (16.3.3) 建议这样做。一切都编译并运行良好。但是当我在安装了 Visual Studio Build Tools (16.3.3) 的 CI 构建服务器上推送它时,它会提示:

error CS8652: The feature 'static local functions' is currently in Preview and unsupported. To use Preview features, use the 'preview' language version.

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

最佳答案

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

不要使用 LangVersion preview任何更多。 C# 8.0 随 VS2019 16.3 一起发布。使用 LangVersion latest (或 latestMajor8.0 )在默认情况下不支持 C# 8.0 的项目中获得支持(请参阅 C# language versioning )。

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

后期编辑:如果您想使用目标框架不支持的 C# 语言功能,您可以检查 NuGet 包 PolySharp包括它。 PolySharp 支持使用许多较新的 C# 功能,否则这些功能在旧框架中不可用。

关于.NET Framework 4.7.2 中的 C# 8 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58326812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com