CodeAnalysisRuleSet无法与Directory.Build.props一起使用

时间:2019-06-03 07:25:29

标签: c# asp.net-core stylecop

当我使用Directory.Build.props文件来定义StyleCop分析器及其自定义全局规则集时,不会考虑第二个分析器。我的意思是在stylecop.json中定义的Directory.Build.props在全局范围内有效,但是loans.ruleset在总体上不起作用。

我尝试过的所有操作都与此repo有关。

当我将StyleCop.Analyzers软件包安装到单个项目中并包含loans.ruleset时,它对于WebAPI项目就可以正常工作(这可以通过提交cd1b1f253b4a4c来准确体现)。 然后,我尝试将它们移至ff8b017的全球办事处。结果是StyleCop可以工作,但规则集却不能。

以下概述:

    Directory: C:\Repos\LoansManagerRestApi


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       03.06.2019     08:50                LoansManager
d-----       03.06.2019     08:48                LoansManager.DAL
d-----       03.06.2019     08:48                LoansManager.Domain
d-----       03.06.2019     08:48                LoansManager.E2ETest
d-----       03.06.2019     08:48                LoansManager.Services
d-----       03.06.2019     08:48                LoansManager.UnitTest
d-----       03.06.2019     08:48                LoansManager.Util
-a----       02.06.2019     21:07           5912 .gitignore
-a----       03.06.2019     08:49            271 .stylecop.json
-a----       03.06.2019     08:57            338 Directory.Build.props
-a----       03.06.2019     08:51            348 loans.ruleset
-a----       02.06.2019     21:40           4208 LoansManager.sln
-a----       02.06.2019     21:07           1360 README.md

Directory.Build.props:

<Project>

  <PropertyGroup>
    <CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)loans.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="StyleCop.Analyzers" Version="1.1.118" />

    <AdditionalFiles Include="$(MSBuildThisFileDirectory).stylecop.json" />
  </ItemGroup>

</Project>

loans.ruleset:

<RuleSet Name="StyleCopRules" Description="These rules configure StyleCop." ToolsVersion="1.0">
  <Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers">
    <Rule Id="SA1101" Action="None" />
    <Rule Id="SA1633" Action="None" />
    <Rule Id="SA1600" Action="None" />
    <Rule Id="SA1615" Action="None" />
  </Rules>
</RuleSet>

总而言之,我需要帮助,以stylecop.json文件将loans.rulesetDirectory.Build.props规则全局应用于解决方案,而不是每个项目都分别配置它。

2 个答案:

答案 0 :(得分:0)

使用简单的stylecop.json文件导入包含StyleCop分析器依赖性及其设置(.rulesetDirectory.Build.props文件)的package

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <ItemGroup>
    <PackageReference Include="loans.stylecop" Version="1.0.0" />
  </ItemGroup>

</Project>

即使在VS EE 2019 v16.1.1中,此问题也可以按预期工作,但它并不是完美的解决方法,因为每个规则更改都需要对软件包项目进行版本控制,构建和发布,因此它仍然不能满足我的期望

答案 1 :(得分:0)

可以将其标记为已解决。

问题是解决方案中的每个*.csproj文件都是由xml PropertyGroups的VS行自动生成的:

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <CodeAnalysisRuleSet />
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <CodeAnalysisRuleSet />
  </PropertyGroup>

其阴影Directory.Build.props