当我创建一个新的控制台应用程序(.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控制台应用程序,一切都按预期工作。
3条答案
按热度按时间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
,但这是一个相当糟糕的主意。cld4siwp2#
尝试将vs2019更新到16.3.2,对我有效
dgiusagp3#
我建议您将项目文件(.csproj)升级到.netstandard2.0
您必须通过修改. csproj来定位框架的多个版本。
您可能还需要参考Microsoft.NETCore.Portable.Compatibility软件包
通过添加到包引用:
我建议您阅读下面的答案,以了解您是否真的需要它。When is it necessary to add the nuget package Microsoft.NETCore.Portable.Compatibility