RESX ファイル形式とは?
.resx ファイルは .NET XML リソース ファイルであり、Microsoft .NET プロジェクトにおいてローカライズ可能な文字列、画像、アイコン、およびバイナリ データを保存するための標準形式です。Visual Studio は、アセンブリに埋め込まれるコンパイル済みのバイナリ .resources ファイルに対応する、人間が読めるソース管理に適した形式として、.resx ファイルを自動的に生成および管理します。
形式はプレーンな UTF-8 XML です。すべてのファイルは、スキーマ バージョンとシリアライザーの種類を宣言する <resheader> セクションを含む <root> 要素で始まり、その後に name 属性と <value> 子要素を持つ <data> 要素が続きます。文字列値はプレーンテキストとして表示され、バイナリ オブジェクト(アイコン、ビットマップ、任意のバイナリ データ)は、application/x-microsoft.net.object.binary.base64 などの mimetype 属性とともに <value> 内で Base64 エンコードされます。
2 つのスキーマ バージョンが存在します:ResX v1(Visual Studio .NET 2002-2003, .NET 1.x)および ResX v2(.NET 2.0 以降、2005 年以降)で、現在は v2 が使用されています。アクティブなバージョンは <resheader name="version"> 内で宣言されます。
ビルド時に、ResGen.exe または MSBuild が .resx をコンパイルして、出力アセンブリに埋め込まれるバイナリの .resources ファイルを作成します。ローカライズはカルチャ固有のサテライト ファイルに依存します(例:フランス語の場合は Resources.fr.resx)。Windows Runtime(UWP)プロジェクトでは、.resx は .resw に置き換えられ、JavaScript のローカライズでは .resjson が使用されます。ただし、.resx は .NET 9 以降の .NET Framework、WinForms、および WPF プロジェクトにおいて、現在もアクティブな標準であり続けています。
セキュリティと安全性
リスク: LOW.resx ファイルはプレーンな XML であり、それ自体で実行されることはありません。唯一の間接的なリスクとして、埋め込まれたバイナリ データ(Base64)が、アセンブリがビルドされて実行された後にアクティブ化される悪意のあるペイロードを理論上運ぶ可能性がありますが、これには開発者が意図的にそれを埋め込んで実行する必要があります。テキスト/XML エディターで .resx を開くことは安全です。
形式の詳細
概要- RESW (Windows Runtime リソース ファイル) - UWP/WinRT アプリで使用される、構造的にほぼ同一の XML リソース形式です。同じタグ構造を共有しますが、異なるスキーマ ルートを使用します。
RESX ファイルを開くプログラム
技術的詳細
詳細仕様| エンコーディング | UTF-8 XML テキスト |
| ルート要素 | `<resheader>`(スキーマ メタデータ)と `<data>`(リソース エントリ)の子要素を含む `<root>` |
| 文字列リソース形式 | `<data name="key-name">` の子要素である `<value>` 内のプレーンテキスト |
| バイナリ リソースのエンコーディング | オブジェクトの種類を識別する `mimetype` 属性とともに、`<value>` 内で Base64 エンコードされる |
| バイナリ mimetype の値 | `application/x-microsoft.net.object.binary.base64`, `application/x-microsoft.net.object.bytearray.base64` |
| スキーマ バージョン | ResX v1(.NET 1.x, 2002-2003)および ResX v2(.NET 2.0+, 2005; 現在)。バージョンは `<resheader name="version">` で宣言される |
| ビルド コンパイル | ResGen.exe または MSBuild が `.resx` をコンパイルし、出力アセンブリに埋め込まれるバイナリの `.resources` ファイルを作成する |
| ローカライズの命名パターン | `Resources.{culture-code}.resx` という名前のカルチャ固有のサテライト ファイル(例:フランス語の場合は `Resources.fr.resx`) |
| 代表的なリソースの種類 | ローカライズされた文字列、ビットマップ、アイコン、カーソル、オーディオ クリップ、任意のバイナリ データ |
| 一般的なファイル サイズ | 1 KB - 数 MB(埋め込まれたバイナリ リソースの数とサイズに応じてスケールする) |
| MIME タイプ | text/microsoft-resx |
| 関連するビルド ツール | Visual Studio リソース デザイナー, MSBuild, ResGen.exe, `dotnet build` |
| 後継形式 | UWP/Windows Runtime(Windows 8+)用の `.resw`、JavaScript 向けのローカライズ用の `.resjson`。WinForms/WPF では `.resx` が標準のまま |
| リリース日 | 2002 (.NET Framework 1.0 / Visual Studio .NET) |
| 最新バージョン | ResX schema 2.0 (introduced .NET Framework 2.0, 2005; still current) |
| 仕様書 | learn.microsoft.com |
RESX の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。RESX ファイルについて最初の質問をしてみましょう。
よくある質問
.resx ファイルとは何ですか?
.resx ファイルを開くにはどうすればよいですか?
.resx ファイルを手動で編集できますか?
<data> ブロック内の <value> テキストを編集し、プロジェクトをリビルドすれば、MSBuild が変更内容をアセンブリに再コンパイルします。.resx と .resw の違いは何ですか?
新しい言語の翻訳を追加するにはどうすればよいですか?
Resources.resx を Resources.fr.resx にコピーし(「fr」を対象のカルチャ コードに置き換える)、<value> 文字列を翻訳してリビルドします。.NET は実行時にカルチャに一致するファイルを自動的に読み込みます。MSBuild は .resx ファイルをどのように処理しますか?
ResGen.exe を実行して各 .resx をバイナリの .resources ストリームにコンパイルし、それをアセンブリ(DLL または EXE)に埋め込みます。生成されたリソースは、コード内の ResourceManager を介してアクセスされます。