Compartir a través de


Nombres de recurso en MRM

Cada recurso en MRM tiene un nombre. Los nombres de recursos son URI que se ajustan a IETF RFC 3986.

Un nombre de recurso en MRM tiene el formato siguiente:

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

Donde:

  • ms-resource es el esquema.
  • <PackageFamilyName> es la autoridad y es el nombre de familia de paquete de la aplicación que usará los recursos o la cadena literal "Application" para las aplicaciones sin empaquetar.
  • <Root> es un único segmento de ruta de acceso.
  • <Rest...> es uno o varios segmentos de ruta de acceso separados por barras diagonales.

No se permiten las partes de consulta y fragmento de un URI.

Por motivos de brevedad, esta documentación normalmente hace referencia a nombres de recursos sin el esquema o autoridad (por ejemplo, "strings/foo" o simplemente "foo").

Distinción entre mayúsculas y minúsculas

Aunque el esquema ms-resource distingue mayúsculas de minúsculas, las rutas de acceso no.

Todos los siguientes elementos son iguales:

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

Pero los dos siguientes son errores:

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

Si diferentes candidatos de recursos usan diferentes mayúsculas y minúsculas, la que aparece en el archivo PRI depende de la implementación. Esto no importa, ya que la búsqueda de recursos en tiempo de ejecución tampoco distingue entre mayúsculas y minúsculas.

Autoridad

Para mayor comodidad, MRM permite que los URI de recursos omitan el <PackageFamilyName> al agregar el recurso a un indexador. Además, MRM permite especificar cualquier autoridad válida como <PackageFamilyName>, pero se reemplazará por el valor especificado como packageFamilyName al crear el indexador de recursos (consulte MrmCreateResourceIndexer para obtener más información).

Por ejemplo, suponiendo que el indexador de recursos se creó con el packageFamilyName de "MyApp", todos los URI de recursos siguientes son equivalentes:

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

Path

Como se indica en la gramática simplificada anterior, todos los nombres de recursos de MRM deben tener al menos dos segmentos de ruta de acceso. <Root> y <Rest...>. Es un error tener un único segmento de ruta de acceso en el nombre del recurso o finalizar el nombre del recurso con una barra diagonal. Los siguientes elementos son errores:

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

En la práctica, no hay límite en cuanto al número de segmentos de ruta que se pueden tener, aparte de los límites de la longitud total de un URI (normalmente alrededor de 2000 caracteres). Todos los siguientes elementos son nombres de recursos válidos:

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

Convenciones

Aunque no son en absoluto obligatorias, en los archivos PRI se utilizan las siguientes convenciones.

  • Los recursos de cadena se agregan a la <RootPath> de las "cadenas".
  • Los recursos de archivo se agregan a la <RootPath> de los "archivos"
  • Los recursos de contenedor (por ejemplo, los recursos de un resw archivo) se agregan a la <RootPath> de los "recursos".

Ten en cuenta que la localización XAML depende de la convención de "recursos" (consulte la directiva x:Uid para obtener más información) y otras bibliotecas también pueden depender de estas convenciones.

Nomenclatura de recursos para bibliotecas

Cuando se compilan archivos PRI para formar parte de una biblioteca redistribuible, es importante elegir nombres de recursos que no entren en conflicto con los nombres de la aplicación principal (u otras bibliotecas). Esto se debe a que todos los recursos de una aplicación (incluidos los recursos de las bibliotecas dependientes) se combinan en un único archivo PRI en tiempo de compilación: consulte MrmIndexResourceContainerAutoQualifiers para obtener más información. Si la aplicación principal y una de sus bibliotecas (o dos bibliotecas) utilizan el mismo nombre de recurso, se producirá un error al generar el PRI.

Para evitarlo, considere espaciar los nombres de sus recursos en una ruta que incluya un segmento único, como el nombre DNS inverso de su empresa o un GUID.