LoginSignup
1
1

More than 5 years have passed since last update.

【Xamarin】「XamlParseException: No embeddedresources found」の原因と対処法

Posted at

はじめに

Xamarinは全然初心者です。本業はPHPer。

社内の施策として、業務外でチームを組んでXamarin.Formsでアプリ開発をしていました。
いかんせんC#を書くのもままならないような初心者(※)ですので、頻繁にシミュレーターを実行して、どういう状態なのかを確認して、少し直してはまた実行…を繰り返していました。
※PHPとノリが違い過ぎて戸惑ってます。。

そうすると、たまに「Xamarin.Forms.Xaml.XamlParseException: No embeddedresources found」というエラーに遭遇して、iOSやAndroidのシミュレーターが止まることがありました。
あまりに原因不明なこのエラーなのですが、何回も出くわすうちに原因や、エラーが出た時の対処法が分かってきたので、備忘録として記しておきます。

実行環境

  • macOS 10.13 High Sierra
  • Visual Studio For Mac

そもそもコレは何なのか

「Xamarin.Forms.Xaml.XamlParseException: No embeddedresources found」

このエラー、検索してもロクな記述を見かけないのです。
数少ない記述としては、以下のStackoverflowがありますが。。。
xamarin - No embedded resource found - Stack Overflow

It's a bug. For some reason its status is RESOLVED FIXED, but it doesn't seem fixed at all. On XS on mac anyway.

「それはバグです。解決済みステータスになってるけど、全部は直りきってないみたいね!とにかくMacのXamarin Studioではね。」(超意訳)

バグで片付けないでくださいよー!
しかもMac版Xamarin Studioだと顕著な様子。
当方 Visual Studio For Mac なんですが。。Xamarin Studioのリブランド版ともっぱらの噂の。

just make an edit to that one generated file, save it, and build again. A bit faster than rebuilding everything.

Of course this means every time you change a .xaml file, you have to build twice.

「編集して、保存して、再度ビルドしてね。もちろんこれはあなたがXAMLファイルを毎回毎回変更することを意味するよ! 2回ビルドしてね!」 (適当意訳)

…つまるところ、バグだからとりあえず変更与えて再度ビルドして、どうにかしろ、ということなようです。
それではラチがあきません。

原因ぽいもの

何回も出くわすうちにパターンが分かってきました。
どうもコイツは、 最後まで描写されなかったページがあると発生率が高い っぽいです。
おまけに Mac の場合。
私はiOSシミュレーターで多発していました。
Androidは未確認ですが、Xamarin.Formsのエラーなので、恐らく同様であると思われます。

どういうことか

「最後まで描写されなかった」というのは、「ブレークポイントで一旦止めて、そのまま 最後まで実行しないでデバッガーを停止する 」ことや、「 途中で例外が発生するなどして、最後まで実行されなかった 」ことを指します。

…よくやりますよね、変数の中身確認するためだけにデバッガー動かして、確認出来たら、プログラムが途中だろうがそこで止めちゃうの。
私みたいな初心者は特に。
コレがXamarinではハマりどころになるっぽいです。

何でこれでエラーになるのかは正直分かりません。
ただ、私の環境ではコレやった後、高確率でこのエラーに出くわしました。

前者のパターンの場合は、コードがどっかおかしいのかと思いきや、ソリューション閉じてもう一度開けば何事も無かったかのように動くので、コードの問題ではありません。

対処法

対処法その1

先述のStackoverflowにもあったように、適当に編集加えて、再度ビルドすること。
しかしこちらでやる限り、それでもこのエラーが出ることが多いです。

対処法その2

一度ソリューションを閉じて、開き直すこと。
これは言うまでもなく、毎回そうするのはダルいです。

対処法その3

一度 ソリューションをクリーン してから、再度ビルドすること。
PCLの場合は、PCLをクリーンでも大丈夫です。
これだったら大体解決することが多いと分かったので、これで行うことが多いです。

おわりに

Visual Studio For MacでXamarinやってる方は少なからずいるはずなので、もう少し情報があっても良さそうなものなのですが、もしかして環境によるのか…?
ともあれ、同じ現象に悩まされている方の手がかりになれば幸いです。
…主に、未来の自分ですが。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1