Xamarin.Formsで「Could not resolve type with token 01000014」エラーが発生した場合の対応
Xamarin.Formsで「Could not resolve type with token 01000014」エラーが発生した場合の対応をご紹介します。
条件
- Microsoft Visual Studio Community 2019
- Xamarin.Forms
事象
Xamarin.Formsで開発を行っている際、以下のようなエラーに遭遇することがあります。
System.TypeLoadException: 'Could not resolve type with token 01000014 from typeref (expected class 'Xamarin.Forms.Xaml.Diagnostics.VisualDiagnostics' in assembly 'Xamarin.Forms.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null')'
このエラーはアプリ起動直後に発生します。
原因
プロジェクト間における、Xamarin.Formsのバージョン違いが原因です。
エラーにならない状態例
プロジェクト間のXamarin.Formsのバージョンが同一であればエラーにはなりません。
以下のようなソリューションがあるとします。
App1 > 依存関係 > 右クリック > NuGetパッケージの管理
⇒ Xamarin.Formsのバージョンは「v4.3.0.908675」です。
App1.Android > 参照 > 右クリック > NuGetパッケージの管理
⇒ Xamarin.Formsのバージョンは「v4.3.0.908675」です。
App1.iOS > 参照 > 右クリック > NuGetパッケージの管理
⇒ Xamarin.Formsのバージョンは「v4.3.0.908675」です。
実行してもエラーは発生しません。
エラーの再現方法
以下の手順で当該エラーは再現します。
App1 > 依存関係 > 右クリック > NuGetパッケージの管理 でXamarin.Formsのバージョンを更新する。
App1のXamarin.Formsは最新バージョンに更新されました。
しかし、エラー一覧の警告メッセージに、”App1.Android”と”App1.iOS”に「Xamarin.Formsの4.4.0991256から4.3.098675へのダウングレードが検出されました。」という文言が出力されています。
アプリを起動したところ、InitializeComponent()でハンドルされていない例外が発生しました。
当該エラーはリビルドしても解消しません。
対応方法
すべのプロジェクトのXamarin.Formsのバージョンを同一のものにすれば、エラーは無くなります。
上記の「エラー再現方法」の場合、”App1.Android”と”App1.iOS”のXamarin.Formsのバージョンも最新に更新します。
アプリを起動すると正常に動作するようになります。