Dela via


Hantera resurser med MRT Core

MRT Core är en strömlinjeformad version av det moderna Windows Resource Management System som distribueras som en del av Windows App SDK.

MRT Core har funktioner både vid byggtid och vid körning. Vid bygget skapar systemet ett index över alla olika varianter av de resurser som paketeras med din app. Det här indexet är paketresursindexet eller PRI, och det ingår även i appens paket.

Förutsättningar

Så här använder du MRT Core-API:er i Windows App SDK:

  1. Ladda ned och installera den senaste versionen av Windows App SDK. Mer information finns i Komma igång med WinUI.
  2. Följ anvisningarna för att Skapa ditt första WinUI 3-projekt eller för att använda Windows App SDK i ett befintligt projekt.

För att få mer information om tillgängligheten av MRT Core i Windows App SDK, se utgivningskanaler.

Paketresursindexfil (PRI-fil)

Varje apppaket ska innehålla ett binärt index för resurserna i appen. Det här indexet skapas vid byggtiden och finns i en eller flera PRI-filer. Varje PRI-fil innehåller en namngiven samling resurser, som kallas för en resurskarta.

En PRI-fil innehåller faktiska strängresurser. Inbäddade binära resurser och filsökvägsresurser indexeras direkt från projektfilerna. Ett paket innehåller vanligtvis en enskild PRI-fil per språk, med namnet resources.pri. Filen resources.pri i roten för varje paket läses in automatiskt när ResourceManager-objektet instansieras.

PRI-filer innehåller endast data, så de använder inte det bärbara körbara formatet (PE). De är särskilt utformade för att vara databaserade.

Anmärkning

För .NET-appar, i Windows App SDK version 0.8 och senare, anges filegenskapen Build Action för resursfiler i Visual Studio automatiskt, vilket minskar behovet av manuell projektkonfiguration. Version 1.0 införde problem 1674. Detta åtgärdas i 1.1 (från den stabila kanalen), men korrigeringen kräver .NET SDK 6.0.300 eller senare. Om du använder en äldre version av .NET SDK, bör du fortsätta använda lösningen i versionsanteckningarna för 1.0.

Få åtkomst till appresurser med MRT Core

MRT Core tillhandahåller flera olika sätt att komma åt dina appresurser.

Anmärkning

I Windows App SDK 1.0 Preview 1 och senare versioner finns MRT Core-API:er i namnområdet Microsoft.Windows.ApplicationModel.Resources . I tidigare versioner finns de i namnområdet Microsoft.ApplicationModel.Resources .

Grundläggande funktioner med ResourceLoader

Det enklaste sättet att komma åt dina appresurser programmässigt är att använda klassen ResourceLoader . ResourceLoader ger dig grundläggande åtkomst till strängresurser från uppsättningen med resursfiler, refererade bibliotek eller andra paket.

Avancerade funktioner med ResourceManager

Klassen ResourceManager innehåller ytterligare information om resurser, till exempel uppräkning och inspektion. Detta går utöver vad klassen ResourceLoader tillhandahåller.

Ett ResourceCandidate--objekt representerar ett enda konkret resursvärde och dess kvalificerare, som till exempel strängen "Hello World" på engelska eller "logo.scale-100.jpg" som en kvalificerad bildresurs specifik för 100 % upplösning.

Resurser som är tillgängliga för en app lagras i hierarkiska samlingar, som du kan komma åt med ett ResourceMap-objekt . Klassen ResourceManager ger åtkomst till de olika ResourceMap- instanser som används av appen, vilket motsvarar de olika paketen för appen. Värdet ResourceManager.MainResourceMap motsvarar resurskartan för det aktuella apppaketet och exkluderar eventuella refererade ramverkspaket. Varje ResourceMap- namnges för det paketnamn som anges i paketets manifest. I en ResourceMap finns underträd (se ResourceMap.GetSubtree). Delträd motsvarar vanligtvis de resursfiler som innehåller resurserna.

ResourceManager stöder inte bara åtkomst till en apps strängresurser, utan har även möjlighet att räkna upp och inspektera de olika filresurserna. För att undvika kollisioner mellan filer och andra resurser som härstammar inifrån en fil, placeras indexerade filsökvägar inom en reserverad "Files" ResourceMap delstruktur. Filen\Images\logo.pngmotsvarar till exempel resursnamnet Filer/bilder/logo.png.

Kvalificera resursval med ResourceContext

Resurskandidater väljs baserat på en viss ResourceContext, som är en samling resurskvalificerarvärden (språk, skala, kontrast och så vidare). En standardkontext använder appens aktuella konfiguration för varje kvalificerarvärde, såvida det inte åsidosätts. Till exempel kan resurser som bilder anpassas för skalning, vilket varierar från en skärm till en annan och därmed från en programvy till en annan. Därför har varje programvy en distinkt standardkontext. När du hämtar en resurskandidat bör du ange en ResourceContext-instans för att få det lämpligaste värdet för en viss vy.

Exempel

Ett exempel som visar hur du använder MRT Core-API:et finns i MRT Core-exemplet.

Se även