我有几个 .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。这是预览版中的错误还是我做错了什么?
就我而言,当我将目标框架从 .NET Standard 2.1 更改为 .NET Standard 2.0 时,我在 Visual Studio 2022 中遇到了这个问题。我通过删除 .csproj 文件中的
<Nullable>enable</Nullable>
并重新启动 Visual Studio 解决了我的问题。
原始.csproj文件:
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<Nullable>enable</Nullable>
</PropertyGroup>
新的.csproj文件:
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<LangVersion>preview</LangVersion>
。
这里有一篇很棒的文章
...下面的导入代码片段全部归功于作者:然后在不支持的框架中隐藏警告消息:<PropertyGroup Condition=" $(Nullable) != 'enable' ">
<NoWarn>$(NoWarn);CS8632</NoWarn>
</PropertyGroup>
当我必须将 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>
为了解决这个问题,