core.xml.dll と core.string.dll という名前の 2 つのアセンブリ (とりわけ) を含む再利用可能なクラス ライブラリを設計しています。
xml アセンブリは、いくつかの文字列ヘルパー メソッドを使用するために、文字列アセンブリを参照します。
ただし、xml アセンブリに含まれるメソッドを使用することでメリットが得られる文字列メソッドが存在するようになりました。
文字列アセンブリから xml アセンブリを参照すると、循環依存関係が作成され、ソース コードから両方のアセンブリをビルドできなくなります。(つまり、ニワトリと卵の問題)。
「自分自身を繰り返さない」という原則に従うために、両方のアセンブリで機能が重複することを避けたいと思います。実装にバグが見つかった場合は、1 か所だけ修正したいと考えています。
アセンブリを 1 つにマージすることはできますが、アセンブリの結合性が低下するため、これは理想的ではありません。
特定のクラスにわずかな変更を加えるだけで、アセンブリ全体を再構築して再展開する必要があります。また、最終的には、非常に多くの依存関係があるため、1 つの巨大なライブラリ アセンブリになってしまう可能性があります。
では、再利用可能なライブラリ アセンブリのセットのコンテキストでは、ここで使用する最善の方法は何でしょうか? また、.NET フレームワーク自体はこの問題にどのように対処していますか?
(Reflector では、System.Configuration.dll が System.XML.DLL を参照しているように見えます。逆もまた同様です。これは実際に正しいのでしょうか?もしそうなら、循環依存関係はどのように管理されていますか?)