启用可空类型没有区别

Enabling nullable types makes no difference

我在启用不可为 null 的引用类型时遇到了一些问题。不确定这是一个实际问题,还是我没有跟上最新的命名/设置。

这是我当前的设置(使用 VS Code):

Dotnet version: 3.0.100-preview6-012264
Omnisharp: 1.20.0

我注意到启用 nullable 的标志已更改多次,但正如我在文档和互联网上看到的那样,最新的似乎是 <Nullable/> 我在所有项目中都启用了它(显示的两个主要 Web 项目下面和我的 .NET Standard 2.0 class libs):

<Project Sdk="Microsoft.NET.Sdk.Web">

  ...

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <LangVersion>8.0</LangVersion>
    <Nullable>enable</Nullable>
    <WarningsAsErrors>CS8600;CS8602;CS8603</WarningsAsErrors>
  </PropertyGroup>

</Project>

如果我在正在测试的文件中使用 #nullable enable,我会看到 IntelliSense 直接切换到正确的警报。在文件中添加它也会使构建失败(这是我正在寻找的行为)。

我在这里缺少什么才能在项目级别上运行它?

总结以上讨论:

这个命名目前在 omnisharp(vs 代码)和使用 Visual Studio 之间似乎不同。因此,指定 <Nullable> 的 MS 文档不适用。对于 omnisharp / vs 代码,需要改用 <NullableContextOptions>enable</NullableContextOptions>(直到更新 omnisharp)。