「ミドル」はブーツが少し大きくなっているように聞こえます。
アセンブリは、必要のないものを参照するべきではありません。したがって、あなたの状況は、アセンブリを分割するのに適した候補のように思えます。
現時点の
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 を参照するだけで済みます。
コードベースによっては、大きなリファクタリングになるかもしれませんが、後でそれを評価することになるでしょう!
これに対するメリット
- テストは改善される予定です。
- これら 2 つのアプリケーションを完全に分離する必要がある場合は、リファクタリングが少なくて済みます。
- 何らかの理由で「Middle1」のみを変更する必要がある場合、両方のアプリケーションが壊れる可能性が低くなります
- 懸念事項の明確な分離
- 現在のようなコンパイラの問題はありません
- すべてのプログラムでプログラムに必要な一括コードはありません
- より小さく、より管理しやすいアセンブリ
- 改善されたインテリセンス
- Middle1 と Middle2 は同じ名前空間を共有できるため、アプリケーションには違いがわかりません。
注:もちろん、Middle1 や Middle2 と呼ぶべきだと言っているわけではありません。しかし、あなたはその考えを理解します。