Erőforrásnevek az MRM-ben
Az MRM minden erőforrásának van neve. Az erőforrásnevek az IETF RFC 3986 URI-nak felelnek meg.
Az MRM-ben az erőforrás neve a következő formában található:
ms-resource://<PackageFamilyName>/<Root>/<Rest...>
Hol:
-
ms-resource
a séma. -
<PackageFamilyName>
a szolgáltatói, és vagy annak az alkalmazásnak a Csomagcsalád neve, amely az erőforrásokat fogja használni, vagy a csomagolatlan alkalmazásokhoz használt literális sztring"Application"
. -
<Root>
egyetlen elérésiút-szegmens. -
<Rest...>
egy vagy több más elérésiút-szegmens, perjelekkel elválasztva.
A lekérdezési és URI- részei nem engedélyezettek.
A rövidség kedvéért ez a dokumentáció általában a séma vagy a szolgáltató nélküli erőforrásnevekre hivatkozik (például "sztringek/foo" vagy csak "foo").
Kis- és nagybetűk érzékenysége
Bár a séma ms-resource
megkülönbözteti a kis- és nagybetűket, az elérési utak nem.
Az alábbiak mindegyike egyenlő:
ms-resource:///FILES/LOGO.PNG
ms-resource:///files/logo.png
ms-resource:///FiLeS/LoGo.PnG
Az alábbiakban azonban mindkét hiba található:
MS-RESOURCE:///files/logo.png
Ms-Resource:///files.logo.png
Ha a különböző erőforrás-jelöltek különböző burkolatokat használnak, a PRI-fájlban megjelenő rendszer implementációfüggő. Ez nem számít, mivel a futtatókörnyezeti erőforrás-keresés is érzéketlen a kis- és nagybetűk között.
Hatóság
A kényelem érdekében az MRM lehetővé teszi, hogy az erőforrás-URI-k kihagyják a <PackageFamilyName>
, amikor erőforrást ad hozzá egy indexelőhöz. Emellett az MRM lehetővé teszi érvényes szolgáltatói<PackageFamilyName>
megadását, de az erőforrás-indexelő létrehozásakor az packageFamilyName ként megadott értékre lesz lecserélve (további információ: MrmCreateResourceIndexer).
Tegyük fel például, hogy az erőforrás-indexelő a packageFamilyName"MyApp"
lett létrehozva, akkor az alábbi erőforrás-URI-k mindegyike egyenértékű:
ms-resource://MyApp/strings/foo // Canonical form.
ms-resource:///strings/foo // Omit the PFN.
ms-resource://App2/strings/foo // PFN "App2" is ignored.
Ösvény
Amint azt a fenti egyszerűsített nyelvhelyesség is jelzi, az MRM-ben az összes erőforrásnévnek legalább két elérési útszegmenssel kell rendelkeznie, <Root>
és <Rest...>
. Hiba, ha egyetlen elérésiút-szegmens szerepel az erőforrásnévben, vagy az erőforrás neve perjellel végződik. A következő hibák lépnek fel:
ms-resource///hello // Error, only one path segment
ms-resource///strings/hello/ // Error, ends with a slash
Az URI teljes hosszának korlátain (általában körülbelül 2000 karakter) kívül nincs gyakorlati korlátja az elérésiút-szegmensek számának. A következők mindegyike érvényes erőforrásnév:
ms-resource:///strings/hello
ms-resource:///files/assets/logo.png
ms-resource:///food/baked/muffins/lemon.and.blueberry/gluten_free
Egyezmények
Bár semmiképpen sem szükséges, a pri-fájlokban a következő konvenciók használatosak.
- A sztringerőforrások a "sztringek"
<RootPath>
lesznek hozzáadva. - A fájlerőforrások a "fájlok"
<RootPath>
lesznek hozzáadva. - A tárolók újraszolgáltatásai (például egy
resw
-fájlból származó erőforrások) hozzáadódnak az "erőforrások"<RootPath>
.
Vegye figyelembe, hogy az XAML honosítása az "erőforrások" konvenciótól függ (további információkért lásd x:Uid irányelv), és más kódtárak is függhetnek ezektől a konvencióktól.
Erőforrások elnevezése tárakhoz
Amikor pri-fájlokat hoz létre, hogy egy újraterjeszthető tár része legyen, fontos olyan erőforrásneveket választani, amelyek valószínűleg nem ütköznek a szülőalkalmazás (vagy más kódtárak) nevével. Ennek az az oka, hogy egy alkalmazás összes erőforrása (beleértve a függő kódtárak erőforrásait is) egyetlen PRI-fájlba egyesül a buildeléskor – további információért tekintse meg MrmIndexResourceContainerAutoQualifiers. Ha ugyanazt az erőforrásnevet használja a fő alkalmazás és annak egyik kódtára (vagy két kódtár), akkor a PRI létrehozásakor hiba történik.
Ennek elkerülése érdekében fontolja meg az erőforrások egyedi szegmenst tartalmazó elérési útként való elnevezését, például a vállalat fordított DNS-nevét vagy GUID-azonosítóját.