2 votes

Problèmes COM entre deux versions d'une application C#

Je n'ai pas beaucoup travaillé avec COM, veuillez donc pardonner mon ignorance.

Contexte : Je travaille sur un projet en VS 2010. Il y a une DLL COM C# intégrée dans la solution C#, ainsi qu'un projet d'installation/déploiement - le projet d'installation est configuré pour enregistrer le fichier COM .tlb lors de l'installation.

Le problème : une version précédente de l'application C#, avec sa DLL COM, était présente sur un PC lorsque quelqu'un a décidé d'installer la version la plus récente de l'application C#, et donc la DLL COM la plus récente. Lorsque cela s'est produit, la fonctionnalité COM des deux versions de l'application C# a été interrompue ou du moins c'est ce que je suppose.

S'agit-il d'un comportement typique de COM/DLL-Hell ? Lorsque les deux applications C# sont désinstallées, puis qu'UNE SEULE est réinstallée, tout revient à la normale - les deux ne peuvent apparemment pas être installées en même temps.

J'ai essayé de changer le GUID du projet COM DLL, de changer la version de l'assemblage et la version du fichier d'assemblage du projet COM DLL - avec des résultats mitigés. Lorsque je modifie ces éléments, la nouvelle installation de l'application fonctionne (très bien), mais l'ancienne application C# ne fonctionne plus.

Remarque : aucune erreur ou exception n'est déclenchée lorsque la fonctionnalité COM échoue - les appels COM semblent simplement ne rien faire. Il s'agit donc d'un échec "silencieux".

J'ai fait des recherches à ce sujet et j'ai essayé diverses modifications sans grand succès... peut-être que je ne vois pas les choses de la bonne façon. Est-ce que quelqu'un d'autre ayant plus d'expérience dans ce domaine pourrait m'éclairer ?

0voto

Tony D Points 1025

Vous pourriez utiliser un module de fusion pour installer l'objet com et ses versions successives. Cela vous permettrait d'avoir plusieurs versions sur la même machine. De Microsoft :

Un module de fusion est comme un instantané d'une version particulière d'un composant. Un nouveau module de fusion doit être créé pour chaque version successive d'un composant afin d'éviter les conflits de version.

Consultez ce lien : Recommandations concernant le module d'installation ou de fusion

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X