Je dois m'occuper d'un paquet qui installe des assemblages directement dans le GAC (par exemple, quelque part au fond de %Windows%/assembly).
Comment puis-je exorciser l'assemblage réel (la DLL) du GAC vers le système de fichiers normal ?
Merci.
Je dois m'occuper d'un paquet qui installe des assemblages directement dans le GAC (par exemple, quelque part au fond de %Windows%/assembly).
Comment puis-je exorciser l'assemblage réel (la DLL) du GAC vers le système de fichiers normal ?
Merci.
J'ai utilisé les conseils de cet article pour obtenir un assemblage du GAC.
Sortir la DLL du GAC
DLLs une fois déployées dans le GAC (normalement situé à c : \windows\assembly ) ne peuvent pas être visualisés ou utilisé comme un fichier DLL normal. Ils ne peuvent pas être référencés directement à partir de VS . Les développeurs conservent généralement une copie du fichier DLL original et et s'y réfèrent dans le projet au moment projet au moment du développement (conception), qui utilise l'assemblage du GAC pendant l'exécution du projet.
Pendant l'exécution (run-time), si le assembly s'avère être signé et déployé dans le GAC, le CLR récupère automatiquement récupère automatiquement l'assembly dans le GAC au lieu de la DLL référencée pendant conception dans VS. Dans le cas où le développeur a supprimé la DLL originale ou ne l'a pas pour une raison quelconque, il existe un moyen de récupérer le fichier DLL du GAC. Suivez les étapes suivantes pour copier la DLL du GAC
Exécutez regsvr32 /u C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\shfusion.dll
- shfusion.dll est une DLL d'extension de l'explorateur qui donne une distinct au dossier GAC. Le désenregistrement de ce fichier supprimera l'assemblage cache viewer et le dossier GAC sera sera alors visible comme n'importe quel dossier normal dans l'explorateur.
Ouvrez "%windir%". \assembly\GAC_MSIL ".
Naviguez jusqu'à votre dossier DLL dans la profondeur pour trouver votre DLL.
Copiez la DLL quelque part sur votre disque dur et référez-la à partir de là dans votre projet
Exécutez "regsvr32 %windir%". \Microsoft.NET\Framework\ <.NET répertoire de la version> \shfusion.dll " pour réenregistrer le fichier shfusion.dll et retrouver la vue originale distincte du le GAC.
Cela fonctionne mais est un peu compliqué. Si vous n'avez pas peur de l'invite de commande, vous pouvez simplement vous rendre dans le répertoire nécessaire et copier la DLL de cette façon.
Installez TotalCommander, activez l'option permettant de voir tous les fichiers cachés et vous pourrez récupérer tous les assemblages que vous voulez.
@Andrew, il semble que shfusion.dll
ne prend pas en charge le DllInstall()
point d'entrée invoqué par regsvr32
lorsqu'on lui transmet le /i
option. L'omission de cette option permet de réenregistrer le composant avec succès.
Je pense que le plus simple est de le faire par la ligne de commande comme le mentionne David. Le seul problème est que le fichier .dll n'est pas simplement situé à l'adresse C:\Windows\Assembly. Vous devez naviguer vers C:\Windows\Assembly\GAC\ [NOM_DE_L'ASSEMBLAGE]\[NUMÉRO_DE_VERSION]_[CLÉ_PUBLIQUE]. Vous pouvez ensuite faire une copie en utilisant :
copier [NOM_ASSEMBLAGE].dll c:\ (ou l'emplacement de votre choix)
J'espère que cela vous aidera.
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.