.NET中的DLL乱七八糟,如何将一个解决方案拆分为多个DLL?

时间:2009-04-27 15:27:14

标签: dll plugins projects-and-solutions coupling

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

现在添加一些插件支持我提取了一个接口,但是接口需要使用其他类,而Core.dll需要接口,所以我不得不将它们分开。 (我不能互相引用)

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

我意识到我的代码是高度耦合的,然后又回来了。

我这样做了吗?现在,由于我的高度耦合代码,我必须支付我的会费吗?或者我错过了什么?

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

如果您使用接口,那么您应该能够将接口从核心DLL中拉出来,并且可以轻松接口以满足原始接口上的任何要求。

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

但总的来说,在你做这件事之前,我会先退一步思考一下你的项目。项目布局应该基于功能而不是依赖 - 如果你根据他们干净利落的方式对你的类进行分组,大多数依赖性问题都会使自己清理干净。在尝试提取之前,我真的会考虑重构,以便获得最干净的布局。

答案 2 :(得分:1)

您是否考虑过使用MEF

答案 3 :(得分:0)

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