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.props
和Directory.Build.targets
.
在你这边,你应该使用Directory.Build.targets
而不是Directory.Build.props
。
如文档所述,Directory.Build.props
被导入到 csproj
文件的顶部。因此,它应该用于定义在全局环境中使用的全局 msbuild 属性。并且其上定义的属性可以被csproj
文件覆盖。
您的情况是 WarningsAsErrors
被 csproj
文件中的系统默认值 none
覆盖。尽管该值未显示在 csproj 文件中,但它实际上默认显示为 none
。当您创建一个没有任何更改的新项目时,它总是显示为警告。
解决方案
因此,您应该将文件重命名为Directory.Build.targets
,它总是用于覆盖任何操作属性,如WarningsAsErrors
。
最喜欢。
这可能只是一个临时的 VS 错误,但我想看看是否有人有任何修复,或者是否有我遗漏的 VS 设置。
如果我定义为空性错误:
<Nullable>enable</Nullable>
<WarningsAsErrors>nullable</WarningsAsErrors>
我在 .csproj
内这样做,结果如人们所料:
但是,如果属性是在 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
被 csproj
文件中的系统默认值 none
覆盖。尽管该值未显示在 csproj 文件中,但它实际上默认显示为 none
。当您创建一个没有任何更改的新项目时,它总是显示为警告。
解决方案
因此,您应该将文件重命名为Directory.Build.targets
,它总是用于覆盖任何操作属性,如WarningsAsErrors
。
最喜欢