【问题标题】:DLL mess in .NET, how to split one solution to multiple DLLs?.NET 中的 DLL 混乱,如何将一个解决方案拆分为多个 DLL?
【发布时间】:2009-04-27 15:27:13
【问题描述】:

我有一个包含 5-6 个项目的大型 VS.NET 项目,其中一个项目是 Core DLL。

现在要添加一些插件支持,我提取了一个接口,但是需要接口才能使用其他一些类,并且 Core.dll 需要该接口,因此我必须将它们分开。 (不能互相引用)

在这之后,我的一天被毁了,因为即使花了大约 4 个小时,我也无法将它们分开!最后,我创建了 20 多个项目,但仍然无法正常工作(实际上甚至没有关闭)。看起来我最终将完成 50 个项目,并且需要更改大量代码以使其正确。

我知道我的代码是高度耦合的,并且有点退缩。

我这样做对吗?现在我是否必须支付我的会费并因为我的高度耦合的代码而受苦?还是我错过了什么?

【问题讨论】:

  • 感谢您分享紧耦合带来的痛苦。
  • :) 我知道这会发生,但结果却比我想象的更糟。

标签: dll plugins projects-and-solutions coupling


【解决方案1】:

如果您使用接口,您应该能够将您的接口从核心 DLL 中提取出来,并且接口可以满足对该原始接口的任何要求,并且几乎没有痛苦。

如果您的接口具有高度耦合的依赖关系,您可能需要进行一些重构。尝试从主接口的依赖项中提取接口或基类(这很容易拉入新项目)。这应该有助于防止您现在遇到的循环依赖问题。

不过,总的来说,我会建议您在执行此操作之前先退后一步考虑一下您的项目。项目布局应该基于功能而不是依赖关系——如果你根据类的干净程度对它们进行分组,大多数依赖问题往往会自行清理。在您尝试提取之前,我真的会考虑重构它,以便获得最干净的布局。

【讨论】:

  • interfaces 实际上救了我,基本上我为每个依赖项创建了接口,并进行了更多的重构,使它们变得有意义并删除了其他依赖项。干杯。
【解决方案2】:

重构,重构,重构。你将不得不支付你的会费,但我认为这是值得的。你会学到很多东西。

【讨论】:

    【解决方案3】:

    您是否考虑过使用MEF

    【讨论】:

    • MEF 不太可能有太多用处,除非他能解决他的耦合问题。另外,我不确定他是否在处理 CLR - 这可能是本机代码。
    • 我同意,耦合问题需要解决,但一旦 MEF 可以用于处理插件......他确实说“大型 VS.NET 项目”,我猜它可能是本机代码
    【解决方案4】:

    您是否已经创建了依赖关系图? Graphviz dot 可以帮助可视化(和解释)问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      相关资源
      最近更新 更多