Jawaban:
Benar, jadi pada dasarnya ini adalah cara untuk menjaga agar DLL dapat diakses secara global tanpa khawatir tentang konflik. Tidak ada lagi DLL Hell. Setiap arsitektur dan versi mendapatkan tempat tinggalnya sendiri.
Itu juga mendapatkan caranya sendiri untuk menjelajahinya di Explorer, jadi jika Anda pergi ke
C: \ Windows \ assembly
Di windows explorer ia mencantumkan semua DLL.
Tetapi jika Anda menyalakan cmd
, Anda dapat melihat bagaimana itu benar-benar terstruktur:
C: \ Users \ tritter> cd C: \ Windows \ assembly C: \ Windows \ assembly> dir Direktori C: \ Windows \ assembly 07/20/2009 02:18 PM <DIR> GAC 06/17/2009 16:22 PM <DIR> GAC_32 06/17/2009 16:22 PM <DIR> GAC_64 06/17/2009 16:22 PM <DIR> GAC_MSIL ...menggunting... 0 File 0 byte 9 Dir (s) 90.538.311.680 byte gratis C: \ Windows \ assembly> cd GAC_64 C: \ Windows \ assembly \ GAC_64> dir Direktori C: \ Windows \ assembly \ GAC_64 06/17/2009 16:22 PM <DIR>. 06/17/2009 16:22 PM <DIR> .. 01/19/2008 09:54 AM <DIR> blbproxy ...menggunting... 01/19/2008 09:54 AM <DIR> srmlib 01/19/2008 06:11 AM <DIR> System.Data 01/19/2008 06:11 AM <DIR> System.Data.OracleClient ...menggunting... 0 File 0 byte 34 Dir (s) 90.538.311.680 byte gratis C: \ Windows \ assembly \ GAC_64> cd System.Data C: \ Windows \ assembly \ GAC_64 \ System.Data> dir Direktori C: \ Windows \ assembly \ GAC_64 \ System.Data 01/19/2008 06:11 AM <DIR>. 01/19/2008 06:11 AM <DIR> .. 04/11/2009 12:20 PM <DIR> 2.0.0.0__b77a5c561934e089 0 File 0 byte 3 Dir (s) 90.538.311.680 byte gratis C: \ Windows \ assembly \ GAC_64 \ System.Data> cd 2.0.0.0__b77a5c561934e089 C: \ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089> dir Direktori C: \ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089 04/11/2009 12:20 PM <DIR>. 04/11/2009 12:20 PM <DIR> .. 04/11/2009 12:12 PM 3.008.512 System.Data.dll 1 File 3.008.512 byte 2 Dir (s) 90.538.311.680 byte gratis C: \ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089>
Di sini Anda dapat melihat versi 2.0.0.0__b77a5c561934e089 dari System.Data.
DLL diidentifikasi oleh 5 bagian:
Meskipun 3 yang pertama umumnya yang besar.
Mari kita jabarkan:
Jadi GAC harus menjadi tempat untuk menyimpan pustaka kode sehingga dapat diakses oleh semua aplikasi yang berjalan pada mesin.
Setiap komputer tempat runtime bahasa umum diinstal memiliki cache kode seluruh mesin yang disebut cache perakitan global. Cache rakitan global menyimpan rakitan yang khusus dirancang untuk dibagikan oleh beberapa aplikasi di komputer.
Anda harus berbagi rakitan dengan menginstalnya ke cache rakitan global hanya jika diperlukan. Sebagai pedoman umum, jaga dependensi rakitan agar tetap pribadi, dan cari rakitan di direktori aplikasi kecuali jika berbagi rakitan diperlukan secara eksplisit. Selain itu, tidak perlu memasang rakitan ke cache rakitan global agar dapat diakses oleh COM interop atau kode yang tidak dikelola.
Hal-hal yang dikandung MSDN mungkin mengejutkan Anda ... Anda biasanya dapat membacanya seperti artikel. Bit langsung dan paling penting di bagian atas, detail rumit lebih dalam. Ini jelas menjelaskan lebih baik daripada yang saya bisa.
Perhatikan bahwa Visual Studio menampilkan semua DLL di GAC di .NET tab pada jendela Referensi . (Klik kanan pada proyek di Solution Explorer dan pilih Add Reference.) Ini akan memberi Anda ide yang lebih menarik.
Global Assembly Cache (GAC) adalah folder di direktori Windows untuk menyimpan .NET assemblies yang secara khusus dirancang untuk dibagikan oleh semua aplikasi yang dijalankan pada suatu sistem. Assemblies dapat dibagikan di antara banyak aplikasi pada mesin dengan mendaftarkannya di cache Assembly global (GAC). GAC adalah mesin lebar cache lokal majelis yang dikelola oleh .NET Framework.
Aplikasi Exe, pertama-tama, referensi dari direktori saat ini ke subdirektori. Dan kemudian, direktori sistem. Direktori sistem VS6.0 adalah ..windows / system32. Direktori sistem .NET seperti jalur GAC di bawah ini.
Jalur GAC
1) C: \ Windows \ Assembly (untuk .NET 2.0 ~ 3.5)
2) C: \ Windows \ Microsoft.NET \ assembly (untuk .NET 4.0)
Cara memasang rakitan ke GAC (sebagai Administrator)
1) Seret dan Jatuhkan
2) Gunakan GacUtil.exe dengan Visual Studio Command Prompt
gacutil -i [Path][Assembly Name].dll
Cara menghapus instalan perakitan dari GAC (sebagai Administrator)
gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh