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のバージョンも最新に更新します。

アプリを起動すると正常に動作するようになります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です