如何在给定命名空间中找到类型集的所有传递依赖项?例如,假设我有4个组件:A,B,C,D。所述4个组件具有以下参考:
A - > B
B - > C
C - > d
所以A - > D.现在我想知道A.
所需的名称空间“NS”中的所有类型“T”我尝试了几种技巧:
ReSharper:我无法确定 T (需要的类型)。我只找到 D (程序集)。
删除 D 。构建A.查看错误以手动定位D.NS.T。缓慢且容易出错。
对于D.NS(具有给定命名空间的程序集),为我提供A。所需的所有T(类型)。具体而言,“在程序集MyDatabaseAssembly中为我提供属于Company.Domain的A所需的所有类型”。
我该怎么做?我对其他工具持开放态度。但是,我已经拥有了ReSharper和2013年的视觉工作室专业版。
答案 0 :(得分:0)
如果可以列出程序集A的名称空间,那么NsDepCop可以执行此操作。它是一个免费的开源工具,可以检查命名空间依赖性是否符合您的规则。
因此,如果程序集A的名称空间是A1,A2等(包含任何子名称空间),并且您不希望它们引用的名称空间是Company.Domain(以及任何子名称空间),那么NsDepCop规则配置看起来像这样。
<NsDepCopConfig IsEnabled="True" CodeIssueKind="Warning">
<Allowed From="*" To="*" />
<Disallowed From="A1.*" To="Company.Domain.*" />
<Disallowed From="A2.*" To="Company.Domain.*" />
...
</NsDepCopConfig>
构建解决方案并将所有依赖项违规报告为警告,以便您可以重构直到达到零警告。