MSBuild的NoWarn属性中无前缀数字的默认解析规则是什么?
问题
给定如下项目文件:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> <NoWarn>75</NoWarn> </PropertyGroup> </Project>
请问MSBuild会如何解析其中的75?有两种猜想:
- 默认视为C#编译器警告
- 根据项目语言自动匹配对应语言的警告(如CS0075、FS0075或BC0075)
相关文档未明确说明,特此求证。
回答
MSBuild会根据项目语言自动匹配对应前缀的警告码,即第二种猜想成立。
具体行为如下:
- 若为C#项目,
75会被解析为CS0075 - 若为F#项目,会被解析为
FS0075 - 若为VB.NET项目,则会被解析为
BC0075
.NET SDK的目标会依据项目类型(通过项目文件后缀或SDK隐含的语言属性),自动为NoWarn中的纯数字警告码补充对应语言的前缀,并非默认绑定C#警告。
内容的提问来源于stack exchange,提问作者psfinaki
相关产品推荐
相关产品推荐

