RESOURCES ファイル形式とは?
拡張子が .resources のファイルには、Microsoft .NET エコシステム(多くの場合 Visual Studio 開発環境内)で開発されたアプリケーションで使用されるデータが含まれています。.resources ファイルには、実行時にアプリケーションによって利用される文字列、画像、アイコン、バイナリ データなどのオブジェクトが格納されます。
これらは、ビルド プロセス中に ResGen.exe(リソース ファイル ジェネレーター)によって .resx(XML リソース)ソース ファイルから自動的に生成されるコンパイル済みバイナリ ファイルです。バイナリ形式は、ファイルの先頭にあるマジック ナンバー 0xBEEFCACE によって識別されます。開発者は通常、Visual Studio のデザイナーで .resx ファイルを編集します。.resources ファイルは中間ビルド アーティファクトであり、直接操作することはほとんどありません。
アプリケーション リソースを .resources ファイルに配置することで、ResourceManager クラスを介してソース コード内でその内容を直接参照できるようになります。すでにコンパイル済みのアプリケーションの場合、専用のリソース エディターを使用して元のオブジェクトを置き換えることができます。この手法は、アプリケーション全体を再コンパイルすることなく、元のテキストを翻訳されたテキストに置き換えてプログラムの言語ローカライズを作成するために最も一般的に使用されます。
実行時、ResourceManager はメイン アセンブリに埋め込まれた、または特定のロケール用のサテライト アセンブリ(.resources.dll)として存在するコンパイル済みの .resources ファイルを読み込みます。
現代の .NET 開発における重要な注意点として、BinaryFormatter でシリアル化された複雑なオブジェクトを含む .resources ファイルは、.NET 5 以降で非推奨となり、セキュリティ リスクのため .NET 7 以降ではデフォルトでブロックされます。文字列、画像、およびプリミティブ型のリソースは影響を受けません。この形式は .NET Framework 1.0(2002年)から .NET プラットフォームの一部であり、.NET 9(2024年)まで変更されていません。
セキュリティと安全性
リスク: LOW.resources ファイル自体はデータ ファイルであり、実行可能ファイルではありません。ただし、レガシーな .NET 1-4 スタイルの BinaryFormatter でシリアル化されたオブジェクトが含まれている場合、デシリアライズ時に任意のコードが実行される可能性があります。これが、.NET 7 以降で BinaryFormatter がデフォルトで無効化されている理由です。テキスト エディターや ResGen.exe で .resources ファイルを開くことは安全ですが、信頼できない複雑な型のリソースをデシリアライズすることにはリスクが伴います。
形式の詳細
概要RESOURCES ファイルを開くプログラム
技術的詳細
詳細仕様| ファイルの種類 | コンパイル済みバイナリ .NET リソース ファイル |
| マジック ナンバー | `0xBEEFCACE` (4 バイト、リトルエンディアン、オフセット 0) |
| ヘッダー バージョン | ResourceManager.HeaderVersionNumber = 1 (.NET 1.0 以降安定) |
| バイト順序 | リトルエンディアン(ヘッダーの整数)。リソース データのエンコーディングは型によって異なります |
| 文字列エンコーディング | リソース名は UTF-16 LE、ヘッダー内の型名は UTF-8 |
| ビルド ツール | `ResGen.exe` が .resx XML ソースからコンパイル。Visual Studio のビルド中に自動実行されます |
| ランタイム ローダー | `System.Resources.ResourceManager` - アセンブリまたはサテライト .resources.dll に埋め込み |
| 一般的なサイズ | 1 KB - 10 MB (画像や音声が埋め込まれている場合はより大きくなります) |
| プリミティブ型 | 19 種類のプリミティブ型(string、int、bool など)がコンパクトなバイナリ エンコーディングを使用 |
| BinaryFormatter の状態 | .NET 5 以降で非推奨、.NET 7 以降でデフォルト無効(任意のコード実行のリスク) |
| 導入時期 | .NET Framework 1.0 (2002年2月) |
| プラットフォーム サポート | Windows (.NET Framework)、Linux および macOS (.NET Core / .NET 5+) |
| UWP/WinAppSDK での代替 | .resw(.resx と同じ XML スキーマ)を .pri (Package Resource Index) にコンパイル |
| リリース日 | .NET Framework 1.0 (2002) |
| 最新バージョン | .NET 9 (2024) - format unchanged since inception; ResourceManager.HeaderVersionNumber = 1 |
| 仕様書 | learn.microsoft.com |
RESOURCES の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。RESOURCES ファイルについて最初の質問をしてみましょう。