Я пытаюсь включить FxCop непосредственно в мою сборку. Я использую Задачи Сообщества MSBuild. У меня есть целевой файл, как это:
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<FxCopToolPath Condition="'$(FxCopToolPath)' == ''">$(MetaSharpLibPath)\FxCop</FxCopToolPath>
<FxCopCustomDictionary Condition="'$(FxCopCustomDictionary)' == ''">$(FxCopTooLPath)\CustomDictionary.xml</FxCopCustomDictionary>
<MSBuildCommunityTasksLib>..\MSBuild.Community.Tasks\MSBuild.Community.Tasks.dll</MSBuildCommunityTasksLib>
</PropertyGroup>
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.FxCop" />
<Target Name="AfterBuild" >
<ItemGroup>
<FxCopRuleAssemblies Include="DesignRules.dll" />
<FxCopRuleAssemblies Include="GlobalizationRules.dll" />
<FxCopRuleAssemblies Include="InteroperabilityRules.dll" />
<FxCopRuleAssemblies Include="MobilityRules.dll" />
<FxCopRuleAssemblies Include="NamingRules.dll" />
<FxCopRuleAssemblies Include="PerformanceRules.dll" />
<FxCopRuleAssemblies Include="PortabilityRules.dll" />
<FxCopRuleAssemblies Include="SecurityRules.dll" />
<FxCopRuleAssemblies Include="SecurityTransparencyRules.dll" />
<FxCopRuleAssemblies Include="UsageRules.dll" />
<FxCopTargetAssembly Include="@(MainAssembly)" />
</ItemGroup>
<FxCop
ToolPath="$(FxCopToolPath)"
CustomDictionary="$(FxCopCustomDictionary)"
RuleLibraries="@(FxCopRuleAssemblies)"
TargetAssemblies="@(FxCopTargetAssembly)"
DependencyDirectories="@(ReferencePath)"
FailOnError="True"
ConsoleXslFileName="$(FxCopToolPath)\Xml\VSConsoleOutput.xsl"
DirectOutputToConsole="true" />
</Target>
</Project>
Работает просто отлично, за исключением того, что, когда я добавляю предупреждения [SuppressMessage], они все еще отображаются в моем выводе. Я создал файл проекта .fxcop и включил выходную сборку и попытался запустить его таким образом, но происходит то же самое. Похоже, FxCop не уважает мои подавления, какие-либо идеи?
Вот пример подавления, которое не работает (GlobalSuppressions.cs):
[module: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "MetaSharp.Transformation.Lang")]
Который был сгенерирован инструментом fxcop. Есть идеи?