Hvad er RESOURCES-filformatet?
Filer med filtypenavnet .resources indeholder data, der bruges af applikationer udviklet i Microsoft .NET-økosystemet, oftest inden for Visual Studio-udviklingsmiljøet. .resources-filer gemmer objekter - såsom strenge, billeder, ikoner og binære data - der benyttes af applikationen under kørsel.
Disse er kompilerede binære filer, der genereres automatisk fra .resx (XML-ressource) kildefiler af ResGen.exe (Resource File Generator) under build-processen. Det binære format identificeres ved det magiske tal 0xBEEFCACE i starten af filen. Udviklere redigerer normalt .resx-filer i Visual Studio-designeren; .resources-filen er en midlertidig build-artefakt, som de sjældent rører direkte.
Placering af applikationsressourcer i .resources-filer muliggør direkte referencer til deres indhold i kildekoden via ResourceManager-klassen. For allerede kompilerede applikationer kan specialiserede ressource-editorer erstatte originale objekter - denne tilgang bruges mest almindeligt til at oprette sproglokaliseringer af programmer ved at erstatte originale tekster med deres oversatte ækvivalenter uden at genkompilere hele applikationen.
Under kørsel indlæser ResourceManager den kompilerede .resources-fil, enten indlejret i hoved-assemblyen eller som en satellit-assembly (.resources.dll) for en specifik lokalitet.
En vigtig advarsel for moderne .NET-udvikling: .resources-filer, der indeholder komplekse objekter serialiseret med BinaryFormatter, er forældede fra og med .NET 5 og blokeret som standard i .NET 7+ på grund af sikkerhedsrisici. Ressourcer af typen streng, billede og primitive typer er ikke berørt. Formatet har været en del af .NET-platformen siden .NET Framework 1.0 (2002) og forbliver uændret frem til .NET 9 (2024).
Sikkerhed og tryghed
RISIKO: LOW.resources-filer i sig selv er datafiler, ikke eksekverbare. De kan dog indeholde BinaryFormatter-serialiserede objekter (legacy .NET 1-4 stil), som, hvis de deserialiseres, kan eksekvere vilkårlig kode - dette er grunden til, at .NET 7+ deaktiverer BinaryFormatter som standard. Det er sikkert at åbne en .resources-fil i en teksteditor eller ResGen.exe; kun deserialisering af ressourcer af komplekse typer fra upålidelige kilder udgør en risiko.
Formatdetaljer
kort fortaltProgrammer der åbner RESOURCES-filer
Tekniske detaljer
dyb specifikation| Filtype | Kompileret binær .NET ressourcefil |
| Magisk tal | `0xBEEFCACE` (4 bytes, little-endian, ved offset 0) |
| Header-version | ResourceManager.HeaderVersionNumber = 1 (stabil siden .NET 1.0) |
| Byte-rækkefølge | Little-endian (header-heltal); ressourcedata-kodning varierer efter type |
| Strengkodning | UTF-16 LE for ressourcenavne; UTF-8 for typenavne i header |
| Build-værktøj | `ResGen.exe` kompilerer fra .resx XML-kilde; kører automatisk under Visual Studio build |
| Runtime-indlæser | `System.Resources.ResourceManager` - indlejret i assembly eller satellit .resources.dll |
| Typisk størrelse | 1 KB - 10 MB (større med indlejrede billeder eller lyd) |
| Primitive typer | 19 primitive typer (streng, int, bool, osv.) bruger kompakt binær kodning |
| BinaryFormatter status | Forældet i .NET 5+; deaktiveret som standard i .NET 7+ (risiko for eksekvering af vilkårlig kode) |
| Introduceret | .NET Framework 1.0 (februar 2002) |
| Platformunderstøttelse | Windows (.NET Framework), Linux og macOS (.NET Core / .NET 5+) |
| UWP/WinAppSDK erstatning | .resw (samme XML-skema som .resx) kompileret til .pri (Package Resource Index) |
| Udgivet | .NET Framework 1.0 (2002) |
| Seneste version | .NET 9 (2024) - format unchanged since inception; ResourceManager.HeaderVersionNumber = 1 |
| Specifikation | learn.microsoft.com |
RESOURCES-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om RESOURCES-filer.