Мне пришлось принять другой подход к решению этой проблемы. Я сделал следующее:
1) Удалено GlobalSuppressions.cs
(или, скорее, вырежьте его из проекта, но храните файл в другом месте, чтобы у меня были ссылки)
2) Посмотрелвверх PackageReference, который на момент написания был в последней версии следующим образом:
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
3) Создайте новый файл в каталоге решений с именем Rules.ruleset
(или любое другое имя, которое вы хотите), а затемвручную установите правила в этом файле из вашего старого GlobalSuppressions.cs
4) Используйте Directory.Build.props
со следующим содержимым, чтобы оно применялось к каждому проекту (обратите внимание, как здесь применяется материал из (2)),При предупреждении я устанавливаю ошибку, но вы, очевидно, можете удалить ее, если хотите
<Project>
<PropertyGroup>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<CodeAnalysisRuleSet>$(SolutionDir)Rules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
5) Самое главное , убедитесь, что все пустые <CodeAnalysisRuleSet></CodeAnalysisRuleSet>
или <CodeAnalysisRuleSet />
осталисьв любом из ваших файлов проекта. Если они присутствуют, во время написания он испортит анализ кода и будет предполагать, что все по умолчанию включено (что вы почти наверняка не хотите). Достаточно вырезать их из файла .csproj
После выполнения вышеизложенного все мои проекты теперь используют новейший анализ .NET StyleCop, и он автоматически применяется ко всем проектам в моем решении.
Заключительное примечание : будьте осторожны при этом, однажды он решил применить кучу исправлений стиля без моего разрешения и изменил тысячи файлов.
РЕДАКТИРОВАТЬ: Обратите внимание, что VS может бытьболь и начинает вставлять <CodeAnalysisRuleSet />
без причины даже при наличии Directory.Build.props. Я не уверен, почему это происходит или что это вызывает, но иногда мне приходится его удалять. Возможно, мне придется изменить его так, чтобы <CodeAnalysisRuleSet>$(SolutionDir)Rules.ruleset</CodeAnalysisRuleSet>
устанавливался вручную в каждом файле .csproj
, если он продолжает это делать. Посмотрим.