Visual Studio .NET 2003 と埋め込みリソース

Visual Studio .NET 2003 では、プロジェクトに追加したファイルのビルドアクションを「埋め込みリソース」にすることで、そのファイルを埋め込みリソースとして追加することができる他、このビルドアクションには .resx ファイルを ResXResourceReader で読み込んで ResourceWriter で書き込む機能がある。
Visual Studio を利用していてひっかかるのは埋め込みリソースに対して適用されるリソースの名前だろう。これは、ResourceManager を意識した名前付けが行われる。
通常、クラスファイルを新規作成すると、そのクラス名は「ファイル名」、名前空間は「プロジェクトの既定の名前空間+プロジェクト内の相対パス」になるのだが、リソースファイルの名前もこれに準じて「プロジェクトの既定の名前空間+プロジェクト内の相対パス+ファイル名」がリソースの名前として採用される。
ただし、次のような例外がある。

  • ファイル名が "-カルチャ省略名" で終了している場合、その部分が除去された名前でサテライトアセンブリコンパイルされる。
  • ファイルが別のファイルに DependOn している場合、リソースファイルのファイル名ではなく、DependOn しているファイルのファイル名が採用される。
  • さらに、 DependOn しているファイルのビルドアクションが Component, UserControl, Form の場合、ファイル名のかわりに、対象の Name プロパティの値が採用される。