在“基于元数据生成目标输入项”上设置 MSBuild 属性



我正在我的一个项目中使用代码生成工具(在本例中为实体框架(,它生成的代码会导致编译器发出警告。 我想忽略一组特定文件的警告。 我的第一个想法是,我也许能够设置一个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>

最新更新