Что такое формат файла RESOURCES?
Файлы с расширением .resources содержат данные, используемые приложениями, разработанными в экосистеме Microsoft .NET, чаще всего в среде разработки Visual Studio. В файлах .resources хранятся объекты, такие как строки, изображения, значки и бинарные данные, используемые приложением во время выполнения.
Это скомпилированные бинарные файлы, автоматически создаваемые из исходных файлов .resx (XML-ресурсов) с помощью ResGen.exe (генератора файлов ресурсов) в процессе сборки. Бинарный формат идентифицируется магическим числом 0xBEEFCACE в начале файла. Разработчики обычно редактируют файлы .resx в дизайнере Visual Studio; файл .resources является промежуточным артефактом сборки, который они редко трогают напрямую.
Размещение ресурсов приложения в файлах .resources позволяет напрямую ссылаться на их содержимое в исходном коде через класс ResourceManager. Для уже скомпилированных приложений специализированные редакторы ресурсов могут заменять оригинальные объекты - этот подход чаще всего используется для локализации программ путем замены исходных текстов их переведенными эквивалентами без перекомпиляции всего приложения.
Во время выполнения ResourceManager загружает скомпилированный файл .resources, внедренный в основную сборку или в виде вспомогательной сборки (.resources.dll) для конкретной локали.
Важное замечание для современной разработки на .NET: файлы .resources, содержащие сложные объекты, сериализованные с помощью BinaryFormatter, признаны устаревшими начиная с .NET 5 и заблокированы по умолчанию в .NET 7+ из-за рисков безопасности. Ресурсы строк, изображений и примитивных типов это не затрагивает. Формат является частью платформы .NET с момента выхода .NET Framework 1.0 (2002) и остается неизменным вплоть до .NET 9 (2024).
Безопасность и защита
РИСК: LOWФайлы .resources сами по себе являются файлами данных, а не исполняемыми файлами. Однако они могут содержать объекты, сериализованные с помощью BinaryFormatter (в стиле старых .NET 1-4), которые при десериализации могут выполнять произвольный код - именно поэтому .NET 7+ отключает BinaryFormatter по умолчанию. Открытие файла .resources в текстовом редакторе или ResGen.exe безопасно; риск представляет только десериализация недоверенных ресурсов сложных типов.
Детали формата
в двух словахПрограммы, открывающие файлы RESOURCES
Технические подробности
глубокая спецификация| Тип файла | Скомпилированный бинарный файл ресурсов .NET |
| Магическое число | `0xBEEFCACE` (4 байта, little-endian, смещение 0) |
| Версия заголовка | ResourceManager.HeaderVersionNumber = 1 (стабильно с .NET 1.0) |
| Порядок байтов | Little-endian (целые числа заголовка); кодировка данных ресурсов зависит от типа |
| Кодировка строк | UTF-16 LE для имен ресурсов; UTF-8 для имен типов в заголовке |
| Инструмент сборки | `ResGen.exe` компилирует из XML-исходника .resx; запускается автоматически при сборке в Visual Studio |
| Загрузчик среды выполнения | `System.Resources.ResourceManager` - внедряется в сборку или вспомогательную .resources.dll |
| Типичный размер | 1 КБ - 10 МБ (больше при наличии внедренных изображений или аудио) |
| Примитивные типы | 19 примитивных типов (string, int, bool и т. д.) используют компактную бинарную кодировку |
| Статус BinaryFormatter | Устарело в .NET 5+; отключено по умолчанию в .NET 7+ (риск выполнения произвольного кода) |
| Дата появления | .NET Framework 1.0 (февраль 2002) |
| Поддержка платформ | Windows (.NET Framework), Linux и macOS (.NET Core / .NET 5+) |
| Замена в UWP/WinAppSDK | .resw (та же схема XML, что и в .resx), компилируемый в .pri (Package Resource Index) |
| Выпущен | .NET Framework 1.0 (2002) |
| Последняя версия | .NET 9 (2024) - format unchanged since inception; ResourceManager.HeaderVersionNumber = 1 |
| Спецификация | learn.microsoft.com |
Конвертации RESOURCES
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах RESOURCES.