เพียงแค่มองหาภาพรวมสั้น ๆ ของ GAC สำหรับคนธรรมดาไม่ใช่ลิงค์โปรด
เพียงแค่มองหาภาพรวมสั้น ๆ ของ GAC สำหรับคนธรรมดาไม่ใช่ลิงค์โปรด
คำตอบ:
ถูกต้องดังนั้นโดยทั่วไปมันเป็นวิธีที่ทำให้ DLLs สามารถเข้าถึงได้ทั่วโลกโดยไม่ต้องกังวลเรื่องความขัดแย้ง ไม่มี DLL Hell อีกแล้ว สถาปัตยกรรมและเวอร์ชันแต่ละรุ่นจะมีสถานที่เป็นของตัวเอง
นอกจากนี้ยังทำให้เป็นวิธีการเรียกดูใน Explorer ดังนั้นหากคุณไปที่
C: \ Windows \ ชุมนุม
ใน windows explorer จะแสดง DLLs ทั้งหมด
แต่ถ้าคุณลุกขึ้นcmd
คุณจะเห็นว่ามันมีโครงสร้างจริงๆ:
C: \ Users \ tritter> cd C: \ Windows \ assembly C: \ Windows \ ชุมนุม> dir ไดเรกทอรีของ C: \ Windows \ assembly 07/20/2009 02:18 PM <DIR> GAC 06/17/2009 04:22 PM <DIR> GAC_32 06/17/2009 04:22 PM <DIR> GAC_64 06/17/2009 04:22 PM <DIR> GAC_MSIL ... บุคคลที่ไม่สำคัญ ... 0 ไฟล์ 0 ไบต์ 9 Dir ฟรี 90,538,311,680 ไบต์ C: \ Windows \ assembly> cd GAC_64 C: \ Windows \ ประกอบ \ GAC_64> dir ไดเรกทอรีของ C: \ Windows \ assembly \ GAC_64 06/17/2009 04:22 PM <DIR> 06/17/2009 04:22 PM <DIR> .. 01/19/2008 09:54 AM <DIR> blbproxy ... บุคคลที่ไม่สำคัญ ... 01/19/2008 09:54 AM <DIR> srmlib 01/19/2008 06:11 น. <DIR> System.Data 01/19/2008 06:11 น. <DIR> System.Data.OracleClient ... บุคคลที่ไม่สำคัญ ... 0 ไฟล์ 0 ไบต์ 34 Dir 90,538,311,680 ไบต์ฟรี C: \ Windows \ assembly \ GAC_64> cd System.Data C: \ Windows \ ประกอบ \ GAC_64 \ System.Data> dir ไดเรกทอรีของ C: \ Windows \ assembly \ GAC_64 \ System.Data 01/19/2008 06:11 น. <DIR> 01/19/2008 06:11 น. <DIR> .. 04/11/2009 12:20 PM <DIR> 2.0.0.0__b77a5c561934e089 0 ไฟล์ 0 ไบต์ 3 Dir ฟรี 90,538,311,680 ไบต์ C: \ Windows \ assembly \ GAC_64 \ System.Data> cd 2.0.0.0__b77a5c561934e089 C: \ Windows \ ประกอบ \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089> dir ไดเรกทอรีของ 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 ไฟล์ 3,008,512 ไบต์ 2 Dir ฟรี 90,538,311,680 ไบต์ C: \ Windows \ ประกอบ \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089>
ที่นี่คุณสามารถดูรุ่น 2.0.0.0__b77a5c561934e089 ของ System.Data
DLL ถูกระบุโดย 5 ส่วน:
แม้ว่า 3 ตัวแรกโดยทั่วไปจะเป็นตัวที่ใหญ่
มาทำลายมันกันเถอะ:
ดังนั้น GAC จะต้องเป็นที่สำหรับเก็บรหัสไลบรารีเพื่อให้สามารถเข้าถึงแอปพลิเคชันทั้งหมดที่ทำงานบนเครื่อง
คอมพิวเตอร์แต่ละเครื่องที่ติดตั้งรันไทม์ภาษาทั่วไปมีรหัสแคชทั้งเครื่องที่เรียกว่าแคชแอสเซมบลีส่วนกลาง แคชแอสเซมบลีส่วนกลางเก็บแอสเซมบลีที่กำหนดโดยเฉพาะเพื่อใช้ร่วมกันโดยหลายโปรแกรมประยุกต์บนคอมพิวเตอร์
คุณควรแชร์แอสเซมบลีโดยติดตั้งลงในแคชแอสเซมบลีส่วนกลางเท่านั้นเมื่อคุณต้องการ ตามแนวทางทั่วไปให้อ้างอิงแอสเซมบลีส่วนตัวและค้นหาแอสเซมบลีในไดเรกทอรีแอปพลิเคชันเว้นแต่ว่าจำเป็นต้องแชร์แอสเซมบลีอย่างชัดเจน นอกจากนี้ไม่จำเป็นต้องติดตั้งชุดประกอบลงในแคชชุดประกอบส่วนกลางเพื่อให้สามารถเข้าถึง COM interop หรือรหัสที่ไม่มีการจัดการได้
สิ่งที่ MSDN บรรจุอาจทำให้คุณประหลาดใจ ... โดยปกติคุณสามารถอ่านได้เหมือนบทความ บิตที่ตรงไปตรงมาและสำคัญที่สุดที่ด้านบนจะมีรายละเอียดที่สลับซับซ้อนมากขึ้น แน่นอนมันอธิบายได้ดีกว่าที่ฉันสามารถทำได้
โปรดสังเกตว่า Visual Studio แสดง DLLs ทั้งหมดใน GAC ในแท็บ. NET ของหน้าต่างการอ้างอิง (คลิกขวาที่โครงการใน Solution Explorer แล้วเลือกเพิ่มการอ้างอิง) สิ่งนี้จะช่วยให้คุณมีแนวคิดที่เป็นรูปธรรมมากขึ้น
ไลบรารี DLL ส่วนกลาง
Global Assembly Cache (GAC) เป็นโฟลเดอร์ในไดเรกทอรี Windows เพื่อเก็บแอสเซมบลี. NET ที่ได้รับการกำหนดเป็นพิเศษให้แบ่งปันโดยแอปพลิเคชันทั้งหมดที่ดำเนินการบนระบบ แอสเซมบลีสามารถใช้ร่วมกันระหว่างแอปพลิเคชันหลายตัวบนเครื่องโดยการลงทะเบียนพวกเขาในส่วนกลางประกอบแคช (GAC) GAC เป็นเครื่องจักรที่แคชภายในของชุดประกอบที่ดูแลโดย. NET Framework
แอพลิเคชัน exe ก่อนอื่นอ้างอิงจากไดเรกทอรีปัจจุบันไปยังไดเรกทอรีย่อย จากนั้นไดเรกทอรีระบบ ไดเรกทอรีระบบ VS6.0 คือ .. หน้าต่าง / system32 ไดเรกทอรีระบบ. NET เป็นเหมือนเส้นทาง GAC ด้านล่าง
เส้นทาง GAC
1) C: \ Windows \ Assembly (สำหรับ. NET 2.0 ~ 3.5)
2) C: \ Windows \ Microsoft.NET \ assembly (สำหรับ. NET 4.0)
วิธีติดตั้งชุดประกอบลงใน GAC (ในฐานะผู้ดูแลระบบ)
1) ลากแล้วปล่อย
2) ใช้ GacUtil.exe พร้อมรับคำสั่ง Visual Studio
gacutil -i [Path][Assembly Name].dll
วิธีถอนการติดตั้งชุดประกอบจาก GAC (ในฐานะผู้ดูแลระบบ)
gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh
มันเหมือนกับการลงทะเบียน COM อย่างถูกต้องเกี่ยวกับไฟล์จริงรวมถึงส่วนต่อประสานและข้อมูลตำแหน่ง ใน COM ไฟล์มีอยู่ทุกหนทุกแห่งพร้อมเมทาดาทาที่รวมศูนย์ GAC รวมศูนย์การยิงปัง
GAC (Global Assembly Cache) เป็นที่ที่แอสเซมบลี. NET ทั้งหมดอยู่