Aracılığıyla paylaş


MRM'de dosya kaynakları

MRM'deki dosya kaynakları temelde Dize kaynaklarıyla aynıdır, ancak çalışma zamanında ResourceCandidate.Kind özelliğiStringyerine Path olacaktır. Kaynak değerleri yalnızca dizelerdir ( dosya adları ) ve gerçek dosya içeriği değildir. Aslında, çoğu durumda dizine alınan dosyaların derleme zamanında var olması bile gerekmez.

Hedef uygulamanız yerleşik MRT çalışma zamanını (Windows.ApplicationModel.Resources) kullanacaksa, dosyayı sizin yerinize otomatik olarak bulmak ve yüklemek için ResourceCandidate.GetValueAsFileAsync veya ResourceCandidate.GetValueAsStreamAsync kullanabilirsiniz. MRT'nin WinApp SDK sürümünü (Microsoft.Windows.ApplicationModel.Resources) kullanıyorsanız, dosyayı kendiniz yüklemeniz gerekir. Dosyayı mrt çalışma zamanıyla el ile yüklemeyi de seçebilirsiniz.

MRM dizin oluşturucusna dosya eklemenin iki yolu vardır:

MrmIndexResourceContainerAutoQualifiersdizin oluşturucuya dosya kaynağı eklemediğini unutmayın; bunun yerine, adlandırılmış dosyayı derleme zamanında yükler ve ekli kaynakları doğrudan dizin oluşturucuya kopyalar.

Dosyalara ada göre başvurmak yerine, verileri doğrudan PRI dosyasına eklemek için MrmIndexEmbeddedDatakullanabilirsiniz. Daha fazla bilgi için aşağıdaki Embedded veri bakın.

Dosyaları adlandırma

Dosya tabanlı kaynağın birincil amacı, CreateFile(), fopen()veya std::fstream oluşturucu gibi işlevlere bir dize geçirmektir. Dosyaların son disk içi yolu genellikle derleme zamanında bilinmediğinden, dosya adları genellikle çalışma zamanında uygulamanın çalışma dizinine (veya başka bir iyi bilinen dizine) göre çözümlenecek göreli yollardır. Dosya adı olarak herhangi bir rastgele dize eklemek mümkün olsa da (mutlak veya ağ yolları dahil), bu genellikle kullanışlı değildir.

Proje Kökü ve göreli dosya adları

mrmCreateIndexer... işlevlerinden bir dizin oluşturucu oluştururken, bir projectRoot parametresi belirtmeniz gerekir. Bu parametre MrmIndexResourceContainerAutoQualifiers tarafından ayrıştırmak üzere disk üzerindeki dosyaları bulmak için kullanılır ve mrmIndexFileAutoQualifiers mutlak yollardan göreli yolları hesaplamak için. MrmIndexFiletarafından yoksayılır.

Eklenmiş veriler

Dosyaları veri olarak eklemek, uygulamanız için gereken depolama alanını azaltabilir ve dosya adlarına başvurmaya göre performansını artırabilir. Bununla birlikte, özellikle iç döngü uygulama geliştirme sırasında bu özelliği kullanmanın bazı dezavantajları vardır.

Tipik bir Windows sisteminde, disk alanının ayrılma şekli nedeniyle her dosya ortalama 2 kb disk alanı harcar. Çok sayıda küçük dosya (simgeler gibi) içeren uygulamalar için bu ortalama daha da yüksek olabilir. İkili dosya verilerini doğrudan PRI dosyasına ekleyerek bu dosya başına alan boşa harcanmaz.

Ayrıca, her dosya açma işlemi ek disk erişimi, güvenlik denetimleri vb. gerektirdiğinden, dış kaynak dosyalarını yükleme işlemi ikili verileri doğrudan PRI dosyasından okumaktan daha yavaştır. PRI dosyası her zaman belleğe eşlenmiş bir dosya olarak yüklenir, bu nedenle verilere erişim daha hızlıdır.

Bu avantajlara rağmen, katıştırılmış ikili verileri kullanmanın, özellikle iç döngü geliştirme sırasında sınırlamaları vardır:

  • İkili verileri içeren dosyaların yüklenmesi ve dizin oluşturucuya eklenmesi gerektiğinden derleme süreleri artar. Dosya tabanlı kaynakların eklenmesi için derleme zamanında ek disk erişimi gerekmez (disk erişimi çalışma zamanına kadar ertelenir).
  • İNSAN tarafından okunabilir dosya adları yerine XML dökümü BASE64 ile kodlanmış ikili veriler içereceğinden, PRI dosyasıyla (XML dökümleri aracılığıyla) hata ayıklama sorunları daha zordur. Ayrıca, XML döküm dosyaları önemli ölçüde daha büyük olacak ve hata ayıklamayı zorlaştıracaktır.
  • Dosyaların içeriği doğrudan PRI dosyasına eklendiğinden, varlıkları anında değiştirmek artık mümkün değildir. Herhangi bir ekli kaynakta yapılan herhangi bir değişiklik PRI dosyasının tam olarak yeniden oluşturulmasını gerektirir. Dosya tabanlı kaynaklar yalnızca dosya adını içerdiğinden, gerçek varlık dosyaları istediğiniz zaman güncelleştirilebilir.
  • Paketlenmiş uygulamalar için, AppXManifest'te listelenen görüntü kaynakları (Başlat Menüsü simgeleri gibi) eklenemez ve dosya kaynakları olarak belirtilmelidir.

Bu nedenlerden dolayı genel bir kural, iç döngü geliştirme sırasında dosya tabanlı kaynakları kullanmaktır, ancak son üretim derlemeleri için ekli ikili kaynakları kullanmayı göz önünde bulundurun (Bildirim kaynakları hariç). Paketlenmiş uygulamalar için, derleme işlemini basitleştirmek için AppXManifest kaynaklarını (Başlat Menüsü simgeleri gibi) diğer kaynaklardan ayrı bir yönlendirmeye yerleştirmeyi göz önünde bulundurun (AppXManifest kaynakları dosya olarak eklenir ve ekli veri olarak eklenen diğer kaynaklar).