JetBrains Rider构建时未忽略自动生成迁移文件的StyleCop检查
解决Rider中迁移文件下划线触发StyleCop CA1707错误的问题
问题场景
- 环境:MacOS Monterey、JetBrains Rider 2022.2.1、.NET 6.0.6
- 现象:EF迁移文件类型名包含下划线(如
Dep_ExcludeTotalCapacityInParent),触发StyleCop的CA1707规则(要求移除类型名中的下划线),导致Rider构建失败;但使用dotnet run或dotnet build终端命令可正常构建运行。 - 已尝试无效操作:
- 在迁移文件夹添加
.editorconfig并设置generated_code = true - 在Rider检查设置中将Migrations文件夹加入“跳过元素”或“生成代码”区域
- 在迁移文件夹添加
可行解决方案
1. 精准配置.editorconfig禁用CA1707规则
在Migrations文件夹的.editorconfig中添加StyleCop专属配置,确保规则被忽略:
[*.cs] # 直接禁用CA1707规则 dotnet_diagnostic.CA1707.severity = none # 标记为生成代码,增强兼容性 generated_code = true stylecop.generated_code = true
保存后重启Rider或重新加载解决方案,让配置生效。
2. 在StyleCop规则集中排除迁移文件路径
编辑项目的StyleCop规则集文件(通常是*.ruleset),针对Migrations文件夹排除CA1707规则:
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers.NamingRules"> <Rule Id="CA1707" Action="None"> <Properties> <Property Name="ExcludedPaths" Value="**/Migrations/*.cs"/> </Properties> </Rule> </Rules>
这种方式直接从规则层面指定忽略路径,不受编辑器配置影响。
3. 给迁移类添加GeneratedCode特性
在迁移文件的类上方添加[GeneratedCode]特性,明确标记为自动生成代码:
using System.CodeDom.Compiler; using Microsoft.EntityFrameworkCore.Migrations; [GeneratedCode("EF Core Migrations", "6.0.6")] public partial class Dep_ExcludeTotalCapacityInParent : Migration { // 迁移代码... }
StyleCop会识别该特性并跳过对该类的命名规则检查。
为什么之前的方法无效?
- 通用的
generated_code = true可能未被StyleCop分析器正确识别,需要添加StyleCop专属的stylecop.generated_code = true配置 - Rider的“跳过元素”设置可能仅影响IDE的实时检查,不参与构建阶段的规则验证
- 终端
dotnet build默认可能未启用StyleCop的强制错误检查,仅Rider的集成分析严格执行了规则
内容的提问来源于stack exchange,提问作者Alex Pab
相关产品推荐
相关产品推荐

