【问题标题】:Locate transitive dependencies for a given namespace in a single assembly在单个程序集中找到给定命名空间的传递依赖项
【发布时间】:2015-01-22 17:38:31
【问题描述】:

如何定位给定命名空间中一组类型的所有传递依赖项?例如,假设我有 4 个程序集:A、B、C、D。说 4 个程序集具有以下引用:

A -> B
B -> C
C -> D

所以 A -> D。现在我想知道 A 所需的命名空间“NS”中的所有类型“T”。

我尝试了几种技术:

  1. ReSharper:我无法确定 T(需要的类型)。我只找到了 D (程序集)。

  2. 删除 D。构建 A。查看错误以手动定位 D.NS.T。速度慢且容易出错。

对于 D.NS(具有给定命名空间的程序集),请给我 A 所需的所有 T(类型)。。具体来说,“在程序集 MyDatabaseAssembly 中,给我属于 Company.Domain 的 A 所需的所有类型”。

我该怎么做?我对其他工具持开放态度。但是,我已经拥有 ReSharper 和 Visual Studio Pro 2013。

【问题讨论】:

  • 我猜 NDepend 可以做到这一点

标签: c# .net visual-studio-2013 resharper


【解决方案1】:

如果您可以列出程序集 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>

构建解决方案,所有依赖项违规都将报告为警告,因此您可以重构直到达到零警告。

【讨论】:

    猜你喜欢
    • 2021-09-29
    • 2023-03-20
    • 1970-01-01
    • 2023-03-25
    • 2014-04-25
    • 1970-01-01
    • 2019-10-14
    • 2018-07-31
    • 2018-01-04
    相关资源
    最近更新 更多