J'ai utilisé les conseils de cet article pour obtenir un assemblage du GAC.
Sortez la DLL du GAC
Les DLL une fois déployées dans GAC (normalement situées dans c: \ windows \ assembly) ne peuvent pas être affichées ou utilisées comme un fichier DLL normal. Ils ne peuvent pas être directement référencés à partir du projet VS. Les développeurs conservent généralement une copie du fichier DLL d'origine et y font référence dans le projet au moment du développement (conception), qui utilise l'assembly de GAC pendant l'exécution du projet.
Lors de l'exécution (au moment de l'exécution), si l'assembly est signé et déployé dans GAC, le CLR récupère automatiquement l'assembly du GAC au lieu de la DLL référencée au moment de la conception dans VS. Si le développeur a supprimé la DLL d'origine ou ne l'a pas pour une raison quelconque, il existe un moyen d'obtenir le fichier DLL à partir de GAC. Suivez les étapes suivantes pour copier la DLL à partir du GAC
Exécutez regsvr32 / u C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ shfusion.dll
- shfusion.dll est une DLL d'extension d'explorateur qui donne un aspect distinct au dossier GAC. La désinscription de ce fichier supprimera la visionneuse du cache d'assemblage et le dossier GAC sera alors visible comme n'importe quel dossier normal dans l'explorateur.
Ouvrez «% windir% \ assembly \ GAC_MSIL».
Accédez à votre dossier DLL dans les profondeurs 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 version directory> \ shfusion.dll" pour réenregistrer le fichier shfusion.dll et retrouver la vue distincte d'origine du GAC.
shfusion.dll
ne pas prendre en charge leDllInstall()
point d'entrée invoqué parregsvr32
l'/i
option. Omettre cette option permet de réenregistrer le composant avec succès.La méthode décrite ici est très simple:
http://andreasglaser.net/post/2008/08/05/Extract-assembly-from-Global-Assembly-Cache-(GAC)-with-network-drive-mapping.aspx
Résumé de l'article:
\\YourServer\C$\Windows\Assembly
)la source
Ouvrez l'invite de commande et tapez:
Cela devrait donner le vidage de l'ensemble du GAC
Prendre plaisir!
la source
Oui.
Ajouter la clé de registre DisableCacheViewer
Créez une nouvelle clé dword sous HKLM \ Software \ Microsoft \ Fusion \ avec le nom DisableCacheViewer et définissez sa valeur [DWORD] sur 1.
Revenez à l'Explorateur Windows dans le dossier de l'assemblage et ce sera la vue normale du système de fichiers.
la source
Je pense que le moyen le plus simple est de le faire via la ligne de commande comme le mentionne David. Le seul truc est que le .dll n'est pas simplement situé dans C: \ Windows \ Assembly. Vous devez accéder à C: \ Windows \ Assembly \ GAC \ [ASSEMBLY_NAME] \ [VERSION_NUMBER] _ [PUBLIC KEY]. Vous pouvez ensuite faire une copie en utilisant:
copiez [ASSEMBLY_NAME] .dll c: \ (ou à l'emplacement de votre choix)
J'espère que cela pourra aider.
la source
Un moyen facile que j'ai trouvé est d'ouvrir l'invite de commande et de parcourir le dossier que vous mentionnez jusqu'à ce que vous trouviez la DLL que vous voulez - vous pouvez ensuite utiliser la commande de copie pour la sortir. L'Explorateur Windows a une vue spéciale «utile» de ce dossier.
la source
Ouvrez RUN puis tapez
%windir%\assembly\GAC_MSIL
, cela ouvrira vos dll dans la vue des dossiers, vous pouvez ensuite naviguer vers votre dossier nommé dll et l'ouvrir, vous trouverez votre fichier dll et le copiez facilementla source
Je suis l'auteur de PowerShell GAC . Avec PowerShell GAC, vous pouvez extraire des assemblys du GAC sans dépendre des éléments internes du GAC, comme la modification des structures de dossiers.
la source
Ce billet de blog MSDN décrit trois méthodes distinctes pour extraire une DLL du GAC. Un résumé utile des méthodes données jusqu'ici.
la source
Utilisez plutôt le navigateur de fichiers "Total Commander".
la source
Je pense avoir trouvé un moyen de regarder à l'intérieur du GAC sans modifier le registre ni utiliser la ligne de commande, PowerShell ou tout autre programme:
Créez un nouveau raccourci (vers n'importe où). Modifiez ensuite le raccourci pour que la cible soit:
L'ouverture de ce raccourci vous amène au dossier Système à l'intérieur du GAC (que tout le monde devrait avoir) et a le merveilleux effet secondaire de vous permettre de basculer vers un répertoire supérieur, puis de naviguer dans n'importe quel autre dossier de votre choix (et de voir les fichiers dll, etc.)
J'ai testé cela sur Windows 7 et Windows Server 2012.
Remarque: il ne vous permettra pas d'utiliser cette cible lors de la création du raccourci, mais vous permettra de le modifier.
Prendre plaisir!
la source
accédez simplement à C: \ Windows, recherchez le dossier [assembly], cliquez avec le bouton droit de la souris et sélectionnez Ajouter à l'archive
attendre un peu
vola vous avez un fichier archive contenant tous les assemblys de votre GAC
la source
À partir d'un script Powershell, vous pouvez essayer ceci. Je n'avais qu'une seule version de l'assemblage dans le GAC, donc cela fonctionnait très bien.
où le chemin de l'assembly peut utiliser des caractères génériques.
la source
Une autre direction - décompressez simplement le fichier MSI et obtenez les bonus de cette façon. Vous sauve de la désinstallation éventuelle. . .
la source
La copie à partir d'une ligne de commande n'est pas nécessaire. J'ai tapé le nom de la DLL à partir de la recherche de la fenêtre de démarrage. J'ai choisi Voir plus de résultats. Celui du GAC a été renvoyé dans la fenêtre de recherche. J'ai fait un clic droit dessus et j'ai indiqué l'emplacement du fichier ouvert. Il s'est ouvert dans l'Explorateur Windows normal. J'ai copié le fichier. J'ai fermé la fenêtre. Terminé.
la source