A
次のアセンブリを生成するいくつかの c# プロジェクトで構成される複雑なライブラリがあります。
- 中心
- A.キャッシング
- A.ロギング
- A.MongoDb
このライブラリは私が作成したもので、そのソース コードに完全にアクセスできます。いくつかの NuGet パッケージに依存します。
- mongocsharpdriver
- EnterpriseLibrary.Caching
- EnterpriseLibrary.Logging
これらのライブラリ (MongoDb ドライバーと EntLib) は、GAC にはインストールされません。
また、Web プロジェクトがB
あり、ライブラリを DLL への参照として使用したいA
(ソリューションにプロジェクトを含めないB
)。Web プロジェクトは、いくつかの NuGet パッケージに依存しています。
- mongocsharpdriver
- EnterpriseLibrary.Logging
ソリューション内のこれらのパッケージのバージョンは、同期的に開発されていないため一致しませんA
。B
ライブラリA
は 1 年前に開発され、それ以来そのまま使用されています。
質問: 次のようにライブラリを配布する適切な方法は何ですかA
:
A
lib依存関係が参照されていなくても、どのソリューションでもそれを使用できます。- ソリューションに独自のバージョンの lib
A
依存関係がある場合、それらは競合しません。
私の現在のアプローチ:
- 私のソリューションから、次の 4 つの dll を参照します
A.Core, A.Caching, A.Logging, A.MongoDb
。 - 次に、NuGet のすべての依存関係が存在しない場合は、ソリューションに追加します。
- ソリューション
B
がmongocsharpdriverバージョン1.5を使用し、libA
がバージョン1.1を使用するため、時々壊れます(バージョンは互換性がありません)。
それで、私は何をしましょうか?「参照対参照の参照」の競合を処理する正しい方法は何ですか?