Još pre pojave .Net platforme, rad sa *.dll datotekama koje izvoze globalne funkcije i *.dll datoteke koje izvoze COM klase, su pravile ogromne probleme, da je Microsoft sa pravom uveo frazu „DLL pakao“ za navedenu problematiku. Aplikacije nisu radile ispravno jer bi novo instalirana aplikacija prebrisala *.dll datoteku koju je koristila druga aplikacija. Ponekad bi instalacija nove aplikacije zamenila novi *.dll starijom verzijom ili novi *.dll datoteka nije bila kompatibilna sa starijom verzijom. Tek od Windows 2000 se uvela mogućnost instaliranja *.dll datoteka u direktorijum aplikacije. Najveći problem je bio što konfiguracija COM komponente nije bila smeštena u samoj *.dll komponenti, nego u bazi Windows Registry. Za ovaj pakao, kao odgovor je stigao sklop.
( GAC - Global Assembly Cashe Folder )
Sklop je osnovna jedinica aplikacije .Net-a. Sklop je samoopisujuća kolekcija koda, resursa i meta podataka. Jednostavno govoreći, sklop je projekat koji se kompajlira u izvršnu datoteku *.exe ili u *.dll datoteku biblioteke. Sklopovi mogu biti privatni ili javni tj. deljeni. Sklop koji se nalazi u direktorijumu vaše aplikacije je privatan sklop, dok deljeni sklop je sklop smešteni u GAC - Global Assembly Cache pomoću alata Gacutil.exe ili Windows Installer-a. To su sklopovi smešteni u C:\Windows\Microsoft.NET\assembly\GAC_MSIL folderu. Deljene sklopove ili sklopove koje se nalaze u GAC-u može da koristi više aplikacija, dok privatni sklop može da koristi samo aplikacija koja sadrži sklop u svom direktorijumu. Da bi ste kreirali deljeni sklop neophodno je da vašem sklopu dodelite Strong name – strogo ime.
var assembly = Assembly.GetExecutingAssembly();
WriteLine(assembly.FullName);
//
Result: AssemblyCS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Šta sadrži sklop?
