Est-ce que quelqu'un utilise avec succès COM sans enregistrement avec des composants .NET?

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

Question

Jusqu'à récemment, nous utilisions volontiers le COM sans enregistrement pour nos composants natifs et .NET COM. Cependant, nous avons rencontré un problème étrange dans lequel notre application a commencé à se planter de manière aléatoire sur Windows XP SP3 (mais pas sur Vista) après avoir uniquement modifié le numéro de version d'un assemblage .NET pour passer de version candidate à version. (Ne détestez-vous pas la loi de Murphy?)

Après de nombreuses journées perdues et des grincements de dents, nous avons découvert qu'il s'agissait d'un bug connu dans sxs. .dll qui provoque une corruption de tas lors de la récupération d'informations sur une classe .NET. Il existe un correctif qui supprime le problème, mais les correctifs ne sont pas destinés à être redistribués.

Nous sommes un peu déconcertés par le fait qu'il existe un bug aussi horrible dans la mise en œuvre de COM sans enregistrement. Quelqu'un utilise-t-il avec succès des composants COM pour .NET sans inscription? Comment avez-vous résolu ce problème?

Était-ce utile?

La solution

Ce problème est lié à la façon dont SxS calcule la taille des informations de classe. Le numéro de version de l’assemblage fait partie de ces informations.

Puisqu'il travaillait avec le numéro de version de la version candidate, la solution de contournement consiste peut-être à ce que le numéro de version de la version ait la même longueur que celui de la version RC.

Si cela ne fonctionne pas pour vous, il existe un processus établi pour demander les droits de redistribution des correctifs. J'engage le support technique de Microsoft à poursuivre sur cette voie.

Autres conseils

Nous utilisons COM sans inscription pour les composants natifs et .NET. Nous avons décidé d'utiliser un numéro de version d'assembly fixe pour ces composants (principalement pour éviter d'encombrer le registre lors de l'enregistrement répétitif de composants .NET dotés d'un numéro de construction dynamique / *). Pas idéal, mais nous avons d'autres moyens de déterminer quelle version d'un composant donné est utilisée (elles ne sont jamais corrigées individuellement).

Cela semble être un très vilain problème! Cet article de la base de connaissances donne presque l’impression que l’utilisation de SxS est facultative ... Pour autant que je sache, c’est le seul moyen de faire de la COM sans enregistrement?

Pour info, le correctif est maintenant téléchargeable directement: http: // www.microsoft.com/en-us/download/details.aspx?id=27680

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