91 votes

Comment enregistrer un fichier DLL .NET dans le GAC ?

J'ai créé une application .NET .DLL que je veux enregistrer dans le fichier CAG .

J'ai utilisé cette commande dans Windows Server 2003 Invite de commande :

C:\"Path of dll"\>gacutil /i dllname.dll
'gacutil' is not recognized as an internal or external command,
operable program or batch file.

Il dit que le chemin n'est pas correct.

Dois-je l'utiliser dans une invite cmd .NET ? Si c'est le cas, je ne parviens pas à trouver l'invite cmd .NET.

0 votes

Quel était le message d'erreur exact ? Se réfère-t-il au chemin d'accès à gacutil.exe ou faire dllname.dll ?

110voto

Fredrik Mörk Points 85694

Vous pouvez le faire en utilisant le gacutil outil. Dans sa forme la plus simple :

gacutil /i yourdll.dll

Vous trouverez l'Invite de commande Visual Studio dans le menu de démarrage sous Programmes -> Visual Studio -> Outils Visual Studio .

10 votes

Si vous ne disposez pas de Visual Studio, vous pouvez accéder à gacutil.exe dans C:\Program Fichiers (x86) \Microsoft SDKs \Windows\v8.0A\bin\NETFX 4.0 Tools\ En tout cas, c'est là où il se trouve sur un serveur Win2012R2.

0 votes

J'ai des fonctions qui nécessitent une élévation, donc en plaçant cette dll dans l'assemblage, aura-t-elle des privilèges ? Un utilisateur non-administrateur pourra-t-il exécuter ces fonctions en élévation ?

0 votes

Ma machine l'avait sous C:\Program Fichiers (x86) \Microsoft SDKs \Windows\v8.1A\bin\NETFX 4.5.1 Outils - il fallait également que j'exécute la commande via une ligne de commande élevée.

36voto

Rubens Farias Points 33357

Vous aurez besoin :

  • Donnez un nom fort à votre assembly (Visual Studio, Project Properties, Signing tab, Sign the assembly).
  • Modifiez vos événements de construction (Propriétés du projet, onglet Événements de construction, ligne de commande post-construction).

    cd C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin gacutil.exe /i "$(TargetPath)" /f /nologo gacutil /l "$(TargetName)" /nologo

Maintenant, chaque fois que vous construisez votre projet, il sera installé dans le GAC.

0 votes

Dans Visual Studio 2017, vous devez exécuter VS en tant qu'administrateur ou le gacutil échoue par manque de permission.

22voto

Ando Points 2897

Il suffit de glisser et déposer le fichier DLL dans le dossier C:\Windows\assembly en utilisant l'Explorateur Windows.

Attention :

Dans les versions précédentes de .NET Framework, l'extension Windows Shfusion.dll vous permettait d'installer des assemblages en les faisant glisser dans l'Explorateur de fichiers. Explorer. À partir de .NET Framework 4, Shfusion.dll est obsolète.

Source : Comment : Installer un assemblage dans le cache global des assemblages

2 votes

Vous devez être connecté avec un compte administrateur car l'option "Exécuter en tant que" n'est pas disponible pour le glisser-déposer.

6 votes

Cela n'a aucun effet de mon côté - la bibliothèque n'est pas ajoutée, il n'y a pas de message d'erreur. J'utilise un compte administrateur.

9 votes

"Dans les versions antérieures du .NET Framework, l'extension du shell Windows Shfusion.dll vous permettait d'installer des assemblages en les faisant glisser dans l'explorateur de fichiers. À partir de la version 4 de .NET Framework, Shfusion.dll est obsolète." msdn.microsoft.com/fr/us/library/dkkx7f79(v=vs.110).aspx

15voto

tbischel Points 2335

De Wikipedia :

gacutil.exe est l'utilitaire .NET utilisé pour travailler avec l'application CAG .

On peut vérifier la disponibilité d'un assemblage partagé dans CAG en utilisant la commande :

gacutil.exe /l "assemblyName"

On peut enregistrer un assemblage partagé dans le CAG en utilisant la commande :

gacutil.exe /i "assemblyName"

Ou en déposant un fichier d'assemblage dans l'emplacement suivant à l'aide de l'interface graphique :

%windir%\assembly\

D'autres options de cet utilitaire seront brièvement décrites si vous utilisez la fonction /? le drapeau, c'est-à-dire :

gacutil.exe /?

0 votes

GacUtil n'est pas livré avec .NET. L'aide shell qui permettait de faire un glisser-déposer pour enregistrer les assemblages ne fonctionne plus.

14voto

Tom Points 111

Ces réponses ne vous disent pas que gacutil réside dans C:\WINDOWS\Microsoft.NET\Framework\v1.1 * au fait.

Je ne l'avais pas dans mon dossier v2.0. Mais j'ai essayé de faire glisser et de déposer la DLL dans le dossier de la version 2.0. C:\WINDOWS\Assembly comme cela a été suggéré ici précédemment. C'était plus facile et cela fonctionne, tant qu'il s'agit d'une bibliothèque .NET. J'ai également essayé une bibliothèque COM et cela a échoué avec une erreur indiquant que l'on attendait un manifeste d'assemblage. Je sais que ce n'était pas la question posée ici, mais j'ai pensé le mentionner au cas où quelqu'un découvrirait qu'il ne peut pas l'ajouter, ce qui pourrait être la raison.

-Tom

1 votes

Ces réponses ne vous disent pas que gacutil n'est pas livré avec Windows.

Prograide.com

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.

Powered by:

X