Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Satelitní sestavení se používají k ukládání lokalizovaných prostředků přizpůsobených pro jazyk a kulturu.
Satelitní sestavení používají jiný algoritmus načítání než obecná spravovaná sestavení.
Kdy jsou načtena satelitní sestavení?
Při načítání lokalizovaného prostředku se načtou satelitní sestavení.
Základní API pro načtení lokalizovaných prostředků je System.Resources.ResourceManager třída. Nakonec třída ResourceManager zavolá metodu GetSatelliteAssembly pro každý CultureInfo.Name.
Rozhraní API vyšší úrovně mohou abstraktovat rozhraní API nízké úrovně.
Algoritmus
Proces přechodu na náhradní prostředky v .NET Core zahrnuje následující kroky:
Určete
activeAssemblyLoadContext instanci. Ve všech případech je instanceactivespouštěcím sestavením AssemblyLoadContext.Instance
activenačte satelitní sestavení pro požadovanou jazykovou verzi v následujícím pořadí priority:Zkontrolujte jeho mezipaměť.
Pokud
activese jedná o instanci, spusťte výchozí logiku AssemblyLoadContext.Defaultsondování sestavení satelitního (prostředku).Zavolejte funkci AssemblyLoadContext.Load.
Pokud bylo spravované sestavení odpovídající satelitnímu sestavení načteno ze souboru, zkontrolujte adresář spravovaného sestavení pro podadresář, který odpovídá požadovanému CultureInfo.Name (například
es-MX).Poznámka:
V Linuxu a macOS se v podadresáři rozlišují malá a velká písmena, a musí buď:
- Přesně shodný případ.
- Buďte v malých písmenech.
Vyvolání AssemblyLoadContext.Resolving události
Vyvolání AppDomain.AssemblyResolve události
Pokud je načteno satelitní sestavení:
- Událost AppDomain.AssemblyLoad je vyvolána.
- Sestavení se vyhledá požadovaný prostředek. Pokud modul runtime najde prostředek v sestavení, použije ho. Pokud nenajde prostředek, pokračuje ve vyhledávání.
Poznámka:
Pokud chcete najít prostředek v rámci satelitního sestavení, modul runtime vyhledá soubor prostředků požadovaný ResourceManager pro aktuální CultureInfo.Name. Při vyhledávání v souboru prostředků hledá požadovaný název prostředku. Pokud se některý z těchto prostředků nenajde, prostředek se považuje za nenalezeno.
Při ResourceManager následném prohledávání sestavení nadřazené jazykové verze na různých úrovních se pokaždé opakuje kroky 2 a 3.
Každá kultura má pouze jednoho nadřazeného rodiče, který je definován vlastností CultureInfo.Parent .
Vyhledávání nadřazených kultur se zastaví, když je vlastnost ParentCultureInfo.InvariantCulture.
V případě InvariantCulturekroků 2 a 3 se nevrátíme, ale pokračujte krokem 5.
Pokud se prostředek stále nenajde, ResourceManager použije prostředek pro výchozí kulturní verzi.
Prostředky pro výchozí jazykovou verzi jsou obvykle zahrnuty do hlavního sestavení aplikace. Pro vlastnost však můžete zadat UltimateResourceFallbackLocation.SatelliteNeutralResourcesLanguageAttribute.Location. Tato hodnota označuje, že konečným záložním umístěním pro prostředky je satelitní sestavení místo hlavního sestavení.
Poznámka:
Výchozí kultura je konečnou záložní možností. Proto doporučujeme, abyste do výchozího souboru prostředků vždy zahrnuli vyčerpávající sadu prostředků. To pomáhá zabránit vyvolání výjimek. Když budete mít vyčerpávající sadu, poskytnete záložní zdroje pro všechny prostředky a zajistíte, aby byl pro uživatele vždy k dispozici alespoň jeden zdroj, i když není kulturně specifický.
Nakonec
- Pokud modul runtime nenajde soubor prostředků pro výchozí (záložní) jazykovou verzi, dojde k vyvolání výjimky MissingManifestResourceException nebo MissingSatelliteAssemblyException.
- Pokud se zdrojový soubor najde, ale požadovaný prostředek není k dispozici, požadavek vrátí
null.