C# 编译器抛出语言版本 (LangVersion) 引用错误“无效的‘可空’值:

我有几个 .NET Standard 项目的解决方案,我想启用 c# 8 和 nullable,如下所示:

<PropertyGroup>
    <TargetFramework>netstandard2.1</TargetFramework>
    <LangVersion>8.0</LangVersion>
    <Nullable>enable</Nullable>
  </PropertyGroup>

注意:这些设置位于您的 .csproj 文件中。

问题是有些项目编译正常,有些有错误:

无效的“可空”值:C# 7.3 的“启用”。请使用“预览”或更高版本的语言

我有 Visual Studio 16.2 Preview 2 和 .NET Core 3 Preview 6。这是预览中的错误还是我做错了什么?


DIEA
浏览 439回答 5
5回答

慕森王

就我而言,当我将目标框架从 .NET Standard 2.1 更改为 .NET Standard 2.0 时,我在 Visual Studio 2022 中遇到了这个问题。我通过删除<Nullable>enable</Nullable>.csproj 文件并重新启动 Visual Studio 解决了我的问题。原始 .csproj 文件:<PropertyGroup>&nbsp; <TargetFramework>netstandard2.1</TargetFramework>&nbsp; <Nullable>enable</Nullable></PropertyGroup>新的 .csproj 文件:<PropertyGroup>&nbsp; <TargetFramework>netstandard2.0</TargetFramework></PropertyGroup>

largeQ

您应该<LangVersion>preview</LangVersion>按照错误消息的建议尝试。

潇湘沐

我有这样的错误“无效的‘可空’值:C# 7.3 的‘启用’。请使用‘8.0’或更高版本的语言”,我能够通过更改指定目标框架的顺序来解决它。<TargetFrameworks>net6.0;net48</TargetFrameworks>到<TargetFrameworks>net48;net6.0</TargetFrameworks>

喵喵时光机

为了解决这个问题,在 visual studio 中,右键单击您的项目文件,转到“属性”构建 --> 事件 --> 高级 --> 取消选中 Deterministic&nbsp;现在构建项目。

暮色呼如

当我不得不将编译时支持的 C# 语言版本从 11.0 降级到 7.0 时,我遇到了同样的问题。我解决了 .net 7.0 项目的问题,并且能够通过从“启用”到“禁用”的简单替换在 VS2022 中编译它。查看最终项目配置:<PropertyGroup>&nbsp; &nbsp;<TargetFramework>net7.0</TargetFramework>&nbsp; &nbsp;<ImplicitUsings>disable</ImplicitUsings>&nbsp; &nbsp;<Nullable>disable</Nullable>&nbsp; &nbsp;<LangVersion>7.0</LangVersion></PropertyGroup>
打开App,查看更多内容
随时随地看视频慕课网APP