共用方式為


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。