如何在csproj中覆盖dotnet build命令行的TreatWarningsAsErrors设置?
解决命令行TreatWarningsAsErrors覆盖项目文件设置的问题
命令行传递的MSBuild全局属性优先级高于项目文件中的默认配置,所以直接在B.csproj里设置<TreatWarningsAsErrors>false</TreatWarningsAsErrors>会被命令行参数覆盖。要在项目文件中强制覆盖命令行的设置,可以通过添加自定义Target实现:
在B.csproj中插入以下配置:
<Target Name="OverrideTreatWarningsAsErrors" BeforeTargets="CoreCompile"> <PropertyGroup> <TreatWarningsAsErrors>false</TreatWarningsAsErrors> </PropertyGroup> </Target>
这个Target会在项目编译的CoreCompile阶段之前执行,强制将TreatWarningsAsErrors设为false,从而覆盖命令行传递的全局设置。这样B项目的警告不会被视为错误,而A项目依然遵循命令行设置将警告转为错误。
如果只是想忽略特定警告而非全部关闭警告转错误,可以在项目文件中添加<NoWarn>配置,比如:
<PropertyGroup> <NoWarn>$(NoWarn);CA1822;CA1821</NoWarn> </PropertyGroup>
这会将指定的警告ID加入忽略列表,即便命令行开启了警告转错误,这些警告也不会导致构建失败。
内容的提问来源于stack exchange,提问作者Sirius
相关产品推荐
相关产品推荐

