Ik probeer in C# een classlibrary te schrijven die gebruik maakt van externe DLL's. Deze DLL's heb ik dan ook als reference in mijn project. Nu kan het echter zijn dat deze externe DLL's een nieuwe versie krijgen (omdat er bijvoorbeeld een bug in gehotfixed wordt). De API-calls in deze DLL's wijzigen gelukkig niet.
Als ik nu gebruik maak van mijn DLL en die externe DLL's krijgen een hoger versienummer, krijg ik (uiteraard) de volgende foutmelding:
Ik heb de volgende dingen al geprobeerd:
- Bij de references van de externe DLL's specific version op "false" gezet. Dit geldt volgens mij alleen voor compile-time en niet voor run-time.
- Geprobeerd om in mijn classlibrary AppDomain.CurrentDomain.AssemblyResolve te gebruiken. Omdat een classlibrary geen module initializer heeft (http://stackoverflow.com/...-class-library-in-c-sharp), gebruik ik een static class welke ik steeds aanroep, maar dat werkt helaas ook niet.
- In de web.config kan ik versie nummers overrulen, maar dat betekent dat ik dat moet doen in het project dat weer gebruikt maakt van mijn DLL, dat wil ik eigenlijk niet. Ik wil dat mijn DLL het probleem zelf oplost.
Hoe kan ik mijn probleem oplossen? En zie ik misschien iets triviaals over het hoofd?
Als ik nu gebruik maak van mijn DLL en die externe DLL's krijgen een hoger versienummer, krijg ik (uiteraard) de volgende foutmelding:
Omdat mijn library een soort uitbreiding is op de externe DLL's, wil ik niet steeds mijn DLL hoeven te compileren met de nieuwe references. Tevens kan het ook zo zijn dat die externe DLL's in verschillende projecten, verschillende versies hebben.Assembly 'xxx' uses 'yyy' which has a higher version than referenced assembly 'yyy'
Ik heb de volgende dingen al geprobeerd:
- Bij de references van de externe DLL's specific version op "false" gezet. Dit geldt volgens mij alleen voor compile-time en niet voor run-time.
- Geprobeerd om in mijn classlibrary AppDomain.CurrentDomain.AssemblyResolve te gebruiken. Omdat een classlibrary geen module initializer heeft (http://stackoverflow.com/...-class-library-in-c-sharp), gebruik ik een static class welke ik steeds aanroep, maar dat werkt helaas ook niet.
- In de web.config kan ik versie nummers overrulen, maar dat betekent dat ik dat moet doen in het project dat weer gebruikt maakt van mijn DLL, dat wil ik eigenlijk niet. Ik wil dat mijn DLL het probleem zelf oplost.
Hoe kan ik mijn probleem oplossen? En zie ik misschien iets triviaals over het hoofd?