如何在.NET Core应用程序之间共享代码分析规则集?

问题描述

我正在尝试在多个项目中共享规则集,无论我如何尝试,每个项目都在Dependencies> Analyzers中使用其自己的规则集。

我在解决方案的通用位置放置了一个规则集。然后,我编辑了每个项目文件以指向它:

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <CodeAnalysisRuleSet>..\..\..\..\Solution Items\Shared.Minimum.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>

我的项目似乎没有使用该规则集。如果我从项目的属性安装Microsoft.CodeAnalysis.FxCopAnalyzers,则将使用这些规则(它们位于Dependencies> Analyzers中)。如果我卸载Microsoft.CodeAnalysis.FxCopAnalyzers,则不会使用任何东西。

如何获取它,以便每个项目都使用共享规则集?是否为该项目安装Microsoft.CodeAnalysis.FxCopAnalyzers?我必须禁用“依赖关系”>“分析器”中的所有规则吗?我丢失了一些东西。

解决方法

如果我从项目的属性安装Microsoft.CodeAnalysis.FxCopAnalyzers,则将使用这些规则(它们位于Dependencies> Analyzers中)。如果我卸载Microsoft.CodeAnalysis.FxCopAnalyzers,则不会使用任何东西。

这就是FxCopAnalyzers的问题;他们注入自己的规则集,这些规则集可能会取代或干扰您自己的规则集。但是,可以手动禁用它们。

尝试这样的事情:

  <PropertyGroup>
    <CodeAnalysisRuleSet>$(SolutionDir)..\..\Code Analysis\<ruleset-name-here>.ruleset</CodeAnalysisRuleSet>
    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
  </PropertyGroup>

这将禁用内置规则集。这是我目前的雇主的标准做法。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...