はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【C#】EmbeddedResourceはファイル名にドット(.)が二個あると動作しない問題とその対処法

はじめに

リソースをアセンブリに組み込むことができるEmbeddedResourceですが、テストで利用するファイルなんかを組み込んだり等々とても有用な機能です。

ただ最近EmbeddedResourceで組み込みたいファイル名にドット(.)が二個あると正しく動作しないというバグ?仕様?を発見してしまいました。

<!-- ./Hoge.cs.metaというファイルがあれば組み込む例 -->
<EmbeddedResource Include="./Hoge.cs.meta" LogicalName="Hoge.cs.meta" />

コンパイルは通りますが、実行時にそんなリソースはないというエラーを吐いてきます。

結構罠で気づくまで時間がかかってしまいましたが、一応解決方法を見つけたので書き残しておこうと思います。

対処法

WithCulture="false"EmbeddedResourceに付与してあげます。

<EmbeddedResource Include="./Hoge.cs.meta" LogicalName="Hoge.cs.meta" WithCulture="false" />

追記

公式ドキュメントにもドットが2個あると読み込めない旨の記述があるのを見つけました。
learn.microsoft.com