Ressourcennamen in MRM
Jede Ressource in MRM weist einen Namen auf. Ressourcennamen sind URIs, die IETF RFC 3986 entsprechen.
Ein Ressourcenname in MRM hat folgende Form:
ms-resource://<PackageFamilyName>/<Root>/<Rest...>
Hierbei gilt:
ms-resource
ist das Schema.<PackageFamilyName>
ist die Autorität und ist entweder der Paketfamilienname der App, die die Ressourcen verwendet, oder die Literalzeichenfolge"Application"
für entpackte Apps.<Root>
ist ein einzelnes Pfadsegment.<Rest...>
ist ein oder mehrere andere Pfadsegmente, die durch Schrägstriche getrennt sind.
Die Abfrage und Fragmentteile eines URI sind nicht zulässig.
Aus Platzgründen bezieht sich diese Dokumentation in der Regel auf Ressourcennamen ohne Schema oder Autorität (z. B. „strings/foo” oder einfach „foo”).
Groß- und Kleinschreibung
Obwohl die ms-resource
Groß-/Kleinschreibung beachtet wird, sind die Pfade nicht.
Alle folgenden sind gleich:
ms-resource:///FILES/LOGO.PNG
ms-resource:///files/logo.png
ms-resource:///FiLeS/LoGo.PnG
Es folgen jedoch beide Fehler:
MS-RESOURCE:///files/logo.png
Ms-Resource:///files.logo.png
Wenn unterschiedliche Ressourcenkandidaten unterschiedliche Groß-/Kleinschreibungen verwenden, ist diejenige, die in der PRI-Datei erscheint, von der Implementierung abhängig. Dies spielt keine Rolle, da bei der Laufzeitressourcensuche auch die Groß-/Kleinschreibung beachtet wird.
Behörde
Aus Gründen der Benutzerfreundlichkeit lässt MRM Ressourcen-URIs beim Hinzufügen einer <PackageFamilyName>
Ressource zu einem Indexer aus. Darüber hinaus ermöglicht MRM die Angabe einer beliebigen gültigen Autorität als die, <PackageFamilyName>
aber sie wird durch den Wert ersetzt, der beim Erstellen des Ressourcenindexers als packageFamilyName angegeben ist (weitere Informationen finden Sie unter MrmCreateResourceIndexer).
Angenommen, der Ressourcenindexer wurde mit dem packageFamilyName erstellt, dann "MyApp"
sind alle folgenden Ressourcen-URIs gleichwertig:
ms-resource://MyApp/strings/foo // Canonical form.
ms-resource:///strings/foo // Omit the PFN.
ms-resource://App2/strings/foo // PFN "App2" is ignored.
Pfad
Wie in der obigen vereinfachten Grammatik angegeben, müssen alle Ressourcennamen in MRM mindestens zwei Pfadsegmente aufweisen <Root>
und <Rest...>
. Es ist ein Fehler, ein einzelnes Pfadsegment im Ressourcennamen oder den Ressourcennamen mit einem Schrägstrich zu beenden. Im Folgenden finden Sie Fehler:
ms-resource///hello // Error, only one path segment
ms-resource///strings/hello/ // Error, ends with a slash
Es gibt kein praktisches Limit für die Anzahl der Pfadsegmente, die Sie haben können, außer Grenzwerte für die Gesamtlänge eines URI (in der Regel ca. 2.000 Zeichen). Alle folgenden Ressourcennamen sind gültig:
ms-resource:///strings/hello
ms-resource:///files/assets/logo.png
ms-resource:///food/baked/muffins/lemon.and.blueberry/gluten_free
Konventionen
Obwohl dies nicht erforderlich ist, werden die folgenden Konventionen in PRI-Dateien verwendet.
- Zeichenfolgenressourcen werden den „Zeichenfolgen”
<RootPath>
hinzugefügt. - Dateiressourcen werden den „Dateien”
<RootPath>
hinzugefügt. - Containerressourcen (z. B. Ressourcen aus einer
resw
Datei) werden den „Ressourcen”<RootPath>
hinzugefügt.
Beachten Sie, dass die XAML-Lokalisierung von der Konvention „resources” abhängt (siehe x:Uid-Direktive für weitere Informationen), und andere Bibliotheken können auch von diesen Konventionen abhängen.
Benennen von Ressourcen für Bibliotheken
Beim Erstellen von PRI-Dateien, die Teil einer wiederverteilbaren Bibliothek sein sollen, ist es wichtig, Ressourcennamen auszuwählen, die wahrscheinlich nicht mit den Namen der übergeordneten App (oder anderen Bibliotheken) in Konflikt stehen. Dies liegt daran, dass alle Ressourcen für eine App (einschließlich Ressourcen für abhängige Bibliotheken) zur Buildzeit mit einer einzelnen PRI-Datei zusammengeführt werden . Weitere Informationen finden Sie unter MrmIndexResourceContainerAutoQualifiers. Wenn derselbe Ressourcenname von der Haupt-App und einer seiner Bibliotheken (oder von zwei Bibliotheken) verwendet wird, tritt beim Generieren des PRI ein Fehler auf.
Um dies zu vermeiden, sollten Sie es in Betracht ziehen, Ihre Ressourcen in einen Pfad zu gliedern, der ein eindeutiges Segment enthält, z. B. den Reverse-DNS-Namen Ihres Unternehmens oder eine GUID.