2009-10-28 5 views
1

Problème

Le problème de base est que je veux déboguer du code tiers pour voir comment cela fonctionne afin de pouvoir en remplacer une partie. Y a-t-il un moyen de rediriger la liaison pour qu'elle n'utilise pas la DLL dans le GAC mais plutôt la copie que j'ai compilée à la place (qui sera non signée ou aura une clé publique différente).Rediriger l'assemblage de liaison à une DLL personnalisée/non signée


Détails

L'élément en question est asp.net mvc, la raison en est la copie du dll dans le gac a été optimisé et ne correspond pas correctement avec le code source dans la source de Microsoft serveur.

Microsoft a publié la source pour asp.net mvc afin que je puisse le télécharger et compiler le dll moi-même, mais évidemment je ne peux pas signer la DLL avec leur clé, je peux le signer avec ma propre clé, mais il aura un jeton de clé publique différent.

La réponse simple serait de référencer ma DLL dans mon application et recompiler mon application, mais je dois aussi recompiler toutes les autres DLL tierces qui font référence à asp.net mvc (par exemple, mvccontrib).

+0

Avez-vous fini par obtenir une solution de travail? J'ai ce problème exact. Je suis sûr qu'il y a des guides autour (le blog de ScottGu?) Pour utiliser la version non-GAC de la DLL MVC, donc il semble que toutes les pièces du puzzle sont là ... – notJim

Répondre

0

Vous pouvez optimiser la signature avec le SN.EXE tool.

sn -Vr assembly 

Désenregistrer le montage original du GAC puis mettez votre propre dans le dossier du programme et utiliser SN pour ignorer la vérification.

+0

Y at-il un moyen d'éviter de le supprimer à partir du GAC, comme il est référencé par un installateur msi, gacutil refuse de l'enlever et j'aime généralement éviter la force brute et briser les choses au hasard plus tard. –

0

J'ai eu un problème similaire à "patcher" un système avec dlls/exes signé retard. Malgré l'utilisation de sn -Vr *,[PublicKey], il échouait avec SecurityException: échec de la validation du nom fort. Ensuite, en regardant les emplacements de registre: HKLM\Software\Microsoft\StrongName\Verification et HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification il est apparu qu'il avait des entrées invalides. J'ai enlevé les entrées invalides, et ensuite, utilisé de nouveau sn (pour 64/32 bits) et cela a fonctionné comme un charme.

Questions connexes