Sdílet prostřednictvím


Vložit prostředky do balíčku aplikace místo do balíčku prostředků

Některé druhy aplikací (vícejazyčné slovníky, nástroje pro překlad atd.) musí přepsat výchozí chování sady aplikací a sestavit prostředky do balíčku aplikace místo toho, aby byly v samostatných balíčcích prostředků (nebo balíčcích prostředků). Toto téma vysvětluje, jak to udělat.

Při vytváření sady aplikací (.appxbundle) se ve výchozím nastavení do balíčku aplikace zabudují jenom výchozí prostředky pro jazyk, škálování a úroveň funkce DirectX. Přeložené prostředky a prostředky přizpůsobené pro jiné než výchozí úrovně škálování a/nebo úrovně funkcí DirectX jsou integrované do balíčků prostředků a stáhnou se jenom do zařízení, která je potřebují. Pokud zákazník kupuje aplikaci z Microsoft Storu pomocí zařízení s předvolbou jazyka nastavenou na španělštinu, stáhne se a nainstaluje jenom vaše aplikace a balíček prostředků španělštiny. Pokud stejný uživatel později změní své jazykové nastavení na francouzštinu v Nastavení, stáhne se a nainstaluje balíček prostředků aplikace pro francouzský jazyk. Podobné věci se dějí s vašimi prostředky kvalifikovanými pro škálování a úroveň funkcí DirectX. U většiny aplikací toto chování představuje cennou efektivitu a je to to, co vy a zákazník chceme provést.

Pokud ale vaše aplikace umožňuje uživateli změnit jazyk za běhu z aplikace (místo přes Nastavení), není toto výchozí chování vhodné. Ve skutečnosti chcete, aby se všechny vaše jazykové prostředky bezpodmínečně stáhly a nainstalovaly společně s aplikací jednou a pak zůstaly na zařízení. Místo samostatných balíčků prostředků chcete do balíčku aplikace sestavit všechny tyto prostředky.

Poznámka Zahrnutí prostředků do balíčku aplikace v podstatě zvyšuje velikost aplikace. To je důvod, proč stojí za to, aby to bylo jen tehdy, když to povaha aplikace vyžaduje. Pokud ne, nemusíte dělat nic kromě sestavení běžné sady aplikací jako obvykle.

Visual Studio můžete nakonfigurovat tak, aby prostředky sestavil do balíčku aplikace dvěma způsoby. Do projektu můžete buď přidat konfigurační soubor, nebo můžete soubor projektu upravit přímo. Použijte kteroukoli z těchto možností, se kterou jste nejpohodlnější, nebo která nejlépe vyhovuje vašemu systému sestavení.

Možnost 1. Použijte priconfig.packaging.xml pro vložení prostředků do balíčku aplikace

  1. V sadě Visual Studio přidejte do projektu novou položku. Zvolte soubor XML a pojmenujte ho priconfig.packaging.xml.
  2. V Průzkumníku řešení vyberte priconfig.packaging.xml a zkontrolujte okno Vlastnosti. Akce sestavení souboru by měla být nastavena na None a vlastnost Kopírovat do výstupního adresáře by měla být nastavena na Nekopírovat.
  3. Nahraďte obsah souboru tímto KÓDEM XML.
    <packaging>
       <autoResourcePackage qualifier="Language" />
       <autoResourcePackage qualifier="Scale" />
       <autoResourcePackage qualifier="DXFeatureLevel" />
    </packaging>
    
  4. Každý prvek <autoResourcePackage> určuje aplikaci Visual Studio, aby automaticky rozdělila prostředky podle daného jména kvalifikátoru do samostatných balíčků prostředků. Tomu se říká automatické rozdělení. S obsahem souboru, který jste dosud vytvořili, jste ve skutečnosti nezměnili chování Visual Studio. Jinými slovy, Visual Studio se už chová, jako kdyby byl tento soubor s tímto obsahem, protože se jedná o výchozí hodnoty. Pokud nechcete, aby sada Visual Studio automaticky rozdělila název kvalifikátoru, odstraňte tento <autoResourcePackage> prvek ze souboru. Tady je postup, jak by soubor vypadal, kdybyste chtěli, aby všechny vaše jazykové prostředky byly integrované do balíčku aplikace, místo aby se automaticky rozdělily do samostatných balíčků prostředků.
    <packaging>
       <autoResourcePackage qualifier="Scale" />
       <autoResourcePackage qualifier="DXFeatureLevel" />
    </packaging>
    
  5. Uložte a zavřete soubor a znovu sestavte projekt.

Pokud chcete potvrdit, že se bere v úvahu vaše možnosti automatického rozdělení, vyhledejte soubor <ProjectFolder>\obj\<ReleaseConfiguration folder>\split.priconfig.xml a potvrďte, že jeho obsah odpovídá vašim možnostem. Pokud ano, pak jste sadu Visual Studio úspěšně nakonfigurovali tak, aby se prostředky podle vašeho výběru sestavily do balíčku aplikace.

Je potřeba udělat jeden poslední krok. Ale pouze v případě, že jste odstranili název kvalifikátoru Language. Jako výchozí jazyk aplikace musíte zadat sjednocení všech podporovaných jazyků vaší aplikace. Podrobnosti najdete v tématu Určení výchozích prostředků, které vaše aplikace používá. To je to, co priconfig.default.xml by obsahovalo, kdybyste do balíčku aplikace zahrnovali prostředky pro angličtinu, španělštinu a francouzštinu.

   <default>
      <qualifier name="Language" value="en;es;fr" />
      ...
   </default>

Jak to funguje?

V zákulisí Visual Studio spustí nástroj s názvem MakePri.exe pro vygenerování souboru známého jako index prostředků balíčku, který popisuje všechny prostředky vaší aplikace, včetně určení, na které názvy kvalifikátorů prostředků se má automaticky dělit. Podrobnosti o tomto nástroji naleznete v tématu Ruční kompilace prostředků pomocí MakePri.exe. Visual Studio předává konfigurační soubor do MakePri.exe. Obsah souboru priconfig.packaging.xml se používá jako <packaging> prvek tohoto konfiguračního souboru, což je část, která určuje automatické rozdělení. Přidání a úpravy priconfig.packaging.xml nakonec ovlivní obsah souboru s indexem prostředků balíčku, který Visual Studio vygeneruje pro vaši aplikaci, a také obsah balíčků v balíku vaší aplikace.

Použití jiného názvu souboru než priconfig.packaging.xml

Pokud soubor priconfig.packaging.xmlpojmenujete, visual Studio ho rozpozná a použije ho automaticky. Pokud ho pojmenujete jinak, budete muset sadě Visual Studio dát vědět. Do souboru projektu mezi otvírací a koncovou značkou prvního <PropertyGroup> elementu přidejte tento kód XML.

<AppxPriConfigXmlPackagingSnippetPath>FILE-PATH-AND-NAME</AppxPriConfigXmlPackagingSnippetPath>

Nahraďte FILE-PATH-AND-NAME cestou a názvem vašeho souboru.

Možnost 2. Použijte soubor projektu ke zkompilování prostředků do balíčku aplikace

Toto je alternativa k možnosti 1. Jakmile pochopíte, jak možnost 1 funguje, můžete místo toho zvolit možnost 2, pokud to vyhovuje vašemu vývojovému nebo buildu pracovního postupu lépe.

Do souboru projektu mezi otvírací a koncovou značkou prvního <PropertyGroup> elementu přidejte tento kód XML.

<AppxBundleAutoResourcePackageQualifiers>Language|Scale|DXFeatureLevel</AppxBundleAutoResourcePackageQualifiers>

Takto to vypadá, když odstraníte první název kvalifikátoru.

<AppxBundleAutoResourcePackageQualifiers>Scale|DXFeatureLevel</AppxBundleAutoResourcePackageQualifiers>

Uložte a zavřete soubor a poté znovu sestavte projekt.

Je potřeba udělat jeden poslední krok. Ale pouze v případě, že jste odstranili název kvalifikátoru Language. Jako výchozí jazyk aplikace musíte zadat sjednocení všech podporovaných jazyků vaší aplikace. Podrobnosti najdete v tématu Určení výchozích prostředků, které vaše aplikace používá. Soubor projektu by obsahoval prostředky pro angličtinu, španělštinu a francouzštinu, kdybyste je zahrnuli v balíčku aplikace.

<AppxDefaultResourceQualifiers>Language=en;es;fr</AppxDefaultResourceQualifiers>