问题描述
这可能只是一个临时的 VS 错误,但我想看看是否有人修复了任何问题,或者是否有我遗漏的 VS 设置。
如果我定义可空性错误:
<Nullable>enable</Nullable>
<WarningsAsErrors>nullable</WarningsAsErrors>
但是,如果属性是在适用于整体解决方案的 Directory.Build.props
文件中定义的,则它们不再显示为错误:
它仍然阻止编译,您仍然可以在原始文本输出中看到错误..但红色波浪线没有显示(只是绿色),更重要的是,错误列表窗格是空的。
有谁知道这是为什么,或者如何解决?我想通过 Directory.Build.props
整体定义可空性错误,但它在当前状态下无法使用。
解决方法
实际上,automatic msbuild import function 有两种方式:Directory.Build.props
和 Directory.Build.targets
。
在你这边,你应该使用 Directory.Build.targets
而不是 Directory.Build.props
。
正如文档所说,Directory.Build.props
是在 csproj
文件的顶部导入的。所以它应该用于定义在全局环境中使用的全局 msbuild 属性。并且在其上定义的属性可以被 csproj
文件覆盖。
您的情况是 WarningsAsErrors
被 none
文件中的系统默认值 csproj
覆盖。尽管该值未显示在 csproj 文件中,但它实际上默认显示为 none
。当您创建一个没有任何更改的新项目时,它始终显示为警告。
解决方案
因此,您应该将文件重命名为 Directory.Build.targets
,它始终用于覆盖任何操作属性,例如 WarningsAsErrors
。