I have a complex library A that consists of several c# projects producing the following assemblies:
- A.Core
- A.Caching
- A.Logging
- A.MongoDb
The library is written by me, and I have full access to its source code. It depends on several NuGet packages, let's say they are:
- mongocsharpdriver
- EnterpriseLibrary.Caching
- EnterpriseLibrary.Logging
These libraries (MongoDb driver and EntLib) are not installed in GAC.
I also have a web project B and I want to use library A in it as a reference to a DLL (not including projects into solution B). The web project depends on several NuGet packages, among them:
- mongocsharpdriver
- EnterpriseLibrary.Logging
Versions of these packages in solutions A and B do not match as they are not developed synchronously. Library A was developed a year ago and used as is since then.
Question: what is the proper way to distribute library A so that:
- Any solution could use it even if lib
Adependencies are not referenced. - If a solution has its own versions of lib
Adependencies, they do not conflict.
My current approach:
- From my solutions, I reference the four dlls:
A.Core, A.Caching, A.Logging, A.MongoDb. - Then I add all its NuGet dependecies to the solution, if they are not present.
- It breaks sometimes as solution
Buses mongocsharpdriver version 1.5 and libAuses version 1.1 (the versions are not that compatible).
So, what shall I do? What will be the correct way of dealing with conflict 'references vs. references of references'?