概要:
Mono 環境でアセンブリを手動で読み込もうとすると、Mac で BadImageFormatException が発生しますが、Windows では正常に動作します。Mono は別のアプリ内で実行されているため、ログを取得するためにデバッグを有効にしてコマンド ラインからアプリを実行することはできません。
詳細:
C# で Unity3D エディター用のプラグインをいくつか作成しました。彼らは、Mac と Windows の両方で 1 年以上働いています。クラスが別のディレクトリ(PATH変数にある)から初めて呼び出されたときにプラグインを手動でロードすることにより、Unityのデフォルトの「Plugins」ディレクトリからプラグインをロードする方法を変更しようとしています。Windows では、Assembly.LoadFile を呼び出すだけで、以前と同じようにすべて正常に動作します。Mac では、BadImageFormatException エラーが発生します。Mac ではプラグインがバンドルであるという事実に関連している可能性があると思いました。
私は試した:
Assmebly.LoadFile("MyPlugin")
Assmebly.LoadFile("MyPlugin.bundle")
Assmebly.LoadFile("MyPlugin.bundle/Contents/MacOS/MyPlugin")
最初のもの (ファイル名のみ) は、FileNotFoundException を返します。他の2つは BadImageFormatException を返し、それが見つかったと思いますが、何か他のことが間違っています。
何がうまくいかないのかについて、より多くの情報を得る方法はありますか? 例外の FusionLog メンバーは、Mac 上にあるため NULL です。基本的なメッセージしか表示されません。
このように手動でロードするには、プラグインを Mac で別の方法でビルドする必要がありますか?
ありがとう、ブレット