Vytváření satelitních sestavení
Model hub and spoke popsaný v tématu Balení a zavedení prostředků je doporučený návrh implementace pro vývoj aplikací s prostředky.
Model hub and spoke vyžaduje, abyste prostředky umístili v konkrétním umístění, v němž mohou být snadno nalezeny a použity. Pokud nezkompilujete a nepojmenujete prostředky podle očekávání nebo je neumístíte na správné místo, modul CLR (Common Language Runtime) nebude schopný je vyhledat. V důsledku toho modul runtime používá výchozí sadu prostředků. Další informace o názvech prostředků naleznete v tématu Třída CultureInfo nebo Balení a zavedení prostředků.
Kompilování satelitních sestavení
Použijte Assembly Linker (Al.exe) pro kompilaci souborů RESOURCES na satelitní sestavení. Al.exe vytvoří sestavení ze souborů RESOURCES, které specifikujete. Podle definice mohou satelitní sestavení obsahovat pouze prostředky. Nemohou obsahovat žádný spustitelný kód.
Následující příkaz pro Al.exe vytvoří satelitní sestavení pro aplikaci MyApp ze souboru strings.de.resources.
al /t:lib /embed:strings.de.resources /culture:de /out:MyApp.resources.dll
Následující příkaz pro Al.exe také vytvoří satelitní sestavení pro aplikaci MyApp ze souboru strings.de.resources. Možnost /template způsobí, že satelitní sestavení dědí metadata sestavení z nadřazeného sestavení MyApp.dll.
al /t:lib /embed:strings.de.resources /culture:de /out:MyApp.resources.dll
/template:MyApp.dll
Následující tabulka podrobněji vysvětluje možnosti Al.exe používané v těchto příkladech.
Parametr |
Popis |
---|---|
/t:lib |
Možnost /t specifikuje, že vaše satelitní sestavení je kompilováno do souboru knihovny DLL (.dll). Satelitní sestavení nemůže být spuštěno, protože neobsahuje kód a není hlavním sestavením aplikace. Proto musíte uložit satelitní sestavení jako DLL knihovny. |
/embed:strings.de.resources |
Možnost /embed specifikuje název zdrojového souboru pro použití, když Al.exe kompiluje sestavení. Všimněte si, že můžete vložit více RESOURCES souborů do satelitního sestavení. Nicméně pokud dodržujete model hub and spoke, musíte kompilovat jedno satelitní sestavení pro každou jazykovou verzi. Můžete však vytvořit samostatné RESOURCES soubory pro řetězce a objekty. |
/culture:de |
Možnost /culture specifikuje jazykovou verzi prostředku ke kompilaci. Modul runtime používá tuto informaci, když hledá prostředky pro zadanou jazykovou verzi. Pokud vynecháte tuto možnost, Al.exe stále zkompiluje prostředek, ale modul runtime ho nebude schopen najít, když o něj uživatel požádá. |
/out:MyApp.resources.dll |
Možnost /out určuje název výstupního souboru. Název musí splňovat konvenci pro pojmenování baseName.resources.extension, kde baseName je název hlavního sestavení a extension je uskutečnitelná přípona (například .dll). Je třeba si uvědomit, že modul runtime není schopen určit jazykovou verzi satelitního sestavení na základě názvu jeho výstupní souboru. Proto je důležité určit jazykovou verzi pomocí možnosti /culture popsané výše. |
/template:filename |
Možnost /template určuje sestavení, ze kterého dědí všechna metadata sestavení, s výjimkou položky jazykové verze. Sestavení, ze kterého dědí satelitní sestavení musí mít silný název. |
Úplný seznam možností, které jsou k dispozici s Al.exe naleznete v tématu Assembly Linker (Al.exe).
Kompilování satelitních sestavení se silnými názvy
Pokud chcete instalovat satelitní sestavení do globální mezipaměti sestavení (GAC), tak musí mít silné názvy. Sestavení se silným názvem jsou podepsaná pomocí platné dvojice veřejných/soukromých klíčů. Další informace o silných názvech naleznete v tématu Sestavení se silným názvem.
Když vyvíjíte aplikaci, je nepravděpodobné, že máte přístup ke konečné dvojici veřejných/soukromých klíčů. Za účelem instalace satelitního sestavení do globální mezipaměti sestavení (GAC) se ujistěte, že pracuje podle očekávání, můžete použít techniku zvanou zpožděné podepisování. Pokud zpozdíte podepsání sestavení, rezervujete v okamžiku sestavení prostor v souboru pro podpis silného názvu. Aktuální podepsání je zpožděno do pozdějšího data, dokud konečná dvojice veřejných/soukromých klíčů není k dispozici.
Získání veřejného klíče
Chcete-li zpozdit podepsání sestavení, musíte mít přístup k veřejnému klíči. Můžete získat buď reálný veřejný klíč od organizace ve vaší firmě, která provede případné podepsání nebo vytvořit veřejný klíč pomocí Strong Name Tool (Sn.exe).
Následující příkaz pro Sn.exe vytvoří testovací dvojici veřejných/soukromých klíčů a uloží ji v souboru TestKeyPair.snk. Možnost –k říká Sn.exe, aby vytvořil nový pár klíčů a uložil jej v zadaném souboru.
sn –k TestKeyPair.snk
Veřejný klíč lze extrahovat ze souboru obsahujícího testovací pár klíčů. Následující příkaz extrahuje veřejný klíč ze souboru TestKeyPair.snk a uloží jej v PublicKey.snk.
sn –p TestKeyPair.snk PublicKey.snk
Zpožděné podepisování sestavení
Jakmile získáte nebo vytvoříte veřejný klíč, použijte Assembly Linker (Al.exe) pro kompilaci sestavení a určení zpožděného podepsání.
Následující příkaz pro Al.exe vytvoří satelitní sestavení se silným názvem pro aplikaci MyApp ze souboru strings.ja.resources.
al /t:lib /embed:strings.ja.resources /culture:ja /out:MyApp.resources.dll /delay+ /keyfile:PublicKey.snk
Možnost /delay+ určuje zpožděné podepsání sestavení. Možnost /keyfile: určuje název souboru s klíčem, který obsahuje veřejný klíč pro použití ke zpožděnému podepsání sestavení.
Další informace o zpožděném podepisování naleznete v tématu Zpoždění podepisování sestavení.
Všimněte si, že sestavení se silným názvem obsahují informaci o verzi, kterou modul runtime používá k určení sestavení pro použití, které splňuje požadavky na vazby. Další informace o tomto tématu naleznete v tématu Assembly Versioning.
Znovu podepisování sestavení
Někdy později, musí být satelitní sestavení, které bylo podepsáno se zpožděním, podepsáno znovu pomocí reálné dvojice klíčů. Toto můžete provést pomocí Sn.exe.
Následující příkaz pro Sn.exe podepisuje MyApp.resources.dll pomocí reálné dvojice klíčů uložené v souboru RealKeyPair.snk. Možnost –R určuje pro Sn.exe, aby znovu podepsal dříve podepsané nebo se zpožděním podepsané sestavení.
sn –R MyApp.resources.dll RealKeyPair.snk
Instalace satelitního sestavení do globální mezipaměti sestavení (GAC)
Globální mezipaměť sestavení (GAC) je prvním umístěním, kde modul runtime hledá prostředek v nouzovém procesu prostředků. Další informace naleznete v dílčím tématu "Proces nouzového prostředku" v tématu Balení a nasazení prostředků. Proto je důležité vědět, jak instalovat prostředek do globální mezipaměti sestavení (GAC). Satelitní sestavení, které zkompilujete se silným názvem je připraveno k instalaci do globální mezipaměti sestavení (GAC). Sestavení můžete instalovat do mezipaměti pomocí Global Assembly Cache Tool (Gacutil.exe).
Následující příkaz pro Gacutil.exe nainstaluje MyApp.resources.dll do globální mezipaměti sestavení (GAC).
gacutil /i:MyApp.resources.dll
Možnost /i určuje, aby Gacutil.exe nainstaloval zadané sestavení do globální mezipaměti sestavení (GAC). V důsledku tohoto příkazu je položka umístěna v mezipaměti, která položkám v souboru RESOURCES umožňuje, aby byly přístupné. Po instalaci v mezipaměti je zadaný prostředek k dispozici pro všechny aplikace, které jsou navrženy tak, aby jej používaly.
Umístění adresáře pro satelitní sestavení, která nejsou nainstalována v globální mezipaměti sestavení (GAC)
Poté, co jste zkompilovali vaše satelitní sestavení, mají všechna stejný název. Modul runtime rozlišuje mezi nimi na základě jazykové verze specifikované v čase kompilace pomocí možnosti /culture pro Al.exe a podle adresáře umístění každého sestavení. Vaše satelitní sestavení musíte umístit v očekávaných umístěních adresáře.
Následující ilustrace ukazuje vzorek adresářové struktury a požadavků na umístění pro aplikace, které jste nenainstalovali do globální mezipaměti sestavení (GAC). Položky s příponami TXT a RESOURCES nebudou dodány s konečnou aplikací. Jedná se o mezilehlé soubory prostředků, použité k vytvoření konečného satelitního sestavení prostředků. V tomto příkladu můžete nahradit soubory RESX, soubory s příponou TXT. Soubory RESX jsou jediným typem mezilehlého souboru prostředků, který může obsahovat objekty.
Adresář satelitního sestavení
Poznámka |
---|
Pokud vaše aplikace obsahuje prostředky pro subkultury, umístěte každou subkulturu v jejím vlastním adresáři.Neumísťujte subkultury v podadresářích adresáře jejich hlavní jazykové verze. |
Viz také
Odkaz
Gacutil.exe (Global Assembly Cache Tool)