多解决方案仓库依赖规则配置求助:NsDepCop问题及其他方案咨询
程序集依赖规则检测方案
先解决NsDepCop的配置问题
你遇到的config.NSDepCop不被Visual Studio识别的问题,只需调整文件的生成操作即可:
- 在Visual Studio中右键点击
config.NSDepCop文件,选择属性 - 在高级区域,将生成操作修改为
C# analyzer additional file - 保存后重新构建解决方案,NsDepCop就能读取配置执行依赖检查
以下是满足你需求的核心配置示例(禁止所有.ABC.程序集依赖.XYZ.程序集):
{ "AllowedDependencies": [], "ForbiddenDependencies": [ { "From": "*ABC*", "To": "*XYZ*" } ], "AnalyzedAssemblies": ["*"] }
其他可选方案
自定义Roslyn分析器
如果需要更灵活的规则定制,可编写自定义Roslyn分析器:
- 创建.NET Standard类库项目,引用
Microsoft.CodeAnalysis.Analyzers和Microsoft.CodeAnalysis.CSharpNuGet包 - 编写分析逻辑,扫描程序集引用关系,检测
.ABC.到.XYZ.的违规依赖 - 将分析器打包为NuGet包,在所有目标项目中引用,编译时自动执行检查
- 优势:完全自定义,CI环境只需正常编译即可触发检测,无需额外工具
NDepend
NDepend是专门的代码分析与依赖管理工具:
- 导入解决方案后,在规则编辑器中创建规则:
WARN IF ASSEMBLIES MATCHING "*.ABC.*" DEPEND ON ASSEMBLIES MATCHING "*.XYZ.*" - 支持Visual Studio实时检测,也可集成到CI流水线(如Azure DevOps、GitHub Actions),生成报告或终止违规构建
- 优势:可视化依赖图谱,附带大量额外代码质量规则
ReSharper静态代码分析
若团队已使用ReSharper:
- 打开ReSharper > Options > Code Inspection > Custom Patterns
- 创建匹配
.ABC.程序集引用.XYZ.程序集的自定义模式 - 设置错误级别为“错误”,编写代码或构建时会触发告警/错误
- 注意:IDE中默认运行检查,CI环境需使用
dotnet jb inspectcode命令行工具执行
.NET原生分析器(原FxCop)
FxCop已整合到.NET原生分析器体系:
- 创建自定义分析器项目,流程与Roslyn分析器类似
- 编写规则检测程序集引用关系,标记违规依赖
- 集成到项目后,编译阶段自动检测,CI环境无需额外配置
内容的提问来源于stack exchange,提问作者Swati Dayal
相关产品推荐
相关产品推荐

