依存関係に関連して他のプロジェクトに含まれるライブラリのリリースを作成するときのヒューリスティックとは何か、それらを含める必要があるかどうか疑問に思っています。
私の問題は次のとおりです。
名前が示すように、複数の場所で使用できる一連のユーティリティを提供する CommonUtilities ライブラリがあります。CommonUtilities の依存関係には、log4net.dll (ロギング フレームワーク) と Oracle.DataAccess.dll (データベース ドライバ) が含まれます。
CommonUtilities を含めたい MyProject という別のプロジェクトがあります。MyProject も Oracle.DataAccess に依存しています。
ILMerge を使用して CommonUtilities を単一のアセンブリ CommonUtilities.dll にマージし、それを MyProject から参照すると、すべてがコンパイルされますが、MyProject から Oracle.DataAccess を明示的に参照する必要があります。これは依存関係であり、CU にマージされたアセンブリを使用しないためです。Oracle.DataAccess への参照を追加すると、2 つの Oracle.DataAccess アセンブリが参照されるため、using ステートメントがあいまいになります。
私の場合、 ILMerge /Internalize を使用すると、内部化された Oracle.DataAccess アセンブリの型が CommonUtilities から返され、内部 MyProject としてマークされているため、返された型が認識されないため、コンパイル エラーが発生します。
これを機能させる唯一の方法は、この特定のアセンブリ (Oracle.DataAccess) を CommonUtilities にマージせず、MyProject からのみ参照することです。これにより、次のような新しい問題が発生します。どの Oracle.DataAccess.dll を参照する必要がありますか? CommonUtils で配布される依存関係ですか?
このすべてについて他の方法はありますか?