これらはMSBuildの警告であり、コンパイラやコード分析に関する警告ではありません。エラーリストに表示されない場合でも、Visual Studioの出力ウィンドウにエラーコード(例:MSB3268
)が表示されるはずです。
つまり、プラグマもSuppressMessage
属性もこれらのために機能しないため、これらを非表示にすることは簡単ではありません。 MSBuild ResolveAssemblyReference
タスクはこれらの警告を生成し、警告が生成されないように見えるように見えるプロパティを持っていますが、v4.0フレームワークを対象とするときには完全に機能しません。 (作業を行っても、を経由してインポートされたResolveAssemblyReferences
ターゲットをオーバーライドして、タスクのプロパティに値をプッシュする必要があります。長期的なメンテナンスの頭痛が加わります)。
実際にここで役立つことが1つあります.4.0フレームワークを対象とするときに参照を含めないでください。例えば(あなたの.csproj
ファイル内):
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
...
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkVersion)' != 'v4.0'">
<Reference Include="Microsoft.Experimental.IdentityModel.Clients.ActiveDirectory, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Experimental.IdentityModel.Clients.ActiveDirectory.4.0.209160138-alpha\lib\net45\Microsoft.Experimental.IdentityModel.Clients.ActiveDirectory.dll</HintPath>
<Private>True</Private>
</Reference>
...
</ItemGroup>
重要なビットは、ターゲットフレームワークが4.0でない場合にのみ、グループ内の参照を含めることのMSBuildを指示二ItemGroup
上の条件、です。
このアプローチはあなたの意図に非常によく似ているので、(たとえ可能であったとしても)警告を抑制することが望ましいと思われます。しかし、ちょっとした面倒があります。IDEは直接参照されているアセンブリのそれぞれについて、「参照されたコンポーネントが見つかりませんでした」という警告を生成し、これを防ぐために何もできないように見えます。一方、直接参照される除外アセンブリごとに1つの警告は、直接参照アセンブリのそれぞれによって参照される各フレームワークアセンブリに対して1つの警告よりもかなり優れています。