C # szerelvény (szerelvények)
A közgyűlés egyetlen fájl hordozható végrehajtható (PE) .exe kiterjesztésű alkalmazása esetén abban az esetben, vagy .dll újrahasználható könyvtárban.
tartalom összeállítás
- A szerelvény nyilvánvaló - információkat tartalmaz a .NET környezet: a szerelvény nevét, verzióját, a szükséges engedélyekkel, linkek más szerelvények.
- Az alkalmazás nyilvánvaló - információkat tartalmaz az operációs rendszert: szerelési módszerrel a telepítés, hogy szükség van a rendszergazdai jogosultságokkal.
- Típusai összeállított - összeállított IL-kód és a metaadatok típusai, amelyek szerepelnek az összeállításban.
- Források - olyan adat, amely a gyülekezési képek, lokalizálható szövegeket.
Ez csak akkor kötelező szerelvény nyilvánvaló (bár általában bele van fordítva típusok. Futtatható fájlok és könyvtárak szerkezete azonos, a fő különbség az, hogy a végrehajtható fájlokat tartalmazó belépési pont.
összeszerelés nyilvánvaló
A szerelvény nyilvánvaló kell tartalmaznia:
- egyszerű szerelés neve
- verziószám (AssemblyVersion)
- A nyilvános kulcs és az aláírt hash a szerelvény, ha van egy erős neve
- A láncolt lista szerelvényen (beleértve azok változatai és a nyilvános kulcs)
- lista modul szerelvény
- fajták listája meghatározott összeállítás és a modulok az egyes típusokat tartalmazó
- egy opcionális készlet szükséges jogosultságokkal vagy elutasítja szerelvény (SecurityPermission)
- célkultúra ha ez egy alárendelt szerelvény (AssemblyCulture)
Továbbá, a szerelvény nyilvánvaló tartalmazhat:
Néhány ilyen adatok származnak átadott paramétereket, a fordító. A többi venni a szerelvény attribútumokat (zárójelben):
A tartalom a szerelvény valójában csomagolva egy vagy több tartályban, az úgynevezett modulokat. A modul megfelel egy összeállítás fájlt, és lehetővé teszi, hogy hozzon létre egy szerelvény, amely több fájl. A többfájlos összeszerelése a főegység mindig tartalmaz nyilvánvaló, és a kiegészítő modulok tartalmazhatnak kód és / vagy erőforrással. A kiáltvány leírja a relatív helyzete a modulokból.
osztály Assembly
System.Reflection.Assembly osztály lehetővé teszi a hozzáférést a metaadatok gyülekezési futásidőben. Get összeszerelő üzemmel többféleképpen
- segítségével az ingatlanok osztály Assembly típusa:
- GetExecutingAssembly - visszaadja a szerelvény tartalmaz végrehajtható funkció (módszer)
- GetCallingAssembly - visszaadja az összeállítás, amely tartalmazza a funkciót, amely az úgynevezett jelenlegi funkciója
- GetEntryAssembly - visszaadja az összeállítás, amely tartalmazza a belépési pont a kérelem
Szerelés fogadó objektumot annak módszereit és tulajdonságokat lehet szerelni a metaadatok, és elvégzi a reflexió típusokat.
osztály tagjai Közgyűlés:
- FullName. GetName - visszaadja a teljes megadott név vagy AssemblyName objektum
- Codebase. Hely - a helyét a szerelvény fájl
- Terhelést. LoadFrom. LoadFile - kézzel betölti az egész szerelvényt a jelenlegi alkalmazási területen
- GlobalAssemblyCache - jelzi, hogy a szerelvény a GAC
- GetSatelliteAssembly - alá van rendelve a szerelvény egy adott kultúra
- GetType. GetTypes - visszaadja a típusát, vagy az összes típusú meghatározott összeállítás
- BelépésiPont - eljárás visszatér egy belépési pont az alkalmazás, mint egy tárgy MethodInfo
- GetModules. ManifestModule - visszaadja az összes modult vagy modul szerelvény vezetője
- GetCustomAttributes - visszaadja az attribútumok a szerelvény
nevei szerelvények
építeni azonosítója négy részből áll:
- egyszerű neve
- változata ( «0.0.0.0» ha nincs megadva)
- Kultúra ( «semleges» a nem alárendelt egységek)
- nyilvános kulcs token ( «null» ha az egység nem egy erős név)
Az egyszerű név kerül sor a fájl nevét, amelyben a szerelvény eredetileg össze. Kibontható dobni, például egy egyszerű nevet az összeszerelés külleme System.Xml.dll System.Xml. Átnevezése fájl nem változik az egyszerű neve a szerelvény.
A verziószám származik AssemblyVersion attribútum és egy string, 4 részre osztható:
void SetPublicKeyToken (byte [] publicKeyToken);
Verzió tulajdonság visszaadja egy objektum típusú változata. amely maga tulajdonságai Major. Minor. Építsd és felülvizsgálat. Mivel a változat az összeszerelés adja attribútumok AssemblyVersion. Ez is része az összeállítás neve, változó, hogy bizonyos esetekben nem kívánatos. Ezen kívül AssemblyVersion attribútum van két attribútuma a megadott változat, de fárasztó egy tisztán tájékoztató jellegű, és nem lehet figyelembe venni a CLR:
- AssemblyInformationalVersion - sajtóközlemény - meghatározza azt a verziót, hogy megjelenik a végfelhasználónak. Ez látható a párbeszédablak, a fájl tulajdonságait a termék verziószáma (Product verzió). Van bármilyen karakterlánc lehet, például, 5,1 Beta 2. Általában az egész gyülekezet az alkalmazás verziószáma megegyezik az információkat.
- A AssemblyFileVersion - Fájl verzió - utal az elrendezés szám (build) szerelvény. Jelenik meg a fájl tulajdonságai párbeszédpanelen a File Version (File verzió). Ahogy AssemblyVersion tartalmaznia kell egy vonal 4 részre osztható.
Erős nevek (Strong Names)
Erős nevek segítenek megvédeni a szerelvényt egy hamis. Szigorúan elemzi szerelvény van egy egyedi, és nem hamis ID, ami úgy érhető el hozzá a következő metaadatok szerelvény nyilvánvaló:
Rendelni a szerelvény egy erős nevét, először létre kell hozni egy fájlt egy pár kulcsot, például sn.exe segédprogramot. A segédprogram létrehoz egy kiterjesztésű fájl .snk, amely egy pár kulcsot. Ezután a szerelvényt kell összeállítani a lehetőséget / keyfile:
Kiadó osztály a névtér tartalmazza System.Security.Policy Certificate tulajdon. Ha ez a tulajdonság visszaadja eltérő értéket null, akkor a szerelvény aláírt Authenticode rendszer.
Authenticode aláírás nem része az összeállítás nevét.
GAC - GAC (Global Assembly Cache)
Amikor telepíti a .NET-keretrendszer a számítógép létrehoz egy központi adattár szerelvények - GAC (Global Assembly Cache - GAC). GAC összeállítás tartalmazza a platform .NET Framework és az is lehetséges, hogy hozzá saját összeállítás. A fő jellemzője a GAC központi támogatást változata (egy rendszergazda a gépen szint). Ha ez a támogatás valóban szükséges, felveheti a szerelvényt GAC, minden más esetben ez csak bonyolítaná a fejlődés. telepítése és támogató alkalmazások.
A telepítéshez a szerelvényt a GAC azt először be kell állítania egy erős nevét. Ezt követően, akkor add hozzá a GAC segítségével gacutil segédprogram:
Telepítse szerelvények a GAC lehet beállítani, mint a beállítás részét képezi a projekt a Visual Studio.
Betöltése után a szerelvényt a GAC alkalmazások hivatkozhatunk rá anélkül, hogy szükség van egy helyi másolat. Ebben az esetben, ha a helyi másolat van jelen, akkor figyelmen kívül hagyja mellett a szerelvényt GAC.
amellett, hogy a forráskód szerelvény tartalmazhat források: szöveg, kép, és az XML-fájlokat. Jellemzően a forrásokat adunk a szerelés vagy lokalizált képadatok. Forrás szerelvény végső soron képviseli a byte stream elemzi. Építsd tárolja a szótárban zsineggel kulcsokat.
Globalizált tartalom először hozzáadjuk a .resources fájlokat. Összeállításakor, ezek egyedileg csomagolt szolga szerelvények, amelyek automatikusan kiválasztódnak a végrehajtása során alapul OS nyelvet.
A közvetlen integráció az erőforrások
Hogy beágyazza a forrás közvetlenül a szerelvény kell fordítani az egy vagy több paraméter / forrás:
Itt XX - a nyelv kétbetűs kódját (például Németország), illetve nyelvi és a körzetszámot (például hu-HU).
Ahhoz, hogy hozzá egy alárendelt szerelvény hozzá a projekthez egy .resx fájlt. akinek a nevét kell tartalmaznia a lokalizáció kódot (elválasztva egy pont), például, welcome.de.resx. Amikor fordítod a Visual Studio automatikusan létre alkönyvtárakat (pl de), és benne egy alárendelt egység (például MyApp.resources.dll).
Kultúra oszlik saját kultúrájának és szubkultúra. Kultúra jelentése adott nyelv és szubkultúra - regionális változata a nyelvet. Kultúra jelzi a kétbetűs kódot (pl en de.) És a szubkultúrák - a négybetűs (. En-AU de-AT).
A kultúrát képviseljük .NET osztály System.Globalization.CultureInfo. A jelenlegi kultúra lehet a következőképpen állítjuk elő:
CurrentCulture ingatlan tükrözi a regionális Windows beállításait és CurrentUICulture tulajdon - a felhasználói felület nyelvét.
Felbontás szerelvények
Végrehajtása során a rendszer sokkal bonyolultabb. Amikor először hozzáférést bármely vagy CLR típusú először megállapítja, hogy ez a jelenlegi összeállítás, vagy a külső. Ha a típus a külső szerelvény, a CLR ellenőrzi, hogy már be van töltve az összeállítás a memóriában. Amennyiben a szerelvény nincs betöltve, a CLR megpróbálja megtalálni őt. Az első dolog, ellenőrzött GAC, akkor a bázis könyvtár az alkalmazás és más keresési útvonalat (ha meg van adva). Ha nem találja a szerelvény generált AppDomain.AssemblyResolve esemény. amely beakadhat kézzel betölteni a szerelvény. Ha ezek után építmények még mindig nem talált CLR kivételt dob.