Yanıtlar:
Doğru, temel olarak, DLL'leri çatışmalar hakkında endişelenmeden küresel olarak erişilebilir tutmanın bir yoludur. Artık DLL Hell yok. Her mimari ve sürüm, yaşamak için kendi yerini alır.
Ayrıca Explorer'da göz atmanın kendi yolunu da alır, bu nedenle
C: \ Windows \ montaj
Windows Gezgini'nde tüm DLL'leri listeler.
Ancak ateş cmd
ederseniz, bunun nasıl yapılandırıldığını görebilirsiniz:
C: \ Kullanıcılar \ tritter> cd C: \ Windows \ assembly C: \ Windows \ montaj> dir C: \ Windows \ assembly dizini 07/20/2009 02:18 PM <DIR> GAC 17.06.2009 04:22 <DIR> GAC_32 17.06.2009 04:22 <DIR> GAC_64 17.06.2009 04:22 <DİR> GAC_MSIL ... kesik ... 0 Dosya 0 bayt 9 Dir (s) 90.538.311.680 bayt boş C: \ Windows \ assembly> cd GAC_64 C: \ Windows \ montaj \ GAC_64> dir C: \ Windows \ assembly \ GAC_64 dizini 17.06.2009 04:22 <DİR>. 17.06.2009 04:22 <DIR> .. 01/19/2008 09:54 AM <DIR> Instagram Hesabındaki Resim ve Videoları blbproxy ... kesik ... 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 ... kesik ... 0 Dosya 0 bayt 34 Dir (s) 90.538.311.680 bayt boş C: \ Windows \ assembly \ GAC_64> cd System.Data C: \ Windows \ montaj \ GAC_64 \ System.Data> dir C: \ Windows \ assembly \ GAC_64 \ System.Data dizini 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 Dosya 0 bayt 3 Dir (s) 90.538.311.680 bayt boş C: \ Windows \ assembly \ GAC_64 \ System.Data> cd 2.0.0.0__b77a5c561934e089 C: \ Windows \ montaj \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089> dir C: \ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089 dizini 04/11/2009 12:20 <DİR>. 04/11/2009 12:20 <DIR> .. 11/04/2009 12:12 PM 3.008.512 System.Data.dll 1 Dosya 3.008.512 bayt 2 Dir (s) 90.538.311.680 bayt boş C: \ Windows \ montaj \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089>
Burada System.Data'nın 2.0.0.0__b77a5c561934e089 sürümünü görebilirsiniz.
Bir DLL 5 bölümle tanımlanır:
Her ne kadar ilk 3 genellikle büyük olanlar olsa da.
Hadi yıkalım:
Bu nedenle GAC, kod kitaplıklarının saklanabileceği bir yer olmalıdır, böylece makinede çalışan tüm uygulamalar tarafından erişilebilir.
Ortak dil çalışma zamanının yüklü olduğu her bilgisayarda, genel derleme önbelleği adı verilen makine çapında bir kod önbelleği bulunur. Genel derleme önbelleği, bilgisayardaki çeşitli uygulamalar tarafından paylaşılmak üzere özel olarak tasarlanmış derlemeleri depolar.
Derlemeleri yalnızca gerektiğinde genel derleme önbelleğine yükleyerek paylaşmalısınız. Genel bir kılavuz olarak derleme bağımlılıklarını gizli tutun ve derlemenin paylaşılması açıkça gerekli olmadıkça derlemeleri uygulama dizininde bulun. Ayrıca, COM birlikte çalışma veya yönetilmeyen kod tarafından erişilebilir hale getirmek için derlemeleri genel derleme önbelleğine yüklemek gerekmez.
MSDN'in içerdiği şeyler sizi şaşırtabilir ... genellikle bir makale gibi okuyabilirsiniz. Üstteki basit ve en önemli bitler, karmaşık detaylar daha derinlere iner. Kesinlikle benden daha iyi açıklıyor.
Visual Studio, başvurular penceresinin .NET sekmesindeki GAC tüm DLL'leri görüntülediğini unutmayın . (Solution Explorer'da bir projeye sağ tıklayın ve Referans Ekle'yi seçin.) Bu size daha somut bir fikir vermelidir.
Genel Derleme Önbelleği (GAC), Windows dizininde, sistemde yürütülen tüm uygulamalar tarafından paylaşılmak üzere özel olarak tasarlanmış .NET derlemelerini depolayan bir klasördür. Montajlar, makinede birden çok uygulama arasında global Assembly önbelleğine (GAC) kaydedilerek paylaşılabilir. GAC, makine genelinde .NET Framework tarafından tutulan yerel bir montaj önbelleğidir.
Exe Application, her şeyden önce geçerli bir dizinden bir alt dizine başvurur. Ve sonra, sistem dizini. VS6.0 sistem dizini ..windows / system32 idi. .NET sistem dizini aşağıdaki GAC yolu gibidir.
GAC yolu
1) C: \ Windows \ Assembly (.NET 2.0 ~ 3.5 için)
2) C: \ Windows \ Microsoft.NET \ assembly (.NET 4.0 için)
GAC'ye bir montaj nasıl kurulur (Yönetici olarak)
1) Sürükle ve Bırak
2) GacUtil.exe'yi Visual Studio Komut İstemi ile kullanma
gacutil -i [Path][Assembly Name].dll
Bir montajı GAC'den kaldırma (Yönetici olarak)
gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh