为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
DIEA 2023-04-16 10:13:19
我有几个 .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。这是预览中的错误还是我做错了什么?
查看完整描述

5 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

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


原始 .csproj 文件:


<PropertyGroup>

  <TargetFramework>netstandard2.1</TargetFramework>

  <Nullable>enable</Nullable>

</PropertyGroup>

新的 .csproj 文件:


<PropertyGroup>

  <TargetFramework>netstandard2.0</TargetFramework>

</PropertyGroup>


查看完整回答
反对 回复 2023-04-16
?
largeQ

TA贡献2039条经验 获得超7个赞

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



查看完整回答
反对 回复 2023-04-16
?
潇湘沐

TA贡献1816条经验 获得超6个赞

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

<TargetFrameworks>net6.0;net48</TargetFrameworks>

<TargetFrameworks>net48;net6.0</TargetFrameworks>


查看完整回答
反对 回复 2023-04-16
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

为了解决这个问题,

  1. 在 visual studio 中,右键单击您的项目文件,转到“属性”

  2. 构建 --> 事件 --> 高级 --> 取消选中 Deterministic 

现在构建项目。


查看完整回答
反对 回复 2023-04-16
?
暮色呼如

TA贡献1853条经验 获得超9个赞

当我不得不将编译时支持的 C# 语言版本从 11.0 降级到 7.0 时,我遇到了同样的问题。我解决了 .net 7.0 项目的问题,并且能够通过从“启用”到“禁用”的简单替换在 VS2022 中编译它。


查看最终项目配置:


<PropertyGroup>

   <TargetFramework>net7.0</TargetFramework>

   <ImplicitUsings>disable</ImplicitUsings>

   <Nullable>disable</Nullable>

   <LangVersion>7.0</LangVersion>

</PropertyGroup>


查看完整回答
反对 回复 2023-04-16
  • 5 回答
  • 0 关注
  • 438 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信