Windows系のあれこれ

港区の SIer で よくわからんことをしている SE みたいな人です。Xamarin 中心です。

Xamarin.FormsでUWPをReleaseビルドすると埋め込みリソースの画像が表示されない

以下の環境でUWPをReleaseビルドするとPCL側に配置した埋め込みリソースの画像が表示されませんでした。
・Xamarin.Forms 2.3.1.114
・VisualStudio 2015 Enterprise Update 3
・UWP対象ターゲット 10586


Xamarin.Formsで画像を表示する際に全プラットフォームで共通の画像を使いまわしたい場合、埋め込みリソースを使用する場合があると思います。
画像の設定方法については公式を参照ください。
developer.xamarin.com

んで、埋め込みリソースを使っていて、かつUWPのReleaseビルド(ビルドプロパティの「.Net ネイティブ ツール チェーンでコンパイルする」にチェックついている状態)で作成したアプリを実行するとデバッグコンソールに以下のエラーが出力されて画像が表示されませんでした。

例外がスローされました: 'System.IO.FileNotFoundException' (System.Private.Reflection.Core.dll の中)

んで、対症療法です。(解決方法と書いていいか自信ない…)
というか、こうやったらできた。

画像のパスを設定する際にAssemblyを引数に加えてやると表示されるようになりました。

var assembly = typeof(App).GetTypeInfo().Assembly;
img.Source = ImageSource.FromResource("XamarinApp1.Images.xamarin.png", assembly);

.Net Nativeさん怖い…