2017-02-12 4 views
3

私のプロジェクトの1つにコード生成ツール(この場合はEntity Framework)を使用しており、コンパイラが警告を発行するコードを生成します。私はファイルの特定のセットの警告を無視したいと思います。私はこれが有効なMSBuildの構文ではありませんが、それが発現していることを認識メタデータに基づいてビルドターゲット入力項目のMSBuildプロパティを設定します

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

:私の最初の考えは、私はコンパイラごとのファイルのプロパティを設定するItemGroupを設定することができるかもしれないことを意味的にこのようなものでした私がしたいことの本質。

この質問

は多少関連思わ:これを行う方法は Using Item functions on metadata values

ありますか?

+0

これは、C++の場合に使用するmsbuild構文です(FilesはClCompile、DisabledWarningsではなくDisableSpecificWarningsです)。 Unfrotunatelyあなたのために、C#のCscタスクにファイルごとのコンパイルオプションを渡すことは可能ではないと思います。回避策として、カスタムビルド前のカスタムステップでこれらのファイルを別々にコンパイルするか、別々のプロジェクトに移動することができます。または、C#の知識が豊富な誰かが、ファイルごとのオプションを渡す方法を知っていることを願ってください。 – stijn

答えて

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> 
関連する問題