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.
Zdrojové soubory hrají ústřední roli v lokalizovaných aplikacích. Umožňují aplikaci zobrazit řetězce, obrázky a další data v jazyce a jazykové verzi uživatele a poskytnout alternativní data, pokud prostředky pro jazyk nebo jazykovou verzi uživatele nejsou k dispozici. .NET používá model hub-and-spoke k vyhledání a načtení lokalizovaných prostředků. Centrum je hlavní sestavení, které obsahuje nelokalizovatelný spustitelný kód a prostředky pro jednu jazykovou verzi, která se nazývá neutrální nebo výchozí jazyková verze. Výchozí jazyková verze je záložní jazyková verze aplikace; používá se, když nejsou k dispozici žádné lokalizované prostředky. Pomocí atributu NeutralResourcesLanguageAttribute určíte výchozí kulturu aplikace. Každý paprsek se připojuje k satelitnímu sestavení, které obsahuje prostředky pro jednu lokalizovanou kulturní verzi, ale neobsahuje žádný kód. Vzhledem k tomu, že satelitní sestavení nejsou součástí hlavního sestavení, můžete snadno aktualizovat nebo nahradit prostředky, které odpovídají určité jazykové verzi, aniž byste nahradili hlavní sestavení aplikace.
Poznámka:
Prostředky výchozí jazykové verze aplikace lze také uložit do satelitního sestavení. To uděláte tak, že atributu NeutralResourcesLanguageAttribute přiřadíte hodnotu UltimateResourceFallbackLocation.Satellite.
Název a umístění satelitního sestavení
Hvězdicový model vyžaduje, abyste prostředky umístili do konkrétních umístění, aby se mohly snadno nacházet a používat. Pokud nezkompilujete a nepojmenujete zdroje podle očekávání nebo je neumístíte na správná místa, modul runtime common language je nebude moct najít a místo toho bude používat zdroje výchozí jazykové verze. Správce prostředků .NET je reprezentován typem ResourceManager a používá se k automatickému přístupu k lokalizovaným prostředkům. Správce prostředků vyžaduje následující:
Jedna satelitní sestava musí obsahovat všechny prostředky pro určitou kulturu. Jinými slovy, měli byste zkompilovat více souborů .txt nebo .resx do jednoho binárního souboru .resources .
V adresáři aplikace musí existovat samostatný podadresář pro každou lokalizovanou kulturu, která ukládá prostředky dané kultury. Název podadresáře musí být stejný jako název kultury. Alternativně můžete ukládat satelitní sestavení do globální mezipaměti sestavení. V tomto případě musí komponenta informací o kultuře silného názvu sestavení označovat svou kulturu. Další informace naleznete v tématu Instalace satelitních sestavení v Global Assembly Cache.
Poznámka:
Pokud vaše aplikace obsahuje prostředky pro subkultury, umístěte každou subkulturu do samostatného podadresáře pod adresář aplikace. Neumisťujte subkultury v podadresářích v rámci hlavního adresáře kultury.
Satelitní sestavení musí mít stejný název jako aplikace a musí používat příponu názvu souboru ".resources.dll". Pokud je například aplikace pojmenována Example.exe, měl by být název každého satelitního sestavení Example.resources.dll. Název satelitního sestavení neindikuje kulturní verzi jeho souborů prostředků. Satelitní sestavení se však zobrazí v adresáři, který určuje kulturu.
Informace o kultuře satelitního sestavení musí být zahrnuty v metadatech sestavení. Chcete-li název jazykové verze uložit do metadat satelitního sestavení, nastavíte možnost
/culturepři použití Assembly Linker pro vložení prostředků do satelitního sestavení.
Následující obrázek ukazuje vzorkovou adresářovou strukturu a požadavky na umístění pro aplikace, které neinstalujete v Global Assembly Cache. Položky s rozšířeními .txt a .resources se nedoručí s konečnou aplikací. Jedná se o prostřední soubory prostředků používané k vytvoření konečných sestavení satelitních prostředků. V tomto příkladu můžete nahradit soubory .resx pro .txt soubory. Další informace najdete v tématu Balení a nasazení prostředků.
Následující obrázek znázorňuje adresář satelitního sestavení:
Zkompilovat satelitní sestavení
Generátor souborů prostředků (resgen.exe) slouží pro kompilaci textových souborů nebo souborů XML (.resx), které obsahují prostředky, do binárních souborů .resources. Potom použijete Assembly Linker (al.exe) ke kompilaci souborů .resources do satelitních sestavení. al.exe vytvoří sestavení ze zadaných souborů .resources. Satelitní sestavení mohou obsahovat pouze prostředky; nemohou obsahovat žádný spustitelný kód.
Následující příkaz al.exe vytvoří satelitní sestavení pro aplikaci z německého souboru Example.
al -target:lib -embed:strings.de.resources -culture:de -out:Example.resources.dll
Následující příkaz al.exe také vytvoří satelitní sestavení pro aplikaci Example ze souboru strings.de.resources. Volba /template způsobí, že satelitní sestavení dědí všechna metadata sestavení s výjimkou kulturních informací z nadřazeného sestavení (Example.dll).
al -target:lib -embed:strings.de.resources -culture:de -out:Example.resources.dll -template:Example.dll
Následující tabulka popisuje al.exe možnosti použité v těchto příkazech podrobněji:
| Možnost | Popis |
|---|---|
-target:lib |
Určuje, že vaše satelitní sestavení je kompilováno do souboru knihovny (.dll). Vzhledem k tomu, že satelitní sestavení neobsahuje spustitelný kód a není hlavním sestavením aplikace, je nutné uložit satelitní sestavení jako knihovny DLL. |
-embed:strings.de.resources |
Určuje název souboru prostředků, který se má vložit během kompilace sestavení pomocí al.exe. Do satelitního sestavení můžete vložit několik souborů .resources, ale pokud sledujete model hvězdice a paprsků, musíte pro každou jazykovou verzi zkompilovat jedno satelitní sestavení. Pro řetězce a objekty však můžete vytvořit samostatné soubory .resources. |
-culture:de |
Určuje kulturu prostředku, která se má zkompilovat. Modul CLR (Common Language Runtime) používá tyto informace při hledání prostředků pro zadanou jazykovou verzi. Pokud tuto možnost vynecháte, al.exe prostředek zkompiluje, ale modul runtime ho nebude moct najít, když ho uživatel požádá. |
-out:Example.resources.dll |
Určuje název výstupního souboru. Název musí splňovat standard pojmenování baseName.resources.extension, kde baseName je název hlavního sestavení a extension je platná přípona názvu souboru (například .dll). Modul runtime nemůže určit jazykovou verzi satelitního sestavení na základě názvu výstupního souboru; K jeho zadání je nutné použít možnost /culture . |
-template:Example.dll |
Určuje sestavení, ze kterého bude satelitní sestavení dědit metadata sestavení s výjimkou pole kultury. Tato možnost má vliv na satelitní sestavení pouze v případě, že zadáte sestavení s pevně daným názvem. |
Úplný seznam možností dostupných pro al.exe naleznete v dokumentaci Linker sestavení (al.exe).
Poznámka:
Může docházet k tomu, že budete chtít k kompilaci satelitních sestavení použít úlohu .NET Core MSBuild, i když cílíte na rozhraní .NET Framework. Můžete například použít deterministickou možnost kompilátoru jazyka C#, abyste mohli porovnávat sestavení z různých sestavení. V tomto případě nastavte GenerateSatelliteAssembliesForCore na true ve souboru .csproj, aby se pro generování satelitních sestavení používalo csc.exe místo Al.exe (Linker sestavení).
<Project>
<PropertyGroup>
<GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
</PropertyGroup>
</Project>
Úloha .NET Core MSBuild používá csc.exe místo al.exe ke generování satelitních sestavení ve výchozím nastavení. Další informace naleznete v části Usnadnění možnosti přihlášení k generování satelitního sestavení "Core".
Příklad satelitních sestav
Následuje jednoduchý příklad "Hello world", který zobrazí pole se zprávou obsahující lokalizovaný pozdrav. Příklad obsahuje zdroje pro kultury angličtiny (USA), francouzštiny (Francie) a ruštiny (Rusko) a záložní kulturou je angličtina. Pokud chcete vytvořit příklad, postupujte takto:
Vytvořte soubor prostředku s názvem Greeting.resx nebo Greeting.txt, který bude obsahovat prostředek pro výchozí kulturu. Uložte do tohoto souboru jediný řetězec pojmenovaný
HelloString, jehož hodnota je "Hello world!".Chcete-li označit, že angličtina (en) je výchozí jazyková verze aplikace, přidejte následující System.Resources.NeutralResourcesLanguageAttribute atribut do souboru AssemblyInfo aplikace nebo do hlavního souboru zdrojového kódu, který bude zkompilován do hlavního sestavení aplikace.
[assembly: NeutralResourcesLanguage("en")]<Assembly: NeutralResourcesLanguage("en")>Do aplikace přidejte podporu dalších jazykových verzí (
en-USafr-FRru-RU) následujícím způsobem:Pro podporu kulturní verze
en-USnebo angličtiny (Spojené státy), vytvořte soubor prostředků s názvem Greeting.en-US.resx nebo Greeting.en-US.txt a uložte do něj řetězec s názvemHelloStrings hodnotou "Hi world!".Pokud chcete podpořit francouzskou (francouzskou) kulturu, vytvořte soubor prostředků s názvem
fr-FRnebo Greeting.fr-FR.txt a uložte do něj řetězec nazvaný , jehož hodnota je "Salut tout le monde!".Pro podporu
ru-RUruské kultury (Rusko) vytvořte soubor prostředků s názvem Greeting.ru-RU.resx nebo Greeting.ru-RU.txt a uložte do něj jeden řetězec s názvemHelloString, jehož hodnota je "Всем привет!".
Pomocí resgen.exe zkompilujte každý text nebo soubor prostředků XML do binárního souboru .resources . Výstup je sada souborů, které mají stejný název kořenového souboru jako soubory .resx nebo .txt , ale příponu .resources . Pokud vytvoříte příklad pomocí sady Visual Studio, proces kompilace se zpracuje automaticky. Pokud visual Studio nepoužíváte, spuštěním následujících příkazů zkompilujte soubory .resx do souborů .resources :
resgen Greeting.resx resgen Greeting.en-us.resx resgen Greeting.fr-FR.resx resgen Greeting.ru-RU.resxPokud jsou vaše prostředky v textových souborech místo souborů XML, nahraďte příponu .resx příponou .txt.
Zkompilujte následující zdrojový kód spolu s prostředky pro výchozí kulturu do hlavního sestavení aplikace.
Důležité
Pokud k vytvoření příkladu používáte příkazový řádek místo sady Visual Studio, měli byste změnit volání konstruktoru ResourceManager třídy na následující:
ResourceManager rm = new ResourceManager("Greeting", typeof(Example).Assembly);using System; using System.Globalization; using System.Reflection; using System.Resources; using System.Threading; using System.Windows.Forms; class Example { static void Main() { // Create array of supported cultures string[] cultures = {"en-CA", "en-US", "fr-FR", "ru-RU"}; Random rnd = new Random(); int cultureNdx = rnd.Next(0, cultures.Length); CultureInfo originalCulture = Thread.CurrentThread.CurrentCulture; try { CultureInfo newCulture = new CultureInfo(cultures[cultureNdx]); Thread.CurrentThread.CurrentCulture = newCulture; Thread.CurrentThread.CurrentUICulture = newCulture; ResourceManager rm = new ResourceManager("Example.Greeting", typeof(Example).Assembly); string greeting = String.Format("The current culture is {0}.\n{1}", Thread.CurrentThread.CurrentUICulture.Name, rm.GetString("HelloString")); MessageBox.Show(greeting); } catch (CultureNotFoundException e) { Console.WriteLine($"Unable to instantiate culture {e.InvalidCultureName}"); } finally { Thread.CurrentThread.CurrentCulture = originalCulture; Thread.CurrentThread.CurrentUICulture = originalCulture; } } }Imports System.Globalization Imports System.Resources Imports System.Threading Module Module1 Sub Main() ' Create array of supported cultures Dim cultures() As String = {"en-CA", "en-US", "fr-FR", "ru-RU"} Dim rnd As New Random() Dim cultureNdx As Integer = rnd.Next(0, cultures.Length) Dim originalCulture As CultureInfo = Thread.CurrentThread.CurrentCulture Try Dim newCulture As New CultureInfo(cultures(cultureNdx)) Thread.CurrentThread.CurrentCulture = newCulture Thread.CurrentThread.CurrentUICulture = newCulture Dim greeting As String = String.Format("The current culture is {0}.{1}{2}", Thread.CurrentThread.CurrentUICulture.Name, vbCrLf, My.Resources.Greetings.HelloString) MsgBox(greeting) Catch e As CultureNotFoundException Console.WriteLine("Unable to instantiate culture {0}", e.InvalidCultureName) Finally Thread.CurrentThread.CurrentCulture = originalCulture Thread.CurrentThread.CurrentUICulture = originalCulture End Try End Sub End ModulePokud se aplikace jmenuje Příklad a kompilujete z příkazového řádku, je příkaz kompilátoru jazyka C#:
csc Example.cs -res:Greeting.resourcesOdpovídající příkaz kompilátoru jazyka Visual Basic je:
vbc Example.vb -res:Greeting.resourcesVytvořte podadresář v hlavním adresáři aplikace pro každou lokalizovanou jazykovou verzi podporovanou aplikací. Měli byste vytvořit podadresář en-US, fr-FR a ru-RU . Visual Studio vytvoří tyto podadresáře automaticky jako součást procesu kompilace.
Vložte jednotlivé kulturně specifické soubory .resources do satelitních sestavení a uložte je do příslušného adresáře. Příkaz, který to provede pro každý soubor .resources , je:
al -target:lib -embed:Greeting.culture.resources -culture:culture -out:culture\Example.resources.dllkde kultura je název kultury, jejíž prostředky satelitní sestavení obsahuje. Visual Studio tento proces zpracovává automaticky.
Pak můžete spustit příklad. Náhodně vytvoří jednu z podporovaných jazykových verzí aktuální jazykovou verzi a zobrazí lokalizovaný pozdrav.
Instalace satelitních sestavení do globálního úložiště sestavení
Namísto toho, abyste instalovali sestavení do podadresáře místní aplikace, můžete je nainstalovat do globální mezipaměti sestavení. To je obzvláště užitečné, pokud máte knihovny tříd a zdrojové sestavy knihoven, které jsou používány více aplikacemi.
Instalace sestavení v globální mezipaměti sestavení vyžaduje, aby měly silné názvy. Sestavení se silným názvem jsou podepsána platnou dvojicí veřejného a privátního klíče. Obsahují informace o verzi, které modul runtime používá k určení sestavení, které se má použít k splnění požadavku vazby. Další informace o silných názvech a verzování naleznete v Sestavy verzování. 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 budete mít přístup k poslednímu páru veřejného a privátního klíče. Pokud chcete nainstalovat satelitní sestavení do globální mezipaměti sestavení a zajistit, že funguje podle očekávání, můžete použít techniku označovanou jako zpožděné podepisování. Když zpozdíte podepsání sestavení, v době sestavení si rezervujete místo v souboru pro podpis silného názvu. Skutečné podepisování se zpozdí až později, až bude k dispozici poslední pár veřejného a privátního klíče. Další informace o zpožděném podepisování naleznete v tématu Zpoždění podepisování sestavení.
Získání veřejného klíče
Pokud chcete odložit podepsání sestavení, musíte mít přístup k veřejnému klíči. Můžete buď získat skutečný veřejný klíč od organizace ve vaší společnosti, která provede případné podepisování, nebo vytvořit veřejný klíč pomocí nástroje Silné jméno (sn.exe).
Následující příkaz Sn.exe vytvoří dvojici testovacího veřejného a privátního klíče. Možnost –k určuje, že Sn.exe by měl vytvořit novou dvojici klíčů a uložit ji do souboru s názvem TestKeyPair.snk.
sn –k TestKeyPair.snk
Veřejný klíč můžete extrahovat ze souboru, který obsahuje dvojici testovacího klíče. Následující příkaz extrahuje veřejný klíč z TestKeyPair.snk a uloží ho do PublicKey.snk:
sn –p TestKeyPair.snk PublicKey.snk
Odložené podepsání sestavení
Po získání nebo vytvoření veřejného klíče použijete Linker sestavení (al.exe) ke kompilaci sestavení a specifikaci zpožděného podepisování.
Následující příkaz al.exe vytvoří satelitní sestavení se silným názvem pro aplikaci StringLibrary ze souboru strings.ja.resources:
al -target:lib -embed:strings.ja.resources -culture:ja -out:StringLibrary.resources.dll -delay+ -keyfile:PublicKey.snk
Možnost -delay+ určuje, že linker sestavení by měl zpozdit podepsání sestavení. Možnost -keyfile určuje název souboru klíče, který obsahuje veřejný klíč, který se má použít ke zpoždění podepsání sestavení.
Opětovné podepsání sestavení
Než nasadíte aplikaci, musíte znovu podepsat satelitní sestavení se zpožděným podpisem pomocí opravdového páru klíčů. Můžete to provést pomocí Sn.exe.
Následující příkaz Sn.exe podepíše StringLibrary.resources.dll párem klíčů uloženým v souboru RealKeyPair.snk. Možnost –R určuje, že dříve podepsané nebo opožděně podepsané sestavení se má znovu podepsat.
sn –R StringLibrary.resources.dll RealKeyPair.snk
Instalace satelitního sestavení do Globální mezipaměti sestavení
Když modul runtime hledá prostředky v procesu záložního vyhledávání prostředků, nejprve se podívá do globální mezipaměti sestavení. (Další informace najdete v části "Záložní proces prostředku" v části Zabalte a nasaďte prostředky.) Jakmile je satelitní sestavení podepsáno silným názvem, lze jej nainstalovat do globální mezipaměti sestavení pomocí nástroje Globální mezipaměť sestavení (gacutil.exe).
Následující příkaz Gacutil.exe nainstaluje StringLibrary.resources.dll* do globální mezipaměti sestavení:
gacutil -i:StringLibrary.resources.dll
Možnost /i určuje, že Gacutil.exe by měl nainstalovat zadané sestavení do globální mezipaměti sestavení. Po instalaci satelitního sestavení v mezipaměti budou prostředky, které obsahuje, k dispozici pro všechny aplikace, které jsou navrženy tak, aby používaly satelitní sestavení.
Prostředky v globálním úložišti sestavení: Příklad
Následující příklad používá metodu v knihovně tříd .NET k extrakci a vrácení lokalizovaného pozdravu ze souboru prostředků. Knihovna a její zdroje jsou registrovány v globální mezipaměti sestavení. Příklad obsahuje zdroje pro angličtinu (USA), francouzštinu (Francie), ruštinu (Rusko) a angličtinu. Anglická kultura je výchozí; její prostředky jsou uloženy v hlavním sestavení. Příklad nejprve předběžně podepíše knihovnu a její satelitní sestavení pomocí veřejného klíče a poté je znovu podepíše párem veřejného/privátního klíče. Pokud chcete vytvořit příklad, postupujte takto:
Pokud visual Studio nepoužíváte, vytvořte pomocí následujícího příkazu nástroje Strong Name Tool (Sn.exe) pár veřejného a privátního klíče s názvem ResKey.snk:
sn –k ResKey.snkPokud používáte Visual Studio, použijte kartu Podpis v dialogovém okně Vlastnosti projektu k vygenerování souboru klíče.
Pomocí následujícího příkazu Strong Name Tool (Sn.exe) vytvořte soubor veřejného klíče s názvem PublicKey.snk:
sn –p ResKey.snk PublicKey.snkVytvořte soubor zdrojů s názvem Strings.resx, který bude obsahovat zdroje pro výchozí jazykovou verzi. V daném souboru uložte jeden řetězec s názvem
Greeting, jehož hodnota je "How do you do?".Chcete-li označit, že "en" je výchozí jazyková verze aplikace, přidejte následující System.Resources.NeutralResourcesLanguageAttribute atribut do souboru AssemblyInfo aplikace nebo do hlavního souboru zdrojového kódu, který se zkompiluje do hlavního sestavení aplikace:
[assembly:NeutralResourcesLanguageAttribute("en")]<Assembly: NeutralResourcesLanguageAttribute("en")>Do aplikace přidejte podporu dalších jazykových verzí (jazykové verze en-US, fr-FR a ru-RU):
Pokud chcete podporovat kulturu "en-US" nebo English (United States), vytvořte soubor prostředků s názvem Strings.en-US.resx nebo Strings.en-US.txt a uložte do něj řetězec s hodnotou "Hello!".
Pro podporu jazykové verze "fr-FR" nebo francouzštiny (Francie) vytvořte soubor prostředků s názvem Strings.fr-FR.resx nebo Strings.fr-FR.txt a uložte do něj jeden řetězec s názvem
Greetingjehož hodnota je "Bon jour!".Pokud chcete podporovat jazykovou verzi ru-RU nebo ruštinu (Rusko), vytvořte soubor prostředků s názvem Strings.ru-RU.resx nebo Strings.ru-RU.txt a uložte do něj řetězec s názvem
Greeting, jehož hodnota je "Привет!".
Pomocí resgen.exe zkompilujte každý text nebo soubor prostředků XML do binárního souboru .resources. Výstup je sada souborů, které mají stejný název kořenového souboru jako soubory .resx nebo .txt , ale příponu .resources . Pokud vytvoříte příklad pomocí sady Visual Studio, proces kompilace se zpracuje automaticky. Pokud visual Studio nepoužíváte, spuštěním následujícího příkazu zkompilujte soubory .resx do souborů .resources :
resgen filenameKde název souboru je volitelná cesta, název souboru a přípona souboru .resx nebo textového souboru.
Zkompilujte následující zdrojový kód pro StringLibrary.vb nebo StringLibrary.cs společně s prostředky pro výchozí jazykovou verzi do zpožděného podepsaného sestavení knihovny s názvem StringLibrary.dll:
Důležité
Pokud k vytvoření příkladu používáte příkazový řádek místo sady Visual Studio, měli byste změnit volání konstruktoru ResourceManager třídy na
ResourceManager rm = new ResourceManager("Strings",typeof(Example).Assembly);.using System; using System.Globalization; using System.Reflection; using System.Resources; using System.Threading; [assembly:NeutralResourcesLanguageAttribute("en")] public class StringLibrary { public string GetGreeting() { ResourceManager rm = new ResourceManager("Strings", Assembly.GetAssembly(typeof(StringLibrary))); string greeting = rm.GetString("Greeting"); return greeting; } }Imports System.Globalization Imports System.Reflection Imports System.Resources Imports System.Threading <Assembly: NeutralResourcesLanguageAttribute("en")> Public Class StringLibrary Public Function GetGreeting() As String Dim rm As New ResourceManager("Strings", _ Assembly.GetAssembly(GetType(StringLibrary))) Dim greeting As String = rm.GetString("Greeting") Return greeting End Function End ClassPříkaz pro kompilátor jazyka C# je:
csc -t:library -resource:Strings.resources -delaysign+ -keyfile:publickey.snk StringLibrary.csOdpovídající příkaz kompilátoru jazyka Visual Basic je:
vbc -t:library -resource:Strings.resources -delaysign+ -keyfile:publickey.snk StringLibrary.vbVytvořte podadresář v hlavním adresáři aplikace pro každou lokalizovanou jazykovou verzi podporovanou aplikací. Měli byste vytvořit podadresář en-US, fr-FR a ru-RU . Visual Studio vytvoří tyto podadresáře automaticky jako součást procesu kompilace. Vzhledem k tomu, že všechna satelitní sestavení mají stejný název souboru, používají se podadresáře k ukládání jednotlivých satelitních sestavení specifických pro jednotlivé kultury, dokud nejsou podepsána dvojicí veřejného a soukromého klíče.
Vložte jednotlivé soubory specifické pro kulturu .resources do zpožděných podepsaných satelitních sestavení a uložte je do příslušného adresáře. Příkaz, který to provede pro každý soubor .resources , je:
al -target:lib -embed:Strings.culture.resources -culture:culture -out:culture\StringLibrary.resources.dll -delay+ -keyfile:publickey.snkkde kultura je název kultury. V tomto příkladu jsou názvy kultur en-US, fr-FR a ru-RU.
Opětovné podepsání StringLibrary.dll pomocí nástroje Silné jméno (sn.exe) následujícím způsobem:
sn –R StringLibrary.dll RealKeyPair.snkZnovu podepiste jednotlivá satelitní sestavení. K tomu použijte nástroj Strong Name (sn.exe) pro každé satelitní sestavení:
sn –R StringLibrary.resources.dll RealKeyPair.snkPomocí následujícího příkazu zaregistrujte StringLibrary.dll a každé jeho satelitní sestavení v globální paměti pro sestavení:
gacutil -i filenamekde název souboru je název souboru, který se má zaregistrovat.
Pokud používáte Visual Studio, vytvořte nový projekt konzolové aplikace s názvem
Example, přidejte do něj odkaz na StringLibrary.dll a následující zdrojový kód a zkompilujte ho.using System; using System.Globalization; using System.Threading; public class Example { public static void Main() { string[] cultureNames = { "en-GB", "en-US", "fr-FR", "ru-RU" }; Random rnd = new Random(); string cultureName = cultureNames[rnd.Next(0, cultureNames.Length)]; Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(cultureName); Console.WriteLine($"The current UI culture is {Thread.CurrentThread.CurrentUICulture.Name}"); StringLibrary strLib = new StringLibrary(); string greeting = strLib.GetGreeting(); Console.WriteLine(greeting); } }Imports System.Globalization Imports System.Threading Module Example Public Sub Main() Dim cultureNames() As String = {"en-GB", "en-US", "fr-FR", "ru-RU"} Dim rnd As New Random() Dim cultureName As String = cultureNames(rnd.Next(0, cultureNames.Length)) Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(cultureName) Console.WriteLine("The current UI culture is {0}", Thread.CurrentThread.CurrentUICulture.Name) Dim strLib As New StringLibrary() Dim greeting As String = strLib.GetGreeting() Console.WriteLine(greeting) End Sub End ModulePokud chcete zkompilovat z příkazového řádku, použijte pro kompilátor jazyka C#následující příkaz:
csc Example.cs -r:StringLibrary.dllPříkazový řádek kompilátoru jazyka Visual Basic je:
vbc Example.vb -r:StringLibrary.dllSpusťte Example.exe.