Jak zarejestrować plik .NET DLL w GAC?

83

Zrobiłem .DLLplik .NET , który chcę zarejestrować w GAC .

Użyłem tego polecenia w wierszu polecenia systemu Windows Server 2003 :

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

Mówi, że ścieżka jest nieprawidłowa.

Czy muszę używać tego w zachęcie cmd platformy .NET? Jeśli tak jest, nie mogę znaleźć zachęty cmd .NET.

Vineet
źródło
Jaki był dokładny komunikat o błędzie? Czy odnosi się do ścieżki do gacutil.exelub do zrobienia dllname.dll?
UuDdLrLrSs

Odpowiedzi:

102

Możesz to zrobić za pomocą gacutilnarzędzia. W najprostszej formie:

gacutil /i yourdll.dll

Wiersz polecenia programu Visual Studio znajduje się w menu Start w obszarze Programy -> Visual Studio -> Narzędzia programu Visual Studio .

Fredrik Mörk
źródło
7
Jeśli nie masz programu Visual Studio, możesz uzyskać dostęp do gacutil.exe w C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ Przynajmniej tam, gdzie istnieje na serwerze Win2012R2 .
sonyisda1
Mam funkcje, które wymagają podniesienia uprawnień, więc umieszczenie tej biblioteki dll w asemblerze będzie miało uprawnienia? Czy użytkownik niebędący administratorem będzie mógł uruchamiać te funkcje w elewacji?
Susarla Nikhilesh
Mój komputer miał go w C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Tools - wymagało również, żebym uruchomił polecenie za pomocą wiersza poleceń z podwyższonym poziomem uprawnień.
neminem
35

Będziesz potrzebował:

  • Silna nazwa zestawu (Visual Studio, właściwości projektu, karta podpisywanie, podpisz zestaw)
  • Zmień zdarzenia kompilacji (Właściwości projektu, karta Zdarzenia kompilacji, wiersz poleceń po kompilacji)
   cd C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin
   gacutil.exe / i "$ (ścieżka docelowa)" / f / nologo
   gacutil / l "$ (TargetName)" / nologo

Teraz za każdym razem, gdy tworzysz swój projekt, zostanie on zainstalowany na GAC.

Rubens Farias
źródło
W programie Visual Studio 2017 musisz uruchomić VS jako administrator lub gacutil nie powiedzie się z powodu braku uprawnień.
Nathan
19

Po prostu przeciągnij i upuść plik DLL do folderu C:\Windows\assemblyza pomocą Eksploratora Windows.

Ostrzeżenie:

We wcześniejszych wersjach systemu .NET Framework rozszerzenie powłoki systemu Windows Shfusion.dll umożliwia instalowanie zestawów przez przeciąganie ich do Eksploratora plików. Począwszy od .NET Framework 4, Shfusion.dll jest przestarzały.

Źródło: instrukcje: instalowanie zestawu w globalnej pamięci podręcznej zestawów

Ando
źródło
2
Musisz być zalogowany na koncie administratora, ponieważ „Uruchom jako” nie jest dostępne dla przeciągania i upuszczania.
Salman Siddiqui, 8-14
6
Nie ma to wpływu na mój koniec - biblioteka nie jest dodana, nie ma komunikatu o błędzie. Używam konta administratora.
8
„We wcześniejszych wersjach systemu .NET Framework rozszerzenie powłoki systemu Windows Shfusion.dll umożliwiało instalowanie zestawów przez przeciąganie ich w Eksploratorze plików. Począwszy od .NET Framework 4, plik Shfusion.dll jest przestarzały”. msdn.microsoft.com/en-us/library/dkkx7f79(v=vs.110).aspx
njplumridge
Nacisk na „przeciągnij i upuść” - kopiowanie i wklejanie nie działa
Todd
14

Z Wikipedii :

gacutil.exe to narzędzie .NET używane do pracy z GAC .

Można sprawdzić dostępność udostępnionego zestawu w GAC za pomocą polecenia:

gacutil.exe /l "assemblyName"

Można zarejestrować udostępniony zestaw w GAC za pomocą polecenia:

gacutil.exe /i "assemblyName"

Lub upuszczając plik zespołu do następującej lokalizacji za pomocą GUI:

%windir%\assembly\

Inne opcje tego narzędzia zostaną pokrótce opisane, jeśli użyjesz /?flagi, to znaczy:

gacutil.exe /?
tbischel
źródło
GacUtil nie zawiera .NET. Pomocnik powłoki do upuszczania i upuszczania, który służył do przeciągania i upuszczania w celu rejestrowania zestawów, już nie działa.
Ian Boyd
13

Nawiasem mówiąc, te odpowiedzi nie mówią, że gacutil znajduje się w C: \ WINDOWS \ Microsoft.NET \ Framework \ v1.1 *.

Nie miałem go w folderze v2.0. Ale próbowałem przeciągnąć i upuścić bibliotekę DLL do folderu C: \ WINDOWS \ Assembly, jak sugerowano wcześniej, a to było łatwiejsze i działa, o ile jest to biblioteka .NET. Próbowałem również biblioteki COM i nie powiodło się to z powodu błędu, że oczekiwał manifestu zestawu. Wiem, że nie o to tutaj chodziło, ale pomyślałem, że wspomnę o tym, jeśli ktoś się dowie, że nie może tego dodać, to może być powód.

-Tomek

Tomek
źródło
1
Te odpowiedzi nie mówią, że gacutilnie ma systemu Windows.
Ian Boyd
5

Wypróbuj GACView, jeśli obawiasz się poleceń.

Nie ustawiłeś poprawnie PATH w DOS. Musisz wskazać ścieżkę do miejsca, w którym znajduje się gacutil, aby użyć go w DOS.

abmv
źródło
4
  • Uruchom wiersz polecenia dewelopera dla V2012 lub dowolnej wersji zainstalowanej w systemie

  • gacutil / i pathofDll

  • Wchodzić

Gotowe!!!

Belgia Koń
źródło
wspominając o wierszu polecenia „Developer”, dobrze! ponieważ gacutil nie jest dostępny do budowania wiersza poleceń
Błoto
3

Jak powiedział ando, po prostu przeciągnij i upuść zestaw do folderu C: \ windows \ assembly. To działa.

user264138
źródło
Nacisk na „przeciągnij i upuść” - kopiowanie i wklejanie nie działa
Todd
1
Przeciągnij i upuść już nie działa. Program obsługi Shell Fusion od dawna jest przestarzały.
Ian Boyd
1

Powyższe rozwiązania prezentują się rewelacyjnie. Jednak, żeby być prostym, wystarczy, że wpiszesz nazwę zestawu wraz z pełną ścieżką, taką jak:

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

Zwracając uwagę na C: \ MyDlls \ GacDeployedAssemblies

vamsee
źródło
1

W przypadku systemu Windows 7 gacutil.exe (do umieszczenia zestawu w GAC) i sn.exe (w celu zapewnienia wyjątkowości zestawu) znajduje się w C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin

Następnie przejdź do ścieżki gacutil, jak pokazano poniżej, wykonaj poniższe polecenie po zamianie ścieżki zespołu

C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin> gacutil / i "zastąp ścieżką zestawu do umieszczenia w GAC"

Kailash Dhaker
źródło
0

Z Publishzakładki przejdź do application Files.

Następnie kliknij unnecessary files.

Następnie wykonaj wykluczenie prasy ok.

Na koniec skompiluj pliki projektu i uruchom projekty.

Prakash Dhar
źródło
0

Próbowałem prawie wszystkiego w komentarzach i nie zadziałało. Tak zrobiłem gacutil /i "path to my dll"z Powershell i zadziałało.

Zapamiętaj także sztuczkę polegającą na naciśnięciu klawisza Shift po kliknięciu pliku prawym przyciskiem myszy w Eksploratorze Windows, aby uzyskać opcję Kopiuj ścieżkę.

Siderite Zackwehdex
źródło