Co to jest format pliku RESOURCES?
Pliki z rozszerzeniem .resources zawierają dane używane przez aplikacje opracowane w ekosystemie Microsoft .NET, najczęściej w środowisku programistycznym Visual Studio. Pliki .resources przechowują obiekty - takie jak ciągi znaków, obrazy, ikony i dane binarne - wykorzystywane przez aplikację w czasie wykonywania.
Są to skompilowane pliki binarne generowane automatycznie z plików źródłowych .resx (zasoby XML) przez ResGen.exe (Resource File Generator) podczas procesu kompilacji. Format binarny jest identyfikowany przez magiczną liczbę 0xBEEFCACE na początku pliku. Programiści zazwyczaj edytują pliki .resx w projektancie Visual Studio; plik .resources jest pośrednim artefaktem kompilacji, którego rzadko dotykają bezpośrednio.
Umieszczenie zasobów aplikacji w plikach .resources umożliwia bezpośrednie odwoływanie się do ich zawartości w kodzie źródłowym za pomocą klasy ResourceManager. W przypadku już skompilowanych aplikacji wyspecjalizowane edytory zasobów mogą zastępować oryginalne obiekty - podejście to jest najczęściej stosowane do tworzenia lokalizacji językowych programów poprzez zastępowanie oryginalnych tekstów ich przetłumaczonymi odpowiednikami, bez konieczności ponownej kompilacji całej aplikacji.
W czasie wykonywania ResourceManager ładuje skompilowany plik .resources osadzony w głównym zestawie lub jako zestaw satelitarny (.resources.dll) dla konkretnej lokalizacji.
Ważna uwaga dla nowoczesnego programowania w .NET: pliki .resources zawierające złożone obiekty serializowane za pomocą BinaryFormatter są przestarzałe od wersji .NET 5 i domyślnie blokowane w .NET 7+ ze względu na ryzyko bezpieczeństwa. Zasoby tekstowe, obrazy i typy pierwotne pozostają nienaruszone. Format ten jest częścią platformy .NET od wersji .NET Framework 1.0 (2002) i pozostaje niezmieniony do wersji .NET 9 (2024).
Bezpieczeństwo
RYZYKO: LOWPliki .resources same w sobie są plikami danych, a nie plikami wykonywalnymi. Mogą jednak zawierać obiekty serializowane za pomocą BinaryFormatter (starszy styl .NET 1-4), które po deserializacji mogą wykonać dowolny kod - dlatego .NET 7+ domyślnie wyłącza BinaryFormatter. Otwieranie pliku .resources w edytorze tekstu lub ResGen.exe jest bezpieczne; ryzyko niesie jedynie deserializacja niezaufanych zasobów typu złożonego.
Szczegóły formatu
w pigułceProgramy otwierające pliki RESOURCES
Szczegóły techniczne
specyfikacja| Typ pliku | Skompilowany binarny plik zasobów .NET |
| Magiczna liczba | `0xBEEFCACE` (4 bajty, little-endian, pod offsetem 0) |
| Wersja nagłówka | ResourceManager.HeaderVersionNumber = 1 (stabilna od .NET 1.0) |
| Kolejność bajtów | Little-endian (liczby całkowite nagłówka); kodowanie danych zasobów różni się w zależności od typu |
| Kodowanie znaków | UTF-16 LE dla nazw zasobów; UTF-8 dla nazw typów w nagłówku |
| Narzędzie kompilacji | `ResGen.exe` kompiluje ze źródła XML .resx; uruchamia się automatycznie podczas budowania w Visual Studio |
| Ładowanie w czasie wykonywania | `System.Resources.ResourceManager` - osadzony w zestawie lub satelitarnym .resources.dll |
| Typowy rozmiar | 1 KB - 10 MB (większy w przypadku osadzonych obrazów lub dźwięku) |
| Typy pierwotne | 19 typów pierwotnych (string, int, bool itp.) używa kompaktowego kodowania binarnego |
| Status BinaryFormatter | Przestarzały w .NET 5+; domyślnie wyłączony w .NET 7+ (ryzyko wykonania dowolnego kodu) |
| Wprowadzono | .NET Framework 1.0 (luty 2002) |
| Obsługa platform | Windows (.NET Framework), Linux i macOS (.NET Core / .NET 5+) |
| Zamiennik UWP/WinAppSDK | .resw (ten sam schemat XML co .resx) kompilowany do .pri (Package Resource Index) |
| Wydano | .NET Framework 1.0 (2002) |
| Najnowsza wersja | .NET 9 (2024) - format unchanged since inception; ResourceManager.HeaderVersionNumber = 1 |
| Specyfikacja | learn.microsoft.com |
Konwersje RESOURCES
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki RESOURCES.