2009-02-17 4 views
1

J'ai une DLL .NET qui est installée sur le GAC, car elle est utilisée par plusieurs applications. L'un d'entre eux est un classeur Excel qui référence la DLL à l'aide de la fonction d'interopérabilité COM de .NET. Le fichier COM tlb est installé dans un répertoire d'application.La référence Excel à la DLL .NET rompt avec la nouvelle version

Tout cela fonctionne correctement, sauf lorsqu'une version mise à jour de la DLL est installée. Sur certains PC, la référence COM dans le classeur se casse (elle est affichée comme "manquant"). Exécution de la macro concernée se bloque Excel. Cela peut être corrigé en décochant la référence manquante dans l'éditeur VBA et en rajoutant la référence à la DLL, mais je préférerais que mes utilisateurs n'aient pas à le faire à chaque fois qu'ils l'ouvrent.

Tous les objets et méthodes pertinents ont des signatures inchangées et sont décorés avec des GUID immuables.

Des idées pour lesquelles la référence se brise?

EDIT: Après une enquête approfondie dans le Registre, il semble que l'enregistrement COM ne se passe pas correctement lors de l'installation. Cependant, cela ne s'est pas présenté comme une erreur d'installation. Pourtant, pas plus près de trouver la cause sous-jacente, cependant.

Répondre

0

Nous avons eu des problèmes ici aussi; en tant que tel, nos programmes de patch exécutent toujours gacutil.exe/cdl pour effacer le cache de téléchargement. La solution n'a pas de sens pour nous, car nous n'avons pas téléchargé nos assemblages via le navigateur, mais ça a aidé. Pour voir si cela peut vous aider, essayez d'exécuter gacutil.exe/l pour voir si votre assembly se trouve dans le cache de téléchargement.

Notez également que, pour une raison quelconque, gacutil n'est pas redistribué avec le framework, vous devrez donc le copier sur le système en question.

+0

Merci pour le conseil, mais cela n'a pas aidé avec ce problème particulier. –

Questions connexes