GAC에서 어셈블리를 추출하는 방법은 무엇입니까?
어셈블리를 GAC에 직접 설치하는 패키지가 있습니다 (예 : % windows % / assembly의 깊은 곳).
GAC에서 실제 파일 시스템으로 실제 어셈블리 (DLL)를 어떻게 제거합니까?
감사.
이 기사 의 조언을 사용하여 GAC에서 어셈블리를 얻었습니다.
GAC에서 DLL 가져 오기
GAC에 배포 된 DLL (일반적으로 c : \ windows \ assembly에 위치)은 일반 DLL 파일로 보거나 사용할 수 없습니다. VS 프로젝트에서 직접 참조 할 수 없습니다. 개발자는 일반적으로 원본 DLL 파일의 사본을 보관하고 프로젝트 실행시 GAC의 어셈블리를 사용하는 개발 (디자인)시 프로젝트에서 해당 DLL 파일을 참조합니다.
GAC에서 어셈블리가 서명되고 배포 된 것으로 확인되면 실행 (런타임) 동안 CLR은 VS에서 디자인 타임 동안 참조 된 DLL 대신 GAC에서 어셈블리를 자동으로 선택합니다. 개발자가 원본 DLL을 삭제했거나 어떤 이유로 든 가지고 있지 않은 경우 GAC에서 DLL 파일을 가져 오는 방법이 있습니다. 다음 단계에 따라 GAC에서 DLL을 복사하십시오.
regsvr32 / u C : \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ shfusion.dll을 실행하십시오.
- shfusion.dll은 GAC 폴더를 뚜렷하게 보여주는 탐색기 확장 DLL입니다. 이 파일을 등록 해제하면 어셈블리 캐시 뷰어가 제거되고 GAC 폴더가 탐색기에서 일반 폴더로 표시됩니다.
"% windir % \ assembly \ GAC_MSIL"을 엽니 다.
DLL 폴더를 찾아 깊은 곳으로 이동하여 DLL을 찾으십시오.
하드 디스크 어딘가에 DLL을 복사하고 프로젝트에서 참조하십시오.
"regsvr32 % windir % \ Microsoft.NET \ Framework \ <. NET version directory> \ shfusion.dll"을 실행하여 shfusion.dll 파일을 다시 등록하고 GAC의 원래 고유 한 뷰를 다시 얻으십시오.
여기에 설명 된 방법은 매우 쉽습니다.
기사에서 요약 :
- 네트워크 드라이브 매핑 (탐색기-> 도구)
- \ servername \ 폴더 (
\\YourServer\C$\Windows\Assembly
)에 매핑
- \ servername \ 폴더 (
- 관리자 인 경우 공유 할 필요가 없습니다
- 드라이브를 탐색하고 어셈블리를 추출하십시오.
명령 프롬프트를 열고 다음을 입력하십시오.
cd c:\windows\assembly\GAC_MSIL
xcopy . C:\GacDump /s /y
이것은 전체 GAC의 덤프를 제공해야합니다
즐겨!
예.
DisableCacheViewer 레지스트리 키 추가
HKLM \ Software \ Microsoft \ Fusion \ 아래에 DisableCacheViewer라는 이름으로 새 dword 키를 만들고 [DWORD] 값을 1로 설정하십시오.
Windows 탐색기로 돌아가서 어셈블리 폴더로 이동하면 일반 파일 시스템보기가됩니다.
가장 쉬운 방법은 David가 언급 한 것처럼 명령 줄을 통해 수행하는 것입니다. 유일한 트릭은 .dll이 단순히 C : \ Windows \ Assembly에 있지 않다는 것입니다. C : \ Windows \ Assembly \ GAC \ [ASSEMBLY_NAME] \ [VERSION_NUMBER] _ [PUBLIC KEY]로 이동해야합니다. 그런 다음 다음을 사용하여 복사를 수행 할 수 있습니다.
[ASSEMBLY_NAME] .dll c : \ (또는 원하는 위치)를 복사하십시오.
희망이 도움이됩니다.
내가 찾은 쉬운 방법은 명령 프롬프트를 열고 원하는 DLL을 찾을 때까지 언급 한 폴더를 탐색하는 것입니다. 복사 명령을 사용하여 가져올 수 있습니다. Windows 탐색기에는이 폴더에 대한 "유용한"특수보기가 있습니다.
열기 RUN은 다음 입력 %windir%\assembly\GAC_MSIL
하면 다음 탐색 당신의 DLL에라는 이름의 폴더 수있는이 폴더 '보기에서 DLL을 열 것, 그것을 열고, 당신은 당신의 DLL 파일을 발견하고 쉽게 복사
저는 PowerShell GAC 의 저자입니다 . PowerShell GAC를 사용하면 폴더 구조 변경과 같은 GAC 내부에 의존하지 않고 GAC에서 어셈블리를 추출 할 수 있습니다.
Get-GacAssembly SomeCompany* | Get-GacAssemblyFile | Copy-Item -Dest C:\Temp\SomeCompany
이 MSDN 블로그 게시물에서는 GAC에서 DLL을 추출하는 세 가지 방법을 설명합니다. 지금까지 제공된 방법에 대한 유용한 요약.
레지스트리를 수정하거나 명령 줄, powershell 또는 다른 프로그램을 사용하지 않고 GAC 내부를 살펴볼 수있는 방법을 찾았습니다.
새 바로 가기를 만듭니다 (어디서나). 그런 다음 대상을 갖도록 바로 가기를 수정하십시오.
%windir%\assembly\GAC_MSIL\System
이 바로 가기를 열면 GAC 내부의 시스템 폴더 (모든 사람이 가져야 함)로 이동하여 더 높은 디렉토리로 전환 한 다음 원하는 다른 폴더를 탐색 할 수있는 놀라운 부작용이 있습니다 (dll 파일 등 참조).
Windows 7 및 Windows Server 2012에서 이것을 테스트했습니다.
참고 : 바로 가기를 만들 때 해당 대상을 사용할 수는 없지만 편집 할 수는 있습니다.
즐겨!
C : \ Windows로 이동하여 [어셈블리] 폴더를 마우스 오른쪽 버튼으로 클릭하고 아카이브에 추가를 선택하십시오.
조금만 기다려
vola GAC의 모든 어셈블리를 포함하는 아카이브 파일이 있습니다.
대신 파일 브라우저 "Total Commander"를 사용하십시오.
- Total Commander에서 "숨겨진 / 시스템 파일 표시"설정 사용
- "c : \ windows \ assembly"로 이동
- 부
From a Powershell script, you can try this. I only had a single version of the assembly in the GAC so this worked just fine.
cd "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\"
Get-ChildItem assemblypath -Recurse -Include *.dll | Copy-Item -Destination "c:\folder to copy to"
where the assembly path can use wildcards.
One other direction--just unpack the MSI file and get the goodies that way. Saves you from the eventual uninstall . . .
Copying from a command line is unnecessary. I typed in the name of the DLL from the Start Window search. I chose See More Results. The one in the GAC was returned in the search window. I right clicked on it and said open file location. It opened in normal Windows Explorer. I copied the file. I closed the window. Done.
참고URL : https://stackoverflow.com/questions/714907/how-to-extract-an-assembly-from-the-gac
'Programing' 카테고리의 다른 글
이름으로 쿠키를 삭제 하시겠습니까? (0) | 2020.06.28 |
---|---|
Python sqlite3 API를 사용하는 테이블, db 스키마, 덤프 등의 목록 (0) | 2020.06.28 |
VC2010 Express에서 포함 파일 'afxres.h'를 열 수 없습니다 (0) | 2020.06.27 |
목록의 키와 기본값이 0으로 된 사전을 어떻게 만들 수 있습니까? (0) | 2020.06.27 |
비동기 네트워크 요청으로 신속한 루프 실행이 완료 될 때까지 기다립니다. (0) | 2020.06.27 |