MRM'de kaynak adları
MRM'deki her kaynağın bir adı vardır. Kaynak adları, IETF RFC 3986uyumlu URI'lerdir.
MRM'deki bir kaynak adı aşağıdaki biçimdedir:
ms-resource://<PackageFamilyName>/<Root>/<Rest...>
Nerede:
-
ms-resource
düzenidir. -
<PackageFamilyName>
, yetkilisidir ve kaynakları kullanacak uygulamanın Paket Aile Adı veya paketlenmemiş uygulamalar için değişmez dize"Application"
. -
<Root>
, tek biryol kesimidir. -
<Rest...>
, eğik çizgilerle ayrılmış bir veya daha fazla yol kesimidir.
sorgu ve parçasına bir URI'nin bölümlerine izin verilmez.
Kısa olması için, bu belge genellikle şema veya yetkili olmadan kaynak adlarını ifade eder (örneğin, "dizeler/foo" veya yalnızca "foo").
Büyük/küçük harf duyarlılığı
Şema ms-resource
büyük/küçük harfe duyarlı olsa da, yollar değildir.
Aşağıdakilerin tümü eşittir:
ms-resource:///FILES/LOGO.PNG
ms-resource:///files/logo.png
ms-resource:///FiLeS/LoGo.PnG
Ancak her iki hata da şunlardır:
MS-RESOURCE:///files/logo.png
Ms-Resource:///files.logo.png
Farklı kaynak adayları farklı büyük/küçük harf kullanıyorsa, PRI dosyasında görünen uygulama bağımlıdır. Çalışma zamanı kaynak arama da büyük/küçük harfe duyarlı olmadığından bu önemli değildir.
Otorite
Kolaylık olması için MRM, kaynak URI'lerinin dizin oluşturucuya kaynak eklerken <PackageFamilyName>
atmasına olanak tanır. Ayrıca MRM, <PackageFamilyName>
olarak geçerli yetkili izin verir, ancak kaynak dizin oluşturucu oluşturulurken packageFamilyName olarak belirtilen değerle değiştirilir (daha fazla bilgi için bkz. MrmCreateResourceIndexer).
Örneğin, kaynak dizin oluşturucusunun "MyApp"
packageFamilyName ile oluşturulduğu varsayıldığında, aşağıdaki kaynak URI'lerinin tümü eşdeğerdir:
ms-resource://MyApp/strings/foo // Canonical form.
ms-resource:///strings/foo // Omit the PFN.
ms-resource://App2/strings/foo // PFN "App2" is ignored.
Yol
Yukarıdaki basitleştirilmiş dil bilgisi ile belirtildiği gibi, MRM'deki tüm kaynak adlarının <Root>
ve <Rest...>
olmak üzere en az iki yol kesimi olmalıdır. Kaynak adında tek bir yol kesimi olması veya kaynak adını eğik çizgiyle sonlandırmak bir hatadır. Hatalar şunlardır:
ms-resource///hello // Error, only one path segment
ms-resource///strings/hello/ // Error, ends with a slash
Bir URI'nin toplam uzunluğuna (genellikle yaklaşık 2.000 karakter) ilişkin sınırlar dışında, sahip olabileceğiniz yol kesimlerinin sayısı için pratik bir sınır yoktur. Aşağıdakilerin tümü geçerli kaynak adlarıdır:
ms-resource:///strings/hello
ms-resource:///files/assets/logo.png
ms-resource:///food/baked/muffins/lemon.and.blueberry/gluten_free
Kural -ları
Hiçbir şekilde gerekli olmasa da, PRI dosyalarında aşağıdaki kurallar kullanılır.
- Dize kaynakları "dizeler"
<RootPath>
eklenir. - Dosya kaynakları
<RootPath>
"dosyalara" eklenir. - Kapsayıcı kaynakları (örneğin, bir
resw
dosyasındaki kaynaklar)<RootPath>
"kaynaklar" öğesine eklenir.
XAML yerelleştirmesinin "kaynaklar" kuralına bağlı olduğunu unutmayın (daha fazla bilgi için bkz. x:Uid yönergesi) ve diğer kitaplıklar da bu kurala bağlı olabilir.
Kitaplıklar için kaynakları adlandırma
Yeniden dağıtılabilir bir kitaplığın parçası olarak PRI dosyaları oluştururken, üst uygulamanın (veya diğer kitaplıkların) adlarıyla çakışma olasılığı düşük olan kaynak adlarını seçmek önemlidir. Bunun nedeni, bir uygulamanın tüm kaynaklarının (bağımlı kitaplıklar için kaynaklar dahil) derleme zamanında tek bir PRI dosyasıyla birleştirilmesidir. Daha fazla bilgi için bkz. mrmIndexResourceContainerAutoQualifiers. Ana uygulama ve kitaplıklarından biri (veya iki kitaplık) tarafından aynı kaynak adı kullanılıyorsa, PRI oluşturulurken bir hata oluşur.
Bunu önlemek için, kaynaklarınızı şirketinizin ters DNS adı veya GUID'i gibi benzersiz bir kesim içeren bir yola adlar eklemeyi göz önünde bulundurun.