根据元数据在Build目标输入项上设置MSBuild属性

时间:2017-02-12 06:40:45

标签: msbuild

我在我的一个项目中使用了代码生成工具(在本例中为Entity Framework),它生成的代码会导致编译器发出警告。我想忽略一组特定文件的警告。我的第一个想法是,我可能能够设置ItemGroup来为编译器设置每个文件的属性,这在语义上是这样的:

<ItemGroup>
    <Files Include="Migrations/**/*.cs">
        <Properties>
            <DisabledWarnings>CS12345;CS4321</DisabledWarnings>
        </Properties>
    </Files>
</ItemGroup>

我认识到这不是有效的MSBuild语法,但它表达了我想要做的事情的本质。

这个问题似乎有点相关:Using Item functions on metadata values

有办法做到这一点吗?

1 个答案:

答案 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>