2010-10-03 6 views
0

Tenir compte suivant le scénario J'ai 2 assemblées Assemblée named A.dll situé dans le dossier Fold_A Assemblée nommé B.dll situé dans le dossier Fold_B A.dll dépend sur B.dll et A est COM visible quand je joue COMAND regasm A.dll/codebase
échoue, mais quand B copié dans fold_a - la commande a réussiRegasm échoue si l'assemblage dépend d'autres assebmly ne se trouve pas dans le même dossier

la question est: est-il possible effectuer sans copier les assemblages sur lesquels dépend l'assemblage à enregistrer (par regasm)?

Il est question n ° déjà lié à la question: Multiple search paths for assemblies not in the GAC when using REGASM & COM

Votre aide sera très précieuse Merci à l'avance

Répondre

1

Eh bien, oui, il est un problème lors de votre inscription, mais il sera beaucoup problème plus important lorsqu'un client utilise réellement votre serveur COM. Un client COM typique sera du code non managé, il n'est pas très pratique de lui donner, disons, un fichier .config pour dire au CLR où chercher l'assembly B.

Si vous voulez que cela fonctionne pour n'importe quel client sans config alors vous devriez mettre B dans le GAC. Lequel est en général le bon endroit pour les serveurs COM, DLL Hell n'est rien à jouer avec COM. L'utilisation de l'événement Assembly.AssemblyResolve n'est probablement pas pratique, mais vous pouvez essayer d'utiliser un constructeur de classe statique pour enregistrer le gestionnaire d'événements. Le codage en dur du chemin vers les dépendances est discutable à moins que ces dossiers ne soient toujours liés.

+0

Merci pour la réponse rapide –

Questions connexes