Delen via


Resourcenamen in MRM

Elke resource in MRM heeft een naam. Resourcenamen zijn URI's die voldoen aan IETF RFC 3986.

Een resourcenaam in MRM heeft de volgende vorm:

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

Waar:

  • ms-resource is het .
  • <PackageFamilyName> is de instantie en is dit de familienaam van het pakket van de app die de resources gebruikt, of de letterlijke tekenreeks "Application" voor uitgepakte apps.
  • <Root> is één padsegment.
  • <Rest...> is een of meer andere padsegmenten gescheiden door slashes.

De query en fragment gedeelten van een URI zijn niet toegestaan.

Ter beknoptheid verwijst deze documentatie doorgaans naar resourcenamen zonder het schema of de instantie (bijvoorbeeld 'tekenreeksen/foo' of 'foo').

Hoofdlettergevoeligheid

Hoewel het schema ms-resource hoofdlettergevoelig is, zijn de paden niet.

Alle volgende zijn gelijk:

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

Maar de volgende fouten zijn beide fouten:

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

Als verschillende resourcekandidaten verschillende behuizingen gebruiken, is de resource die in het PRI-bestand wordt weergegeven, afhankelijk van de implementatie. Dit maakt niet uit, omdat het opzoeken van runtimeresources ook hoofdlettergevoelig is.

Autoriteit

Met MRM kunnen resource-URI's de <PackageFamilyName> weglaten bij het toevoegen van resources aan een indexeerfunctie. Daarnaast kunt u met MRM elke geldige autoriteit opgeven als de <PackageFamilyName>, maar deze wordt vervangen door de waarde die is opgegeven als packageFamilyName bij het maken van de resourceindexeerfunctie (zie MrmCreateResourceIndexer voor meer informatie).

Als de resource-indexeerfunctie bijvoorbeeld is gemaakt met de packageFamilyName- van "MyApp" zijn alle volgende resource-URI's gelijk:

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

Pad

Zoals aangegeven door de vereenvoudigde grammatica hierboven, moeten alle resourcenamen in MRM ten minste twee padsegmenten hebben, <Root> en <Rest...>. Er is een fout opgetreden bij het hebben van één padsegment in de resourcenaam of het beëindigen van de resourcenaam met een slash. Het volgende zijn fouten:

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

Er is geen praktische limiet voor het aantal padsegmenten dat u kunt hebben, behalve limieten voor de totale lengte van een URI (meestal ongeveer 2000 tekens). Alle volgende zijn geldige resourcenamen:

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

Verdragen

Hoewel dit niet vereist is, worden de volgende conventies gebruikt in PRI-bestanden.

  • Tekenreeksbronnen worden toegevoegd aan de 'tekenreeksen' <RootPath>.
  • Bestandsbronnen worden toegevoegd aan de 'bestanden' <RootPath>.
  • Containerresources (bijvoorbeeld resources uit een resw-bestand) worden toegevoegd aan de <RootPath>'resources'.

Houd er rekening mee dat XAML-lokalisatie afhankelijk is van de conventie 'resources' (zie x:Uid-instructie voor meer informatie) en andere bibliotheken kunnen ook afhankelijk zijn van deze conventies.

Naamgevingsbronnen voor bibliotheken

Wanneer u PRI-bestanden maakt als onderdeel van een herdistributiebare bibliotheek, is het belangrijk om resourcenamen te kiezen die waarschijnlijk niet conflicteren met de namen van de bovenliggende app (of andere bibliotheken). Dit komt doordat alle resources voor een app (inclusief resources voor afhankelijke bibliotheken) tijdens de build worden samengevoegd in één PRI-bestand. Zie MrmIndexResourceContainerAutoQualifiers voor meer informatie. Als dezelfde resourcenaam wordt gebruikt door de hoofd-app en een van de bijbehorende bibliotheken (of door twee bibliotheken), treedt er een fout op bij het genereren van de PRI.

U kunt dit voorkomen door namen van uw resources te voorzien in een pad dat een uniek segment bevat, zoals de omgekeerde DNS-naam van uw bedrijf of een GUID.