我正在我的一个项目中使用代码生成工具(在本例中为实体框架(,它生成的代码会导致编译器发出警告。 我想忽略一组特定文件的警告。 我的第一个想法是,我也许能够设置一个ItemGroup
来为编译器设置每个文件的属性,语义上是这样的:
<ItemGroup>
<Files Include="Migrations/**/*.cs">
<Properties>
<DisabledWarnings>CS12345;CS4321</DisabledWarnings>
</Properties>
</Files>
</ItemGroup>
我认识到这不是有效的 MSBuild 语法,但它表达了我想做的本质。
这个问题似乎有些相关:对元数据值使用 Item 函数
有没有办法做到这一点?
不能使用 MSBuild 禁用每个文件的编译器警告。相反,您需要在代码中使用#pragma
语句。
例如,假设您希望禁用有关使用过时 API 的警告(生成警告 CS0618(。您可以像这样包围代码以禁止显示警告。
#pragma warning disable CS0618
public void Method()
{
new Class1().CallSomeObsoleteMessage();
}
#pragma warning restore CS0618
或者,您可以禁用整个项目的警告。
<PropertyGroup>
<NoWarn>$(NoWarn);CS0618</NoWarn>
</PropertyGroup>