Visual Studio 如果在 Directory.Build.props 中定义,可空性引用错误将显示为警告

Visual Studio nullability ref errors show as warnings if defined in Directory.Build.props

这可能只是一个临时的 VS 错误,但我想看看是否有人有任何修复,或者是否有我遗漏的 VS 设置。

如果我定义为空性错误:

<Nullable>enable</Nullable>
<WarningsAsErrors>nullable</WarningsAsErrors>

我在 .csproj 内这样做,结果如人们所料:

但是,如果属性是在 Directory.Build.props 文件中定义的,它适用于整体解决方案,则它们不再显示为错误:

它仍然阻止编译,您仍然可以在原始文本输出中看到错误。但是红色波浪线没有显示(只是绿色),更重要的是,错误列表窗格是空的。

有谁知道这是为什么,或者如何解决?我想通过 Directory.Build.props 整体定义可空性错误,但它在当前状态下不可用。

其实,automatic msbuild import function有两种方式:Directory.Build.propsDirectory.Build.targets.

在你这边,你应该使用Directory.Build.targets而不是Directory.Build.props

如文档所述,Directory.Build.props 被导入到 csproj 文件的顶部。因此,它应该用于定义在全局环境中使用的全局 msbuild 属性。并且其上定义的属性可以被csproj文件覆盖。

您的情况是 WarningsAsErrorscsproj 文件中的系统默认值 none 覆盖。尽管该值未显示在 csproj 文件中,但它实际上默认显示为 none。当您创建一个没有任何更改的新项目时,它总是显示为警告。

解决方案

因此,您应该将文件重命名为Directory.Build.targets,它总是用于覆盖任何操作属性,如WarningsAsErrors

最喜欢