我有以下情况。我们正在开发一个多层应用程序,所以我为每个图层制作了不同的程序集。让我们称他们为Top,Middle和Base。他们依赖于:.net程序集依赖关系链
Top-> Middle-> Base,因为Top使用来自中部和中部的基部。
现在我们将有一个secong Applikation Top2,它只需要来自Middle的一些不使用Base的任何类。
有没有办法,在Top2的部署中不包含Base?
当试图编译时,VS告诉我我还需要对汇编库的引用。
最佳 托马斯
我有以下情况。我们正在开发一个多层应用程序,所以我为每个图层制作了不同的程序集。让我们称他们为Top,Middle和Base。他们依赖于:.net程序集依赖关系链
Top-> Middle-> Base,因为Top使用来自中部和中部的基部。
现在我们将有一个secong Applikation Top2,它只需要来自Middle的一些不使用Base的任何类。
有没有办法,在Top2的部署中不包含Base?
当试图编译时,VS告诉我我还需要对汇编库的引用。
最佳 托马斯
听起来像“中”是有点大了它的靴子。
程序集不应该引用它不需要的任何东西。所以,你的情况听起来像是分解组件的好选择。
当前
Application One -> "Middle.dll" -> "Base.dll"
您的提案
Application One -> "Middle.dll" -> "Base.dll"
Application Two -> "Middle.dll" -> "(Redundant) Base.dll"
这是出现在一些非常常用的对象基本上是与业务逻辑集中unneccesserily一个典型的问题。也就是说,您可能在Middle.dll中有对应用程序有用的实用程序类,但它们并不真正需要在那里。你可能会更好与单独的公用事业DLL。
建议
Application One -> "Middle1.dll" -> "Base.dll"
-> "Middle2.dll"
Application Two -> "Middle2.dll"
所有这一切都需要使用Base.dll,目前存在于Middle.dll的功能,应移至Middle1.dll。这样,如果你只需要使用非依赖代码,你可以参考Middle2.dll
它可能是一个大的重构,取决于你的代码库,但后来在线上,你会感激它!
好处这个
注:很显然,我不是建议你应该叫他们Middle1和Middle2。但你明白了。
谢谢,幸运的是,我们的项目还很年轻,所以重构是非常重要的。现在一切都很好。解决方案是将所有没有外部引用的数据类放入一个程序集中。 – Thomas
当然,把中间分成两部分! – KingCronus
您的意思是,Middle-1使用Base和Middle-2的Middle-Middle和Middle-2,但Middle-2不使用Base? – Thomas
是的。我会在答案中详细说明。 – KingCronus