Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A műholdas szerelvények a nyelvhez és a kultúrához testre szabott honosított erőforrások tárolására szolgálnak.
A műholdas szerelvények más rakodási algoritmust használnak, mint az általánosan felügyelt szerelvények.
Mikor töltődnek be a szatellit szerelvények?
A satellite assemblyek betöltésre kerülnek a lokalizált erőforrások betöltésekor.
A honosított erőforrások betöltéséhez szükséges alapvető API az System.Resources.ResourceManager osztály. Végül az ResourceManager osztály meghívja az GetSatelliteAssembly metódust minden egyes CultureInfo.Name esetén.
A magasabb szintű API-k elvonhatják az alacsony szintű API-t.
Algoritmus
A .NET Core-erőforrás-visszavételi folyamat a következő lépéseket foglalja magában:
Határozza meg a
activeAssemblyLoadContext példányt. Minden esetben aactivepéldány a végrehajtó szerelvényének AssemblyLoadContext.A
activepéldány a következő prioritási sorrendben tölt be egy műholdas egységet a kért kultúrához:Ellenőrizze a gyorsítótárát.
Ha
activeez a AssemblyLoadContext.Default példány, futtassa az alapértelmezett műholdas (erőforrás-) szerelvénykeresési logikát.Hívja meg a függvényt AssemblyLoadContext.Load .
Ha a műholdas assemblynek megfelelő felügyelt assemblyt egy fájlból töltötték be, ellenőrizze a felügyelt assembly könyvtárában, hogy van-e egy alkönyvtár, amely megfelel a kért CultureInfo.Name (például
es-MX).Megjegyzés
Linux és macOS rendszeren az alkönyvtár kis- és nagybetű érzékeny, és a következő lehetőségek egyikének kell lennie:
- Pontosan egyezik az eset.
- Legyen kisbetűs.
Indítson el egy eseményt AssemblyLoadContext.Resolving .
Indítson el egy eseményt AppDomain.AssemblyResolve .
Ha egy műholdas szerelvény be van töltve:
- Az AppDomain.AssemblyLoad esemény elő van állítva.
- A rendszer megkeresi a kért erőforrást a szerelvényben. Ha a futtatókörnyezet megkeresi az erőforrást a szerelvényben, azt használja. Ha nem találja az erőforrást, folytatja a keresést.
Megjegyzés
Ha erőforrást szeretne keresni a satellite assembly-ben, a futtatókörnyezet megkeresi a ResourceManager által kért CultureInfo.Name erőforrásfájlt az aktuális környezethez. Az erőforrásfájlban megkeresi a kért erőforrásnevet. Ha egyik sem található, az erőforrás nem találhatóként lesz kezelve.
A ResourceManager következő lépésnél a szülőkultúra összeszerelésein keresztül több lehetséges szinten keresés történik, mindegyik alkalommal megismételve a 2. és 3. lépést.
Minden kultúrának csak egy szülője van, amelyet a CultureInfo.Parent tulajdonság határoz meg.
A szülőkultúrák keresése leáll, ha egy kultúra Parent tulajdonsága CultureInfo.InvariantCulture.
InvariantCultureA 2. és 3. lépéshez nem térünk vissza, hanem az 5. lépéssel folytatjuk.
Ha az erőforrás továbbra sem található, az ResourceManager erőforrást használja az alapértelmezett (tartalék) kultúrához.
Az alapértelmezett kultúra erőforrásai általában a fő alkalmazásszerelvény részét képezik. Azonban megadhatja a UltimateResourceFallbackLocation.Satellite értéket a NeutralResourcesLanguageAttribute.Location tulajdonsághoz. Ez az érték azt jelzi, hogy az erőforrások végső tartalék helye nem a főszerelvény, hanem egy műholdas szerelvény.
Megjegyzés
Az alapértelmezett kultúra a végső tartalék. Ezért azt javasoljuk, hogy mindig tartalmazzon teljes erőforráskészletet az alapértelmezett erőforrásfájlban. Ez segít megakadályozni a kivételek dobását. A teljes készlettel tartalékot biztosít az összes erőforráshoz, és biztosíthatja, hogy legalább egy erőforrás mindig jelen legyen a felhasználó számára, még akkor is, ha az nem kulturálisan specifikus.
Végül
- Ha a futtatókörnyezet nem talál erőforrásfájlt egy alapértelmezett (visszaesési) kultúrához, MissingManifestResourceException vagy MissingSatelliteAssemblyException kivételt feldob.
- Ha az erőforrásfájl megtalálható, de a kért erőforrás nincs jelen, a kérés ad vissza
null.