微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

如果我定义可空性错误

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

我在 .csproj 内这样做,结果正如人们所期望的那样:

Nullability Errors Showing

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

No Errors Showing

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

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

解决方法

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

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

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

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

解决方案

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

最喜欢this similar issue

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。