Ada paket yang harus saya tangani yang menginstal rakitan langsung ke GAC (misalnya di suatu tempat jauh di% windows% / assembly).
Bagaimana cara mengeluarkan rakitan aktual (DLL) dari GAC ke sistem file normal?
Terima kasih.
sumber
Ada paket yang harus saya tangani yang menginstal rakitan langsung ke GAC (misalnya di suatu tempat jauh di% windows% / assembly).
Bagaimana cara mengeluarkan rakitan aktual (DLL) dari GAC ke sistem file normal?
Terima kasih.
Saya menggunakan saran dari artikel ini untuk mendapatkan perakitan dari GAC.
Dapatkan DLL Keluar dari GAC
DLL setelah diterapkan di GAC (biasanya terletak di c: \ windows \ assembly) tidak dapat dilihat atau digunakan sebagai file DLL normal. Mereka tidak dapat dirujuk langsung dari proyek VS. Pengembang biasanya menyimpan salinan file DLL asli dan merujuknya dalam proyek pada waktu pengembangan (desain), yang menggunakan rakitan dari GAC selama waktu proyek berjalan.
Selama eksekusi (run-time) jika perakitan ditemukan ditandatangani dan disebarkan di GAC, CLR secara otomatis mengambil perakitan dari GAC alih-alih DLL yang direferensikan selama waktu desain di VS. Jika pengembang telah menghapus DLL asli atau tidak memilikinya karena alasan tertentu, ada cara untuk mendapatkan file DLL dari GAC. Ikuti langkah-langkah berikut untuk menyalin DLL dari GAC
Jalankan regsvr32 / u C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ shfusion.dll
- shfusion.dll adalah DLL ekstensi explorer yang memberikan tampilan berbeda ke folder GAC. Membatalkan pendaftaran file ini akan menghapus penampil cache assembly dan folder GAC kemudian akan terlihat sebagai folder normal di explorer.
Buka “% windir% \ assembly \ GAC_MSIL”.
Jelajahi folder DLL Anda ke dalam untuk menemukan DLL Anda.
Salin DLL di suatu tempat di hard disk Anda dan rujuk dari sana di proyek Anda
Jalankan "regsvr32% windir% \ Microsoft.NET \ Framework \ <. Direktori versi NET> \ shfusion.dll" untuk mendaftarkan ulang file shfusion.dll dan mendapatkan kembali tampilan berbeda asli dari GAC.
shfusion.dll
tidak mendukungDllInstall()
titik masuk yang dipanggilregsvr32
ketika melewati/i
opsi. Menghilangkan opsi itu memungkinkan untuk mendaftarkan ulang komponen dengan sukses.Metode yang dijelaskan di sini sangat mudah:
http://andreasglaser.net/post/2008/08/05/Extract-assembly-from-Global-Assembly-Cache-(GAC)-with-network-drive-mapping.aspx
Ringkasan dari Artikel:
\\YourServer\C$\Windows\Assembly
)sumber
Buka Command Prompt dan Ketik:
cd c:\windows\assembly\GAC_MSIL xcopy . C:\GacDump /s /y
Ini harus memberikan dump dari seluruh GAC
Nikmati!
sumber
Iya.
Tambahkan Kunci Registri DisableCacheViewer
Buat kunci dword baru di bawah HKLM \ Software \ Microsoft \ Fusion \ dengan nama DisableCacheViewer dan setel nilai [DWORD] ke 1.
Kembali ke Windows Explorer ke folder perakitan dan itu akan menjadi tampilan sistem file normal.
sumber
Menurut saya cara termudah adalah melakukannya melalui baris perintah seperti yang disebutkan David. Trik satu-satunya adalah bahwa .dll tidak hanya terletak di C: \ Windows \ Assembly. Anda harus menavigasi ke C: \ Windows \ Assembly \ GAC \ [ASSEMBLY_NAME] \ [VERSION_NUMBER] _ [PUBLIC KEY]. Anda kemudian dapat melakukan penyalinan menggunakan:
salin [ASSEMBLY_NAME] .dll c: \ (atau lokasi mana pun yang Anda inginkan)
Semoga membantu.
sumber
Cara mudah yang saya temukan adalah dengan membuka command prompt dan menelusuri folder yang Anda sebutkan sampai Anda menemukan DLL yang Anda inginkan - Anda kemudian dapat menggunakan perintah salin untuk mengeluarkannya. Windows Explorer memiliki tampilan khusus yang "membantu" dari folder ini.
sumber
Buka RUN lalu ketik
%windir%\assembly\GAC_MSIL
, ini akan membuka dll Anda di tampilan folder Anda kemudian dapat menavigasi ke folder bernama dll Anda dan membukanya, Anda akan menemukan file dll Anda dan menyalinnya dengan mudahsumber
Saya adalah penulis PowerShell GAC . Dengan PowerShell GAC Anda dapat mengekstrak rakitan dari GAC tanpa bergantung pada internal GAC seperti mengubah struktur folder.
Get-GacAssembly SomeCompany* | Get-GacAssemblyFile | Copy-Item -Dest C:\Temp\SomeCompany
sumber
Posting blog MSDN ini menjelaskan tiga cara terpisah untuk mengekstrak DLL dari GAC. Ringkasan berguna dari metode yang diberikan sejauh ini.
sumber
Gunakan browser file "Total Commander" sebagai gantinya.
sumber
Saya pikir saya menemukan cara untuk melihat ke dalam GAC tanpa memodifikasi registri atau menggunakan baris perintah, PowerShell, atau program lain:
Buat pintasan baru (ke mana saja). Kemudian ubah pintasan agar memiliki target menjadi:
Membuka pintasan ini membawa Anda ke folder Sistem di dalam GAC (yang seharusnya dimiliki semua orang) dan memiliki efek samping yang luar biasa yaitu membiarkan Anda beralih ke direktori yang lebih tinggi dan kemudian menjelajah ke folder lain yang Anda inginkan (dan melihat file dll, dll)
Saya menguji ini di windows 7 dan windows server 2012.
Catatan: Ini tidak akan membiarkan Anda menggunakan target itu saat membuat pintasan tetapi akan membiarkan Anda mengeditnya.
Nikmati!
sumber
cukup arahkan ke C: \ Windows temukan folder [assembly] klik kanan dan pilih tambahkan ke arsip
Tunggu sebentar
vola Anda memiliki file arsip yang berisi semua majelis di GAC Anda
sumber
Dari skrip Powershell, Anda dapat mencoba ini. Saya hanya memiliki satu versi perakitan di GAC jadi ini bekerja dengan baik.
cd "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\" Get-ChildItem assemblypath -Recurse -Include *.dll | Copy-Item -Destination "c:\folder to copy to"
di mana jalur perakitan dapat menggunakan karakter pengganti.
sumber
Satu arah lain - cukup buka file MSI dan dapatkan barang dengan cara itu. Menyelamatkan Anda dari pencopotan pemasangan. . .
sumber
Menyalin dari baris perintah tidak diperlukan. Saya mengetik nama DLL dari pencarian Start Window. Saya memilih See More Results. Yang ada di GAC dikembalikan di jendela pencarian. Saya mengklik kanan padanya dan berkata buka lokasi file. Itu dibuka di Windows Explorer normal. Saya menyalin file. Saya menutup jendela. Selesai.
sumber