启用可空类型没有区别

时间:2019-06-28 17:27:54

标签: c# visual-studio-code c#-8.0 nullablereferencetypes

启用非空引用类型时遇到一些问题。不知道这是一个实际的问题,还是不是我跟不上最新的命名/设置。

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

Dotnet version: 3.0.100-preview6-012264
Omnisharp: 1.20.0

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

<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会直接切换到正确的警报。将其添加到文件中也会使构建失败(这是我要寻找的行为)。

要在项目级别进行此工作,我在这里想念什么?

1 个答案:

答案 0 :(得分:1)

总结上面的讨论:

当前的命名在omnisharp(与代码)之间有所不同,并且在使用Visual Studio时似乎有所不同。因此,指定<Nullable>的MS文档不适用。对于omnisharp / vs代码,需要改用<NullableContextOptions>enable</NullableContextOptions>(直到omnisharp已更新)。