Condividi tramite


Nomi delle risorse in MRM

Ogni risorsa in MRM ha un nome. I nomi delle risorse sono URI conformi a IETF RFC 3986.

Un nome di risorsa in MRM è del formato seguente:

ms-resource://<PackageFamilyName>/<Root>/<Rest...>

Dove:

  • ms-resource è lo schema.
  • <PackageFamilyName>è l'autorità e è il nome della famiglia di pacchetti dell'app che userà le risorse o la stringa "Application" letterale per le app non in pacchetto.
  • <Root> è un singolo segmento di percorso.
  • <Rest...> è uno o più segmenti di percorso separati da barre.

Le parti della query e del frammento di un URI non sono consentite.

Per brevità, questa documentazione si riferisce in genere ai nomi delle risorse senza lo schema o l'autorità (ad esempio "strings/foo" o semplicemente "foo").

Distinzione tra maiuscole e minuscole

Anche se lo schema ms-resource fa distinzione tra maiuscole e minuscole, i percorsi non sono.

Tutti gli elementi seguenti sono uguali:

ms-resource:///FILES/LOGO.PNG
ms-resource:///files/logo.png
ms-resource:///FiLeS/LoGo.PnG

Di seguito sono riportati entrambi gli errori:

MS-RESOURCE:///files/logo.png
Ms-Resource:///files.logo.png

Se i candidati di risorse diversi usano maiuscole e minuscole diverse, quello visualizzato nel file PRI dipende dall'implementazione. Ciò non è importante, poiché anche la ricerca delle risorse di runtime non fa distinzione tra maiuscole e minuscole.

Authority

Per praticità, MRM consente agli URI delle risorse di omettere quando <PackageFamilyName> si aggiunge una risorsa a un indicizzatore. Inoltre, MRM consente di specificare qualsiasi autorità valida come <PackageFamilyName> ma verrà sostituito con il valore specificato come packageFamilyName durante la creazione dell'indicizzatore di risorse (vedere MrmCreateResourceIndexer per altre informazioni).

Ad esempio, supponendo che l'indicizzatore di risorse sia stato creato con packageFamilyName di "MyApp" , tutti gli URI di risorsa seguenti sono equivalenti:

ms-resource://MyApp/strings/foo     // Canonical form.
ms-resource:///strings/foo          // Omit the PFN.
ms-resource://App2/strings/foo      // PFN "App2" is ignored.

Percorso

Come indicato dalla grammatica semplificata precedente, tutti i nomi delle risorse in MRM devono avere almeno due segmenti di percorso e <Root> <Rest...>. Si tratta di un errore per avere un singolo segmento di percorso nel nome della risorsa o per terminare il nome della risorsa con una barra. Di seguito sono riportati gli errori:

ms-resource///hello                 // Error, only one path segment
ms-resource///strings/hello/        // Error, ends with a slash

Non esiste alcun limite pratico al numero di segmenti di percorso che è possibile avere, oltre ai limiti per la lunghezza totale di un URI (in genere circa 2.000 caratteri). Tutti i nomi di risorse validi sono i seguenti:

ms-resource:///strings/hello
ms-resource:///files/assets/logo.png
ms-resource:///food/baked/muffins/lemon.and.blueberry/gluten_free

Convenzioni

Sebbene non sia necessario, le convenzioni seguenti vengono usate nei file PRI.

  • Le risorse stringa vengono aggiunte alle "stringhe". <RootPath>
  • Le risorse dei file vengono aggiunte ai "file". <RootPath>
  • Le risorse dei contenitori , ad esempio le risorse di un resw file, vengono aggiunte alle "risorse". <RootPath>

Tieni presente che la localizzazione XAML dipende dalla convenzione "resources" (vedi la direttiva x:Uid per altre info) e altre librerie possono dipendere anche da queste convenzioni.

Denominazione delle risorse per le librerie

Quando si compilano file PRI come parte di una libreria ridistribuibile, è importante scegliere i nomi delle risorse che probabilmente non sono in conflitto con i nomi dell'app padre (o altre librerie). Ciò è dovuto al fatto che tutte le risorse per un'app (incluse le risorse per le librerie dipendenti) vengono unite in un singolo file PRI in fase di compilazione. Per altre informazioni, vedere MrmIndexResourceContainerAutoQualifiers. Se lo stesso nome di risorsa viene usato dall'app principale e da una delle relative librerie (o da due librerie), si verificherà un errore durante la generazione del pri.

Per evitare questo problema, prendere in considerazione l'inserimento dei nomi delle risorse in un percorso che include un segmento univoco, ad esempio il nome DNS inverso dell'azienda o un GUID.