Visual Studio .NET Framework项目中的可为null的引用类型不能与IntelliSense一起使用

bvjveswy  于 2023-02-24  发布在  .NET
关注(0)|答案(3)|浏览(239)

当我创建一个新的控制台应用程序(.NET Framework 4.8),并尝试使用C# 8的可空引用类型时,我看到以下内容:

而且,我在我的构建输出中得到这个警告:

warning CS8632: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

可以理解,我还没有启用可空引用类型,我在.csproj中添加了以下代码:

<Nullable>enable</Nullable>

这使得构建警告消失,但Visual Studio的智能感知不断抱怨
如何配置Visual Studio,使其了解我在.NET Framework项目中使用的是可空引用类型,而不是到处使用#nullable
相比之下,如果我创建一个新的.NET Core 3.0控制台应用程序,一切都按预期工作。

k4emjkb1

k4emjkb11#

如何配置Visual Studio,使其了解我在.NET Framework项目中使用的是可为空的引用类型,而不是到处使用#nullable?
恐怕答案是否定的,因为这可能是一个关于VS Intellisense的问题。
我发现msbuild(VS构建系统)可以在构建过程中很好地识别.net framework4.8项目中的C#8.0。但是Intellisense(VS的一个特性)不能,所以我报告了这个问题。如果有人对此问题感兴趣,请参阅Intellisense can't recognize C#8.0 in project that targets .net framework 4.8
该行为是Intellisense.net framework 4.8项目中使用C#8.0未向我们显示正确的消息。这是一个只能通过修复程序处理的问题。因此,除非在我们报告此问题后提供修复程序,否则没有有效的方法来解决Intellisense(VS功能)的此问题。我们可以使用Suppress or Configure CS8632's severity,但这是一个相当糟糕的主意。

cld4siwp

cld4siwp2#

尝试将vs2019更新到16.3.2,对我有效

dgiusagp

dgiusagp3#

我建议您将项目文件(.csproj)升级到.netstandard2.0
您必须通过修改. csproj来定位框架的多个版本。

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

您可能还需要参考Microsoft.NETCore.Portable.Compatibility软件包
通过添加到包引用:

<PackageReference Include="Microsoft.NETCore.Portable.Compatibility" Version="1.0.1" />

我建议您阅读下面的答案,以了解您是否真的需要它。When is it necessary to add the nuget package Microsoft.NETCore.Portable.Compatibility

相关问题