Megosztás a következőn keresztül:


Fájlerőforrások az MRM-ben

Az MRM fájlerőforrásai lényegében megegyeznek a Sztring típusú erőforrásokkal, kivéve, hogy futásidőben a ResourceCandidate.Kind tulajdonságElérési út lesz Karakterlánchelyett. Az erőforrásértékek csak sztringek – a fájlnevek – és nem a tényleges fájltartalmak. Valójában a legtöbb esetben az indexelt fájloknak nem is kell létezniük a létrehozáskor.

Ha a célalkalmazás a beépített MRT-futtatókörnyezetet (Windows.ApplicationModel.Resources) használja, a ResourceCandidate.GetValueAsFileAsync vagy ResourceCandidate.GetValueAsStreamAsync használatával automatikusan megkeresheti és betöltheti a fájlt. Ha az MRT WinApp SDK-verzióját használja (Microsoft.Windows.ApplicationModel.Resources), akkor manuálisan kell betöltenie a fájlt. Dönthet úgy is, hogy manuálisan tölti be a fájlt a buit-in MRT-futtatókörnyezettel.

Kétféleképpen adhat hozzá fájlokat az MRM-indexelőhöz:

Vegye figyelembe, hogy MrmIndexResourceContainerAutoQualifiers nem ad hozzá fájlerőforrást az indexelőhöz; ehelyett betölti a névvel ellátott fájlt a buildeléskor, és a beágyazott erőforrásokat közvetlenül az indexelőbe másolja.

A fájlok név alapján történő hivatkozásának alternatívául az MrmIndexEmbeddedData használatával ágyazhat be adatokat közvetlenül a PRI-fájlba – további információt Beágyazott adatok alább talál.

Fájlok elnevezése

A fájlalapú erőforrás elsődleges célja egy sztring átadása olyan függvények számára, mint a CreateFile(), fopen()vagy az std::fstream konstruktor. Mivel a fájlok végső lemezen futó elérési útja általában nem ismert a buildeléskor, a fájlnevek általában relatív elérési utak, amelyeket az alkalmazás munkakönyvtára (vagy más jól ismert könyvtár) fog feloldani futásidőben. Bár bármilyen tetszőleges sztringet fel lehet venni fájlnévként (beleértve az abszolút vagy a hálózati elérési utakat is), ez általában nem hasznos.

Projektgyökér és relatív fájlnevek

Amikor indexelőt hoz létre az egyik MrmCreateIndexer... függvényen keresztül, meg kell adnia egy projectRoot paramétert. Ezt a paramétert MrmIndexResourceContainerAutoQualifiers használja az elemezni kívánt lemezen lévő fájlok megkereséséhez, Az MrmIndexFileAutoQualifiers pedig az abszolút elérési utak relatív útvonalainak kiszámításához. A MrmIndexFilefigyelmen kívül hagyja.

Beágyazott adatok

A fájlok adatként való beágyazása csökkentheti az alkalmazás számára szükséges tárterületet, és növelheti annak teljesítményét a hivatkozó fájlnevekhez képest. Ennek ellenére van néhány hátránya ennek a funkciónak, különösen a belső ciklusú alkalmazások fejlesztése során.

Egy tipikus Windows rendszeren minden fájl átlagosan 2kb lemezterületet pazarol a lemezterület lefoglalásának módja miatt. A sok kis fájlt (például ikonokat) tartalmazó alkalmazások esetében ez az átlag még magasabb lehet. Ha közvetlenül a PRI-fájlba ágyazza be a bináris fájladatokat, ez a fájlonkénti terület nem vész el.

Ezenkívül a külső erőforrásfájlok betöltése lassabb, mint a bináris adatok közvetlenül a PRI-fájlból való beolvasása, mivel minden fájlmegnyitási művelethez további lemezhozzáférésekre, biztonsági ellenőrzésekre stb. van szükség. A PRI-fájl mindig memórialeképezett fájlként van betöltve, így az adatok elérése gyorsabb.

Ezeknek az előnyöknek ellenére a beágyazott bináris adatok használata korlátozott, különösen a belső ciklusos fejlesztés során:

  • A létrehozási idők megnőnek, mivel a bináris adatokat tartalmazó fájlokat be kell tölteni, és hozzá kell adni az indexelőhöz. A fájlalapú erőforrások hozzáadása nem igényel további lemezhozzáférést a létrehozáskor (a lemezhozzáférés a futtatókörnyezetig halasztva van).
  • A PRI-fájllal kapcsolatos hibakeresési problémák (XML-memóriaképeken keresztül) nehezebbek, mivel az ember által olvasható fájlnevek helyett az XML-memóriakép BASE64 kódolású bináris adatokat fog tartalmazni. Emellett az XML-memóriaképfájlok jelentősen nagyobbak lesznek, ami megnehezíti a hibák hibakeresését.
  • Mivel a fájlok tartalma közvetlenül a PRI-fájlba van beágyazva, már nem lehet menet közben felcserélni az objektumokat. A beágyazott erőforrások bármilyen módosítása a PRI-fájl teljes újraépítését igényli. Mivel a fájlalapú erőforrások csak a fájlnevet tartalmazzák, a tényleges eszközfájlok bármikor frissíthetők.
  • A csomagolt alkalmazások esetében az AppXManifestben felsorolt képerőforrások – például a Start menü ikonjai – nem ágyazhatók be, és fájlerőforrásként kell megadni.

Ezen okok miatt általános szabály a fájlalapú erőforrások használata a belső hurokos fejlesztés során, de érdemes lehet beágyazott bináris erőforrásokat használni a végleges éles buildekhez (kivéve a Jegyzék-erőforrásokat). Csomagolt alkalmazások esetén érdemes lehet az AppXManifest-erőforrásokat (például a Start menü ikonjait) a többi erőforrástól eltérő közvetlen környezetbe helyezni a buildelési folyamat egyszerűsítése érdekében (az AppXManifest-erőforrások fájlként vannak hozzáadva, és más, beágyazott adatokként hozzáadott erőforrások).