XamarinでSystem.TypeInitializationException: The type initializer for 'MySql.Data.MySqlClient.Replication.ReplicationManager' threw an exception.
XamarinでMySqlを使おうとしたらこのエラーが出て2日くらい詰まってました。
解決方法をシェアしたいと思います。
エラーが出る場所
MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder()
{
Server = "sample.com",
Port = 3306,
Database = "test",
UserID = "id",
Password = "password",
};
MySqlConnection connection = new MySqlConnection(builder.ToString());
try
{
if (connection.State == ConnectionState.Closed)
{
connection.Open();
Log.Debug("connect", "true");
}
}
catch(MySqlException e)
{
Log.Debug("connect", e.ToString());
}
17行目のconnection.Open();のところで
System.TypeInitializationException: The type initializer for 'MySql.Data.MySqlClient.Replication.ReplicationManager' threw an exception.
が出ました。
解決方法
Xamarin(Visual Studio)でMySqlを使うにはNuGetからMySqlのパッケージをインストールする必要があります。
ツール/NuGetパッケージマネージャ/ソリューションのNuGetパッケージの管理を選択してNuGetの管理画面に行き、
参照を選択して”xamarin mysql”と検索します。

このときMySqlと名の付くパッケージがいろいろ出てきますが、
Xamarin.MySql.Dataをインストールしてください
自分の方でSystem.TypeInitializationExceptionが出てきたのは、間違えてMySql.Dataをインストールしていたからです。
System.TypeInitializationException が出ている方は、MySql.DataをアンインストールしてからXamarin.MySql.Dataをインストールしてください。
以上です!
普通にGoogleで”C# MySql”とかで検索するとMySql.Dataのパッケージの方が出てくるので騙されますが、Xamarinの場合はXamarin.MySql.Dataの方だったんですね!
お疲れ様です!