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:
Alib依存関係が参照されていなくても、どのソリューションでもそれを使用できます。- ソリューションに独自のバージョンの lib
A依存関係がある場合、それらは競合しません。
私の現在のアプローチ:
- 私のソリューションから、次の 4 つの dll を参照します
A.Core, A.Caching, A.Logging, A.MongoDb。 - 次に、NuGet のすべての依存関係が存在しない場合は、ソリューションに追加します。
- ソリューション
Bがmongocsharpdriverバージョン1.5を使用し、libAがバージョン1.1を使用するため、時々壊れます(バージョンは互換性がありません)。
それで、私は何をしましょうか?「参照対参照の参照」の競合を処理する正しい方法は何ですか?