Specificare le risorse predefinite usate dall'app

Se la tua app non include risorse che corrispondono alle impostazioni specifiche di un dispositivo cliente, vengono usate le risorse predefinite dell'app. Questo argomento illustra come specificare quali sono queste risorse predefinite.

Quando un cliente installa l'app da Microsoft Store, le impostazioni nel dispositivo del cliente vengono confrontate con le risorse disponibili dell'app. Questa corrispondenza viene eseguita in modo che solo le risorse appropriate debbano essere scaricate e installate per tale utente. Ad esempio, vengono usate le stringhe e le immagini più appropriate per le preferenze di lingua dell'utente e le impostazioni DPI e risoluzione del dispositivo. Ad esempio, 200 è il valore predefinito per scale, ma è possibile eseguire l'override di tale impostazione predefinita se si desidera.

Anche per le risorse che non entrano nei propri pacchetti di risorse (ad esempio immagini personalizzate per le impostazioni a contrasto elevato), è possibile specificare le risorse predefinite che l'app deve usare in fase di esecuzione se non è possibile trovare una risorsa corrispondente alle impostazioni dell'utente. Ad esempio, standard è il valore predefinito per contrast, ma è possibile eseguire l'override di tale impostazione predefinita se si desidera.

Queste impostazioni predefinite vengono specificate sotto forma di valori di qualificatore di risorsa predefiniti. Per una spiegazione dei qualificatori di risorse, del loro uso e dello scopo, vedere Personalizzare le risorse per lingua, scalabilità, contrasto elevato e altri qualificatori.

È possibile configurare le impostazioni predefinite in uno dei due modi seguenti. È possibile aggiungere un file di configurazione al progetto oppure modificare direttamente il file di progetto. Usare qualsiasi opzione con cui si è più a proprio agio o che funzioni meglio con il sistema di compilazione.

Opzione 1. Usare priconfig.default.xml per specificare i valori di qualificatore predefiniti

  1. In Visual Studio aggiungere un nuovo elemento al progetto. Scegliere File XML e assegnare al file priconfig.default.xmlil nome.

  2. In Esplora soluzioni selezionare priconfig.default.xml e controllare il Finestra Proprietà. L'azione di compilazione del file deve essere impostata su Nessuno e copiare nella directory di output deve essere impostata su Non copiare.

  3. Sostituire il contenuto del file con il codice XML seguente:

    <default>
       <qualifier name="Language" value="LANGUAGE-TAG(S)" />
       <qualifier name="Contrast" value="standard" />
       <qualifier name="Scale" value="200" />
       <qualifier name="HomeRegion" value="001" />
       <qualifier name="TargetSize" value="256" />
       <qualifier name="LayoutDirection" value="LTR" />
       <qualifier name="DXFeatureLevel" value="DX9" />
       <qualifier name="Configuration" value="" />
       <qualifier name="AlternateForm" value="" />
    </default>
    

    Nota Il valore LANGUAGE-TAG(S) deve essere sincronizzato con la lingua predefinita dell'app. Se si tratta di un singolo tag di lingua BCP-47, la lingua predefinita dell'app deve essere lo stesso tag. Se si tratta di un elenco delimitato da virgole di tag di lingua, la lingua predefinita dell'app deve essere il primo tag nell'elenco. Impostare la lingua predefinita dell'app nel campo Lingua predefinita nella scheda Applicazione nel file di origine del manifesto del pacchetto dell'app (Package.appxmanifest).

  4. Ogni <qualifier> elemento indica a Visual Studio quale valore usare come predefinito per ogni nome qualificatore. Con il contenuto del file finora non è stato modificato il comportamento di Visual Studio. In altre parole, Visual Studio si comportava già come se il file fosse presente con questi contenuti perché si tratta dei valori predefiniti. Per eseguire l'override di un valore predefinito con il proprio valore predefinito, è quindi necessario modificare un valore nel file. Di seguito è riportato un esempio di come il file potrebbe apparire se sono stati modificati i primi tre valori.

    <default>
       <qualifier name="Language" value="de-DE" />
       <qualifier name="Contrast" value="black" />
       <qualifier name="Scale" value="400" />
       <qualifier name="HomeRegion" value="001" />
       <qualifier name="TargetSize" value="256" />
       <qualifier name="LayoutDirection" value="LTR" />
       <qualifier name="DXFeatureLevel" value="DX9" />
       <qualifier name="Configuration" value="" />
       <qualifier name="AlternateForm" value="" />
    </default>
    
  5. Salva e chiudi il file e ricostruisci il tuo progetto.

Per verificare che le impostazioni predefinite sottoposte a override siano prese in considerazione, cercare il file <ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xml e verificare che il relativo contenuto corrisponda alle sostituzioni. In tal caso, sono stati configurati correttamente i valori di qualificatore delle risorse che verranno usate dall'app per impostazione predefinita. Se non viene trovata una corrispondenza per le impostazioni dell'utente, le risorse verranno usate i cui nomi di cartella o file contengono i valori di qualificatore predefiniti impostati qui.

Come funziona?

Dietro le quinte, Visual Studio avvia uno strumento denominato MakePri.exe per generare un file noto come indice delle risorse del pacchetto (PRI), che descrive tutte le risorse dell'app, tra cui che indicano quali sono le risorse predefinite. Per informazioni dettagliate su questo strumento, vedere Compilare manualmente le risorse con MakePri.exe. Visual Studio passa un file di configurazione a MakePri.exe. Il contenuto del priconfig.default.xml file viene usato come <default> elemento del file di configurazione, ovvero la parte che specifica il set di valori qualificatori considerati predefiniti. L'aggiunta e la modifica priconfig.default.xml influisce quindi sul contenuto del file package resource index generato da Visual Studio per l'app e include nel pacchetto dell'app.

Nota Ogni volta che modifichi il valore dell'elemento <qualifier name="Language" ... /> , devi sincronizzare tale modifica con la lingua predefinita dell'app. In questo modo le risorse della lingua indicizzate nel file PRI dell'app corrispondono alla lingua predefinita del manifesto dell'app. Il valore nell'elemento esegue l'override <qualifier name="Language" ... /> del valore nel manifesto rispetto al contenuto di <ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xml, ma il file e il manifesto dell'app devono corrispondere.

Uso di un nome di file diverso da priconfig.default.xml

Se si assegna un nome al file priconfig.default.xml, Visual Studio lo riconoscerà e lo userà automaticamente. Se si assegna un nome diverso, sarà necessario comunicare a Visual Studio. Nel file di progetto, tra i tag di apertura e chiusura del primo <PropertyGroup> elemento, aggiungere il codice XML.

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

Sostituisci FILE-PATH-AND-NAME con il percorso e il nome del file.

Opzione 2. Usare il file di progetto per specificare i valori di qualificatore predefiniti

Questa è un'alternativa all'opzione 1. Dopo aver compreso il funzionamento dell'opzione 1, è possibile scegliere di fare l'opzione 2 se si adatta allo sviluppo e/o al flusso di lavoro di compilazione migliore.

Nel file di progetto, tra i tag di apertura e chiusura del primo <PropertyGroup> elemento, aggiungere il codice XML.

<AppxDefaultResourceQualifiers>Language=LANGUAGE-TAG(S)|Contrast=standard|Scale=200|HomeRegion=001|TargetSize=256|LayoutDirection=LTR|DXFeatureLevel=DX9|Configuration=|AlternateForm=</AppxDefaultResourceQualifiers>

Di seguito è riportato un esempio di come eseguire questa operazione dopo aver modificato i primi tre valori.

<AppxDefaultResourceQualifiers>Language=de-DE|Contrast=black|Scale=400|HomeRegion=001|TargetSize=256|LayoutDirection=LTR|DXFeatureLevel=DX9|Configuration=|AlternateForm=</AppxDefaultResourceQualifiers>

Salvare e chiudere e ricompilare il progetto.

Nota Ogni volta che modifichi il valore, devi sincronizzare tale Language= modifica con la lingua predefinita dell'app nella finestra di progettazione del manifesto (aprendo Package.appxmanifest).