J'ai une application qui utilise une DLL Microsoft (Microsoft.ComponentStudio.ComponentPlatformImplementation.dll) qui est utilisée pour le déploiement du système d'exploitation et l'accès aux fichiers du catalogue. La version 6.0.0.0 est spécifique aux fichiers de catalogue Windows Server 2008. La nouvelle version 6.1.0.0 est spécifique aux fichiers de catalogue Windows Server 2008 R2. Tenter d'accéder à un fichier de catalogue avec la version incorrecte entraîne une exception.Prise en charge de plusieurs versions de DLL
Mon application (VB.NET utilisant VS2005) doit pouvoir accéder à l'une ou l'autre des versions de ces catalogues - Je serais content avec deux exécutables (un pour chaque version du catalogue) mais évidemment je ne veux pas maintenir deux ensembles de code source pour chacun.
La spécification des deux ensembles de DLL dans la référence de projet n'est pas possible car les noms de DLL sont identiques. Je préfère ne pas avoir à ajouter et supprimer manuellement les références DLL chaque fois que je veux construire. Autant que je sache, les interfaces etc. sont effectivement identiques entre les deux.
J'ai lu quelques articles ici et ailleurs sur bindRedirect, Assembly.Load etc mais aucun ne semble porter ses fruits.
Merci pour votre réponse Martin, mais compte tenu de mon niveau d'expertise, il ne suffit pas de me faire avancer. Lorsque vous utilisez Assembly.Load, dois-je toujours spécifier les DLL dans les références du projet? Si oui, comment puis-je inclure les multiples versions de la même DLL sans obtenir le message d'erreur habituel? Sinon, existe-t-il un moyen de spécifier le chemin d'accès aux DLL dans la fonction Assembly.Load? Utilise également l'assemblage.Charger encore me permettre d'utiliser Intellisense avec ces assemblages? Merci! –
Non, vous ne spécifiez pas la bibliothèque dans les références. Et non, tout le support d'exécution statique a disparu - vous ne pouvez plus déclarer les variables des types de la DLL, et vous ne pouvez pas utiliser intellisense - comment cela pourrait-il fonctionner si différentes versions de la DLL ont des API différentes? Voir KB 837908 sur comment charger l'assembly à partir d'un chemin donné. –
Martin, merci pour votre aide. J'ai finalement trouvé une solution qui ne m'a pas obligé à jouer avec Assembly.Load etc. Cheers, ShadeSeeker. –