Wie registriere ich eine .NET DLL-Datei im GAC?

83

Ich habe eine .NET- .DLLDatei erstellt, die ich im GAC registrieren möchte .

Ich habe diesen Befehl in der Windows Server 2003- Eingabeaufforderung verwendet:

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

Es heißt, der Pfad sei nicht korrekt.

Muss ich dies in einer .NET-Cmd-Eingabeaufforderung verwenden? In diesem Fall kann ich die .NET-Cmd-Eingabeaufforderung nicht finden.

Vineet
quelle
Was war die genaue Fehlermeldung? Bezieht es sich auf den Weg zu gacutil.exeoder zu tun dllname.dll?
UuDdLrLrSs

Antworten:

100

Sie können dies mit dem gacutilTool tun . In seiner einfachsten Form:

gacutil /i yourdll.dll

Sie finden die Visual Studio-Eingabeaufforderung im Startmenü unter Programme -> Visual Studio -> Visual Studio-Tools .

Fredrik Mörk
quelle
6
Wenn Sie nicht über Visual Studio verfügen, können Sie unter c: \ Programme (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ auf gacutil.exe zugreifen. Zumindest ist es dort auf einem Win2012R2-Server vorhanden .
Sonyisda1
Ich habe Funktionen, die eine Erhöhung erfordern. Wenn Sie diese DLL also in Assembly platzieren, hat sie dann Berechtigungen? Kann ein Benutzer ohne Administratorrechte diese Funktionen in der Höhe ausführen?
Susarla Nikhilesh
Mein Computer hatte es unter C: \ Programme (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Tools - es war auch erforderlich, dass ich den Befehl über eine erhöhte Befehlszeile ausführte.
Neminem
35

Du brauchst:

  • Benennen Sie Ihre Assembly mit einem starken Namen (Visual Studio, Projekteigenschaften, Registerkarte Signieren, Assembly signieren).
  • Ändern Sie Ihre Build-Ereignisse (Projekteigenschaften, Registerkarte Build-Ereignisse, Befehlszeile nach dem Build)
   CD C: \ Programme \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin
   gacutil.exe / i "$ (TargetPath)" / f / nologo
   gacutil / l "$ (TargetName)" / nologo

Jedes Mal, wenn Sie Ihr Projekt erstellen, wird es auf GAC installiert.

Rubens Farias
quelle
In Visual Studio 2017 müssen Sie VS als Administrator ausführen, sonst schlägt der Gacutil mangels Berechtigung fehl.
Nathan
19

Ziehen Sie die DLL-Datei einfach per C:\Windows\assemblyWindows Explorer in einen Ordner .

Vorbehalt:

In früheren Versionen von .NET Framework können Sie mit der Windows-Shell-Erweiterung Shfusion.dll Assemblys installieren, indem Sie sie in den Datei-Explorer ziehen. Ab .NET Framework 4 ist Shfusion.dll veraltet.

Quelle: Gewusst wie: Installieren Sie eine Assembly im globalen Assemblycache

Ando
quelle
2
Sie müssten mit einem Administratorkonto angemeldet sein, da "Ausführen als" für Drag & Drop nicht verfügbar ist.
Salman Siddiqui
6
Dies hat keine Auswirkungen auf mein Ende - die Bibliothek wird nicht hinzugefügt, es gibt keine Fehlermeldung. Ich benutze ein Administratorkonto.
8
"In früheren Versionen von .NET Framework konnten Sie mit der Windows-Shell-Erweiterung Shfusion.dll Assemblys installieren, indem Sie sie in den Datei-Explorer ziehen. Ab .NET Framework 4 ist Shfusion.dll veraltet." msdn.microsoft.com/en-us/library/dkkx7f79(v=vs.110).aspx
njplumridge
Schwerpunkt auf "Drag and Drop" - Kopieren und Einfügen funktioniert nicht
Todd
13

Diese Antworten sagen Ihnen übrigens nicht, dass sich gacutil in C: \ WINDOWS \ Microsoft.NET \ Framework \ v1.1 * befindet.

Ich hatte es nicht in meinem v2.0-Ordner. Aber ich habe versucht, die DLL in den Ordner C: \ WINDOWS \ Assembly zu ziehen und dort abzulegen, wie hier zuvor vorgeschlagen, und das war einfacher und funktioniert, solange es sich um eine .NET-Bibliothek handelt. Ich habe auch eine COM-Bibliothek ausprobiert und dies schlug mit dem Fehler fehl, dass ein Assemblymanifest erwartet wurde. Ich weiß, dass dies hier nicht die Frage war, dachte aber, ich würde erwähnen, dass, falls jemand herausfindet, dass er es nicht hinzufügen kann, dies möglicherweise der Grund ist.

-Tom

Tom
quelle
1
Diese Antworten sagen Ihnen nicht, dass gacutildies nicht mit Windows geliefert wird.
Ian Boyd
13

Aus Wikipedia :

gacutil.exe ist das .NET-Dienstprogramm, mit dem mit dem GAC gearbeitet wird .

Mit dem folgenden Befehl können Sie die Verfügbarkeit einer gemeinsam genutzten Assembly in GAC überprüfen :

gacutil.exe /l "assemblyName"

Mit dem folgenden Befehl kann eine gemeinsam genutzte Assembly im GAC registriert werden :

gacutil.exe /i "assemblyName"

Oder indem Sie eine Assembly-Datei über die GUI an den folgenden Speicherort ablegen:

%windir%\assembly\

Andere Optionen für dieses Dienstprogramm werden kurz beschrieben, wenn Sie das /?Flag verwenden, d. H.

gacutil.exe /?
tbischel
quelle
GacUtil wird nicht mit .NET geliefert. Der Shell-Drop-and-Drop-Helfer, mit dem Drag & Drop zum Registrieren von Assemblys verwendet wurde, funktioniert nicht mehr.
Ian Boyd
5

Probieren Sie GACView aus, wenn Sie Angst vor Eingabeaufforderungen haben.

Sie haben den PFAD in DOS nicht richtig eingestellt. Sie müssen den Pfad dorthin verweisen, wo sich der Gacutil befindet, um ihn unter DOS zu verwenden.

abmv
quelle
4
  • Führen Sie die Developer-Eingabeaufforderung für V2012 oder eine beliebige auf Ihrem System installierte Version aus

  • gacutil / i pathofDll

  • Eingeben

Getan!!!

BelgiumPferd
quelle
Erwähnung der Eingabeaufforderung "Entwickler", gut! da gacutil nicht verfügbar ist, um Eingabeaufforderung zu erstellen
Muds
3

Wie ando sagte, ziehen Sie die Assembly einfach per Drag & Drop in den Ordner C: \ windows \ Assembly. Es klappt.

user264138
quelle
Schwerpunkt auf "Drag and Drop" - Kopieren und Einfügen funktioniert nicht
Todd
1
Drag & Drop funktioniert nicht mehr. Der Shell Fusion-Handler ist seit langem veraltet.
Ian Boyd
1

Die oben genannten Lösungen sehen wunderbar aus. Um es einfach zu machen, müssen Sie vermutlich nur den Namen der Assembly zusammen mit dem vollständigen Pfad eingeben:

gacutil -i C:\MyDlls\GacDeployedAssemblies\dllname.dll

Achten Sie auf C: \ MyDlls \ GacDeployedAssemblies

vamsee
quelle
1

Unter Windows 7 befinden sich gacutil.exe (zum Einfügen der Assembly in GAC) und sn.exe (zum Sicherstellen der Eindeutigkeit der Assembly) unter C: \ Programme (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin

Gehen Sie dann wie unten gezeigt zum Pfad von gacutil. Führen Sie den folgenden Befehl aus, nachdem Sie den Pfad Ihrer Baugruppe ersetzt haben

C: \ Programme (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin> gacutil / i "durch Pfad Ihrer Assembly ersetzen, die in GAC abgelegt werden soll"

Kailash Dhaker
quelle
0

PublishGehen Sie von der Registerkarte zu application Files.

Klicken Sie dann auf unnecessary files.

Drücken Sie danach die Ausschlusstaste ok.

Erstellen Sie abschließend die Projektdateien und führen Sie die Projekte aus.

Prakash Dhar
quelle
0

Ich habe fast alles in den Kommentaren versucht und es hat nicht funktioniert. Also habe ich gacutil /i "path to my dll"von Powershell gemacht und es hat funktioniert.

Denken Sie auch an den Trick, die Umschalttaste zu drücken, wenn Sie im Windows Explorer mit der rechten Maustaste auf eine Datei klicken, um die Option Pfad kopieren zu erhalten.

Siderit Zackwehdex
quelle