1

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

如果我定义可空性错误:

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

我在 a 内这样做.csproj,结果如预期的那样: 可空性错误显示

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

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

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

4

1 回答 1

1

实际上自动 msbuild 导入功能有两种方式:Directory.Build.propsDirectory.Build.targets.

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

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

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

解决方案

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

大多喜欢这个类似的问题

于 2021-02-08T07:56:01.257 回答