Câu trả lời:
Đúng vậy, về cơ bản, đó là cách để giữ DLL có thể truy cập toàn cầu mà không phải lo lắng về xung đột. Không còn địa ngục DLL. Mỗi kiến trúc và phiên bản có nơi ở riêng.
Nó cũng có cách riêng để duyệt nó trong Explorer, vì vậy nếu bạn đi đến
C: \ Windows \ lắp ráp
Trong windows explorer nó liệt kê tất cả các DLL.
Nhưng nếu bạn kích hoạt cmd
, bạn có thể thấy nó thực sự có cấu trúc như thế nào:
C: \ Users \ tritter> cd C: \ Windows \ assembly C: \ Windows \ assembly> dir Thư mục của C: \ Windows \ assembly 20/07/2009 02:18 PM <TRỰC TIẾP> GAC 17/12/2009 04:22 PM <TRỰC TIẾP> GAC_32 17/12/2009 04:22 PM <TRỰC TIẾP> GAC_64 17/12/2009 04:22 PM <TRỰC TIẾP> GAC_MSIL ... bắn tỉa ... 0 Tệp 0 byte 9 Dir (s) 90,538,311,680 byte miễn phí C: \ Windows \ lắp ráp> cd GAC_64 C: \ Windows \ assembly \ GAC_64> dir Thư mục của C: \ Windows \ assembly \ GAC_64 17/12/2009 04:22 PM <TRỰC TIẾP>. 17/12/2009 04:22 PM <TRỰC TIẾP> .. 19/1/2008 09:54 AM <TRỰC TIẾP> blbproxy ... bắn tỉa ... 19/1/2008 09:54 AM <TRỰC TIẾP> srmlib 19/1/2008 06:11 AM <TRỰC TIẾP> System.Data 19/1/2008 06:11 AM <TRỰC TIẾP> System.Data.OracleClient ... bắn tỉa ... 0 Tệp 0 byte 34 Dir (s) 90,538,311,680 byte miễn phí C: \ Windows \ assembly \ GAC_64> cd System.Data C: \ Windows \ assembly \ GAC_64 \ System.Data> dir Thư mục của C: \ Windows \ assembly \ GAC_64 \ System.Data 19/1/2008 06:11 AM <TRỰC TIẾP>. 19/1/2008 06:11 AM <TRỰC TIẾP> .. 04/11/2009 12:20 PM <TRỰC TIẾP> 2.0.0.0__b77a5c561934e089 0 Tệp 0 byte 3 Dir (s) 90,538,311,680 byte miễn phí 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 Thư mục của C: \ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089 04/11/2009 12:20 PM <TRỰC TIẾP>. 04/11/2009 12:20 PM <TRỰC TIẾP> .. 04/11/2009 12:12 PM 3.008.512 System.Data.dll 1 tệp 3,008,512 byte 2 Dir (s) 90,538,311,680 byte miễn phí C: \ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089>
Tại đây bạn có thể xem phiên bản 2.0.0.0__b77a5c561934e089 của System.Data.
Một DLL được xác định bởi 5 phần:
Mặc dù 3 người đầu tiên nói chung là những người lớn.
Hãy phá vỡ nó:
Vì vậy, GAC phải là nơi lưu trữ các thư viện mã để chúng có thể truy cập được đối với tất cả các ứng dụng đang chạy trên máy.
Mỗi máy tính nơi cài đặt thời gian chạy ngôn ngữ chung có bộ đệm mã toàn máy được gọi là bộ đệm lắp ráp toàn cầu. Bộ nhớ cache lắp ráp toàn cầu lưu trữ các tập hợp được chỉ định cụ thể để được chia sẻ bởi một số ứng dụng trên máy tính.
Bạn nên chia sẻ các hội đồng bằng cách cài đặt chúng vào bộ đệm lắp ráp toàn cầu chỉ khi bạn cần. Như một hướng dẫn chung, giữ cho các phụ thuộc lắp ráp ở chế độ riêng tư và định vị các cụm trong thư mục ứng dụng trừ khi việc chia sẻ một lắp ráp được yêu cầu rõ ràng. Ngoài ra, không cần thiết phải cài đặt các cụm vào bộ đệm lắp ráp toàn cầu để làm cho chúng có thể truy cập được vào mã COM xen kẽ hoặc không được quản lý.
Những thứ MSDN chứa có thể làm bạn ngạc nhiên ... bạn thường có thể đọc nó như một bài viết. Các bit đơn giản và quan trọng nhất ở trên cùng, các chi tiết phức tạp sâu hơn. Nó chắc chắn giải thích nó tốt hơn tôi có thể.
Lưu ý rằng Visual Studio hiển thị tất cả các DLL trong GAC trong tab .NET của cửa sổ Tham chiếu . (Nhấp chuột phải vào một dự án trong Solution Explorer và chọn Thêm tham chiếu.) Điều này sẽ cung cấp cho bạn một ý tưởng hữu hình hơn.
Global hội Cache (GAC) là một thư mục trong thư mục Windows để lưu trữ các cụm .NET được chỉ định cụ thể để được chia sẻ bởi tất cả các ứng dụng được thực thi trên một hệ thống. Các hội đồng có thể được chia sẻ giữa nhiều ứng dụng trên máy bằng cách đăng ký chúng trong bộ đệm hội đồng toàn cầu (GAC). GAC là một bộ máy rộng bộ đệm cục bộ của các cụm được duy trì bởi .NET Framework.
Ứng dụng exe, trước hết, tham chiếu từ thư mục hiện tại đến thư mục con. Và sau đó, thư mục hệ thống. Thư mục hệ thống VS6.0 là ..windows / system32. Thư mục hệ thống .NET giống như đường dẫn GAC bên dưới.
Đường dẫn GAC
1) C: \ Windows \ hội (cho .NET 2.0 ~ 3.5)
2) C: \ Windows \ Microsoft.NET \ assembly (cho .NET 4.0)
Cách cài đặt một hội đồng vào GAC (với tư cách Quản trị viên)
1) Kéo và thả
2) Sử dụng GacUtil.exe với Dấu nhắc lệnh của Visual Studio
gacutil -i [Path][Assembly Name].dll
Cách gỡ cài đặt một hội đồng từ GAC (với tư cách Quản trị viên)
gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh