Jest pakiet, z którym mam do czynienia, który instaluje zestawy bezpośrednio do GAC (np. Gdzieś głęboko w% windows% / assembly).
Jak egzorcyzmować rzeczywisty zestaw (bibliotekę DLL) z GAC do normalnego systemu plików?
Dzięki.
źródło
Jest pakiet, z którym mam do czynienia, który instaluje zestawy bezpośrednio do GAC (np. Gdzieś głęboko w% windows% / assembly).
Jak egzorcyzmować rzeczywisty zestaw (bibliotekę DLL) z GAC do normalnego systemu plików?
Dzięki.
Skorzystałem z porady z tego artykułu, aby uzyskać zestaw z GAC.
Pobierz DLL z GAC
Biblioteki DLL raz wdrożone w GAC (zwykle zlokalizowane w c: \ windows \ assembly) nie mogą być przeglądane ani używane jako normalne pliki DLL. Nie można się do nich odwoływać bezpośrednio z projektu VS. Deweloperzy zwykle przechowują kopię oryginalnego pliku DLL i odwołują się do niej w projekcie w czasie programowania (projektowania), który wykorzystuje zestaw z GAC w czasie wykonywania projektu.
Podczas wykonywania (w czasie wykonywania), jeśli okaże się, że zestaw jest podpisany i wdrożony w GAC, środowisko CLR automatycznie pobiera zestaw z GAC zamiast z biblioteki DLL, do której odwołuje się podczas projektowania w VS. W przypadku, gdy programista usunął oryginalną bibliotekę DLL lub z jakiegoś powodu jej nie ma, istnieje sposób na pobranie pliku DLL z GAC. Wykonaj następujące kroki, aby skopiować bibliotekę DLL z GAC
Uruchom regsvr32 / u C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ shfusion.dll
- shfusion.dll jest rozszerzeniem DLL eksploratora, który nadaje folderowi GAC inny wygląd. Wyrejestrowanie tego pliku spowoduje usunięcie przeglądarki pamięci podręcznej zestawu, a folder GAC będzie wtedy widoczny jako każdy normalny folder w eksploratorze.
Otwórz „% windir% \ assembly \ GAC_MSIL”.
Przejdź do folderu DLL w głąb, aby znaleźć bibliotekę DLL.
Skopiuj bibliotekę DLL gdzieś na dysku twardym i skieruj ją stamtąd w swoim projekcie
Uruchom „regsvr32% windir% \ Microsoft.NET \ Framework \ <katalog wersji .NET> \ shfusion.dll”, aby ponownie zarejestrować plik shfusion.dll i przywrócić oryginalny, odrębny widok GAC.
shfusion.dll
nie obsługujeDllInstall()
punktu wejścia wywoływanego przezregsvr32
po przekazaniu/i
opcji. Pominięcie tej opcji umożliwia pomyślną ponowną rejestrację komponentu.Opisana tutaj metoda jest bardzo prosta:
http://andreasglaser.net/post/2008/08/05/Extract-assembly-from-Global-Assembly-Cache-(GAC)-with-network-drive-mapping.aspx
Podsumowanie z artykułu:
\\YourServer\C$\Windows\Assembly
)źródło
Otwórz wiersz polecenia i wpisz:
To powinno dać zrzut całego GAC
Cieszyć się!
źródło
Tak.
Dodaj klucz rejestru DisableCacheViewer
Utwórz nowy klucz dword w HKLM \ Software \ Microsoft \ Fusion \ o nazwie DisableCacheViewer i ustaw jego wartość [DWORD] na 1.
Wróć do Eksploratora Windows do folderu zespołu i będzie to normalny widok systemu plików.
źródło
Myślę, że najłatwiej jest zrobić to za pomocą wiersza poleceń, o którym wspomina David. Jedyna sztuczka polega na tym, że plik .dll nie znajduje się po prostu w C: \ Windows \ Assembly. Musisz przejść do C: \ Windows \ Assembly \ GAC \ [ASSEMBLY_NAME] \ [VERSION_NUMBER] _ [PUBLIC KEY]. Następnie możesz wykonać kopię za pomocą:
skopiuj [ASSEMBLY_NAME] .dll c: \ (lub dowolną lokalizację)
Mam nadzieję, że to pomoże.
źródło
Prostym sposobem, jaki znalazłem, jest otwarcie wiersza polecenia i przeglądanie wymienionego folderu, aż znajdziesz żądaną bibliotekę DLL - możesz następnie użyć polecenia kopiowania, aby go usunąć. Eksplorator Windows ma „pomocny” specjalny widok tego folderu.
źródło
Otwórz RUN, a następnie wpisz
%windir%\assembly\GAC_MSIL
, spowoduje to otwarcie twoich dll w widoku folderów, możesz następnie przejść do nazwanego folderu dll i otworzyć go, znajdziesz plik dll i łatwo go skopiujeszźródło
Jestem autorem PowerShell GAC . Dzięki PowerShell GAC możesz wyodrębniać zestawy z GAC bez polegania na elementach wewnętrznych GAC, takich jak zmiana struktury folderów.
źródło
W tym poście na blogu MSDN opisano trzy różne sposoby wyodrębniania biblioteki DLL z GAC. Przydatne podsumowanie dotychczas podanych metod.
źródło
Zamiast tego użyj przeglądarki plików „Total Commander”.
źródło
Myślę, że znalazłem sposób, aby zajrzeć do GAC bez modyfikowania rejestru lub korzystania z wiersza poleceń, PowerShell lub innych programów:
Utwórz nowy skrót (do dowolnego miejsca). Następnie zmodyfikuj skrót, aby cel był:
Otwarcie tego skrótu przenosi Cię do folderu System w GAC (który każdy powinien mieć) i ma wspaniały efekt uboczny, umożliwiając przejście do wyższego katalogu, a następnie przeglądanie dowolnego innego folderu, który chcesz (i przeglądanie plików dll itp.)
Przetestowałem to na Windows 7 i Windows Server 2012.
Uwaga: nie pozwoli ci to użyć tego celu podczas tworzenia skrótu, ale pozwoli ci go edytować.
Cieszyć się!
źródło
po prostu przejdź do C: \ Windows znajdź folder [zespół], kliknij prawym przyciskiem myszy i wybierz dodaj do archiwum
Poczekaj chwilę
vola masz plik archiwum zawierający wszystkie zespoły w twoim GAC
źródło
Możesz spróbować tego ze skryptu Powershell. Miałem tylko jedną wersję zespołu w GAC, więc to działało dobrze.
gdzie ścieżka zestawu może używać symboli wieloznacznych.
źródło
W innym kierunku - po prostu rozpakuj plik MSI i zdobądź w ten sposób gadżety. Oszczędza przed ewentualnym odinstalowaniem. . .
źródło
Kopiowanie z wiersza poleceń nie jest konieczne. Wpisałem nazwę biblioteki DLL z wyszukiwania w oknie Start. Wybrałem opcję Zobacz więcej wyników. Ten z GAC został zwrócony w oknie wyszukiwania. Kliknąłem go prawym przyciskiem myszy i powiedziałem, że otwórz lokalizację pliku. Otworzył się w normalnym Eksploratorze Windows. Skopiowałem plik. Zamknąłem okno. Gotowe.
źródło