MRM 中的資源名稱
MRM 中的每個資源都有名稱。 資源名稱是符合 IETF RFC 3986 的 URI。
MRM 中的資源名稱的格式如下:
ms-resource://<PackageFamilyName>/<Root>/<Rest...>
其中:
ms-resource
是配置。<PackageFamilyName>
是授權單位,而且是將使用資源之應用程式的套件系列名稱,或是未封裝應用程式常值字串"Application"
。<Root>
是單 一路徑區段。<Rest...>
是一或多個以斜線分隔的其他 路徑區段 。
不允許 URI 的查詢和片段部分。
為了簡潔起見,本檔通常是指沒有配置或授權的資源名稱(例如 “strings/foo” 或只是 “foo”。
區分大小寫
雖然配置 ms-resource
區分大小寫,但路徑並不區分大小寫。
下列所有項目都相等:
ms-resource:///FILES/LOGO.PNG
ms-resource:///files/logo.png
ms-resource:///FiLeS/LoGo.PnG
但下列兩個錯誤:
MS-RESOURCE:///files/logo.png
Ms-Resource:///files.logo.png
如果不同的資源候選專案使用不同的大小寫,則出現在 PRI 檔案中的資源候選專案是實作相依的。 這並不重要,因為運行時間資源查閱也不區分大小寫。
授權單位
為了方便起見,MRM 允許資源 URI 在將資源新增至索引器時省略 <PackageFamilyName>
。 此外,MRM 允許將任何有效的授權單位指定為 ,<PackageFamilyName>
但會在建立資源索引器時將它取代為 packageFamilyName 的值(如需詳細資訊,請參閱 MrmCreateResourceIndexer)。
例如,假設使用 packageFamilyName "MyApp"
建立資源索引器,則下列所有資源 URI 都相等:
ms-resource://MyApp/strings/foo // Canonical form.
ms-resource:///strings/foo // Omit the PFN.
ms-resource://App2/strings/foo // PFN "App2" is ignored.
路徑
如此簡化文法所指示,MRM 中的所有資源名稱都必須至少有兩個路徑區段和 <Root>
<Rest...>
。 在資源名稱中具有單一路徑區段,或以斜線結束資源名稱是錯誤的。 以下是錯誤:
ms-resource///hello // Error, only one path segment
ms-resource///strings/hello/ // Error, ends with a slash
除了 URI 總長度的限制外,您所能擁有的路徑區段數目沒有實際限制(通常約 2,000 個字元)。 下列所有專案都是有效的資源名稱:
ms-resource:///strings/hello
ms-resource:///files/assets/logo.png
ms-resource:///food/baked/muffins/lemon.and.blueberry/gluten_free
慣例
雖然不需要,但 PRI 檔案中會使用下列慣例。
- 字串資源會新增至 「strings」。
<RootPath>
- 檔案資源會新增至 「檔案」
<RootPath>
。 - 容器資源(例如檔案
resw
中的資源)會新增至「資源」<RootPath>
。
請注意,XAML 本地化相依於「資源」慣例(如需詳細資訊,請參閱 x:Uid 指示詞 ),而其他連結庫也可能相依於這些慣例。
為連結庫命名資源
將 PRI 檔案建置為可重新散發連結庫的一部分時,請務必選擇不太可能與父應用程式名稱相衝突的資源名稱(或其他連結庫)。 這是因為應用程式的所有資源(包括相依連結庫的資源)會在建置時合併成單一 PRI 檔案 -- 如需詳細資訊,請參閱 MrmIndexResourceContainerAutoQualifiers。 如果主要應用程式及其其中一個連結庫使用相同的資源名稱(或兩個連結庫),則產生 PRI 時會發生錯誤。
若要避免這種情況,請考慮將資源命名為包含唯一區段的路徑,例如貴公司的反向 DNS 名稱或 GUID。