当我使用Directory.Build.props
文件来定义StyleCop分析器及其自定义全局规则集时,不会考虑第二个分析器。我的意思是在stylecop.json
中定义的Directory.Build.props
在全局范围内有效,但是loans.ruleset
在总体上不起作用。
我尝试过的所有操作都与此repo有关。
当我将StyleCop.Analyzers
软件包安装到单个项目中并包含loans.ruleset
时,它对于WebAPI项目就可以正常工作(这可以通过提交cd1b1f2和53b4a4c来准确体现)。
然后,我尝试将它们移至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.ruleset
和Directory.Build.props
规则全局应用于解决方案,而不是每个项目都分别配置它。
答案 0 :(得分:0)
使用简单的stylecop.json
文件导入包含StyleCop分析器依赖性及其设置(.ruleset
和Directory.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
。