VB.NETからAccessのMDBにデータを挿入するプログラムにて、ADODB.FieldsToInternalFieldsMarshaler が読み込めないエラーが発生した場合の対処方法を解説します。
ADODB.FieldsToInternalFieldsMarshalerのエラー内容
ビルドはOKだが実行すると、MDBの操作のステップで下記のエラーが出力されて異常終了する。
System.TypeLoadException: アセンブリ MyApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' から型 >'ADODB.FieldsToInternalFieldsMarshaler' を読み込めませんでした。
参照設定として追加したADO関連のライブラリが読み込めないみたい。
今回のケースの場合は下図にある2つの参照設定が原因でした。
- Microsoft ActiveX Data Ojects 2.8 Library
- Microsoft ADO Extensions 2.1 for DDL and Security
参照プロパティからローカルコピーをTrueに設定
今回のエラーは参照プロパティにてローカルコピーをTrueに設定することで回避できます。
デフォルトでは相互運用型埋め込み設定となっているため、ローカルコピー項目は下図のようにグレイアウトされているはずです。
相互運用型の埋め込みをFalseに設定するとローカルコピー項目のグレイアウトが解除されてTrueに設定できます。
この方法で今回問題となっているADO関連の2つの参照設定をローカルコピーをTrueに設定します。
リビルドして再実行するとエラーが発生せずに処理が実行されると思います。
以上です。