utiliser 2 versions différentes de même contrôle (dll) en même temps sur la même machine?

StackOverflow https://stackoverflow.com/questions/1578109

  •  21-09-2019
  •  | 
  •  

Question

J'utilise le composant du parti a3rd dans mon projet et moi avons récemment mis à jour leur dernière version qui fixe bug « A »

Malheureusement, alors qu'il a résolu bug 'A', une autre partie a obtenu complètement instable, il introduit un bug 'B'.

Depuis « A » et « B » sont dans des contextes complètement différents, je veux avoir les deux versions du contrôle installé et utiliser l'un dans un cas où bug « B » est pas pertinent, et l'autre dans le cas ce bug 'A' est pas pertinent.

bien sûr, tout jusqu'à ce qu'une solution appropriée a été délivré par le promoteur 3ème partie

Quelqu'un at-il pensé comment cela peut se faire?

R

p.s. la dll doit être enregistré avec regsvr32 ... Je soupçonne que c'est le point où il se fait trouvable ... J'espère avec une supercherie, il est ici, nous pouvons enregistrer la chose à double sous un autre nom

Était-ce utile?

La solution

Vous pouvez déployer une version différente d'un composant COM et les utiliser sans inscription. Cette fonctionnalité de COM sans enregistrement a été introduit avec Windows XP et vous oblige à déployer un fichier .manifest avec les paramètres appropriés.

Jetez un oeil à Activation d'enregistrement sans des composants COM et évasion DLL Hell: Simplifier le déploiement App avec ClickOnce et COM d'enregistrement libre- .

Autres conseils

Vous ne pouvez enregistrer une dll COM du même type sur votre machine ... ceci est la raison pour laquelle le GAC est introduit par .Net

Si le composant tiers est un composant COM, alors vous êtes sur la bonne voie, vous devez vous inscrire à l'aide de deux différents noms / Guids.

EDIT: voir divo réponse au sujet de l'enregistrement multiple COM ... Après XP, vous pouvez le faire maintenant ...
Mais avant que la seule façon de le faire (à court d'avoir le code source et recompiler un nouveau vous dll avec GUIDs d'enregistrement différents), a été de modifier manuellement la bibliothèque de types, et remplacer les GUIDs existants par de nouveaux. Ce serait extrêmement difficile. (Il peut exister un outil pour le faire, mais s'il y a je ne t en sais) La bibliothèque de types, par la voie peut être intégrée dans le dll lui-même, ou il peut être dans un fichier .tlb séparé * (commun pour les composants VB6)

Si, Otoh, le composant est un composant de code managé, le registre ne peut être nécessaire pour l'intégration dans Visual Studio, et il suffit juste de copier le fichier DLL dans le dossier d'application pour l'exécutable que vous utilisez dans ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top