我在我的一个项目中使用了代码生成工具(在本例中为Entity Framework),它生成的代码会导致编译器发出警告。我想忽略一组特定文件的警告。我的第一个想法是,我可能能够设置ItemGroup
来为编译器设置每个文件的属性,这在语义上是这样的:
<ItemGroup>
<Files Include="Migrations/**/*.cs">
<Properties>
<DisabledWarnings>CS12345;CS4321</DisabledWarnings>
</Properties>
</Files>
</ItemGroup>
我认识到这不是有效的MSBuild语法,但它表达了我想要做的事情的本质。
这个问题似乎有点相关:Using Item functions on metadata values
有办法做到这一点吗?
答案 0 :(得分:1)
您无法使用MSBuild来禁用每个文件的编译器警告。相反,您需要在代码中使用#pragma
语句。
例如,假设您要禁用有关过时API使用的警告(构建警告CS0618)。您可以像这样包围代码以禁止警告。
#pragma warning disable CS0618
public void Method()
{
new Class1().CallSomeObsoleteMessage();
}
#pragma warning restore CS0618
或者,您可以禁用整个项目的警告。
<PropertyGroup>
<NoWarn>$(NoWarn);CS0618</NoWarn>
</PropertyGroup>