我有以下情况。我们正在考虑多层应用程序,因此我为每个层制作了不同的程序集。让我们称他们为Top,Middle和Base。他们喜欢:
Top-> Middle-> Base,因为Top使用来自中间和中间的clases。
现在我们将拥有一个非常适合的应用程序Top2,它只需要来自Middle的一些不使用Base的任何类。
有没有办法,在Top2的部署中不包括Base?
当试图编译时,VS告诉我,我还需要对程序集Base的引用。
最佳托马斯
答案 0 :(得分:1)
听起来像“中间”的靴子有点大。
程序集不应引用它不需要的任何内容。因此,你的情况听起来像是拆分大会的好选择。
当前强>
Application One -> "Middle.dll" -> "Base.dll"
您的提案
Application One -> "Middle.dll" -> "Base.dll"
Application Two -> "Middle.dll" -> "(Redundant) Base.dll"
这是一个典型的问题,当一些真正常用的对象基本上与业务逻辑不相关时会出现这种问题。即你可能在Middle.dll中有实用程序类,它们对应用程序很有用,但它们实际上并不需要在那里。使用单独的实用程序dll可能会更好。
<强>建议强>
Application One -> "Middle1.dll" -> "Base.dll"
-> "Middle2.dll"
Application Two -> "Middle2.dll"
需要使用当前存在于Middle.dll中的Base.dll的所有功能都应该移到Middle1.dll。这样,如果您只需要使用非依赖代码,您可以只引用Middle2.dll
它可能是一个很大的重构,取决于你的代码库,但是稍后你就会欣赏它!
对此的好处
注意:显然我并不是说你应该叫他们Middle1和Middle2。但是你明白了。