[XAML] 数字で始まるフォルダを作成して埋め込まれたリソースをいれるとパスがかわる

ちょっとハマってしまったのでメモ。

ソリューションのフォルダ構成で「XXXX/YYYY/000_ZZZZ」みたいなフォルダを作り、「000_ZZZZ」フォルダの中にリソース(XAMLとかmp3とか)を入れていました。リソースは「埋め込まれたリソース」として登録し、実行時に動的に読み込むようにしました。

この場合は「Assembly.GetManifestResourceStream」メソッドで読み込むことになるのですが、パス指定では以下の注意点が挙げられます。

  • パス区切り文字は「. (ピリオド)」になる
  • パスの最初に「名前空間」をいれ、ピリオドを挟んだ後プロジェクトのルートからの相対パスを書く
  • 大文字小文字は区別される

一応これらを注意して書いたのですが、実行時にどうしても null が返ってきてしまいます。

どうしてもわからなかったので「Assembly.GetManifestResourceNames()」メソッドで中身を調べてみたところフォルダのパスが「XXXX.YYYY._000_ZZZZ」のようになっていて数字から始まっているフォルダ名の最初に「_ (アンダースコア)」が追加されていました。とりあえず読込パスを同じようにアンダースコアを入れてみたところ正常に読む込むことができました。

ハマりそうなので注意が必要ですね。

]]>