WPFアプリケーションからの管理されていないアセンブリでの作業に問題があります。これが私のセットアップで、簡単なスケッチに要約されています。
X64 RUNTIME____________________
| |
| AS_EXEC (executing Assy, x86)|
| | |
| | |
| AS_INT (interfaces, AnyCpu)|
| | |
| | |
| AS_WRA_1 (wrapper, x86) |
| | | |
| | AS_UNM_1 (unmanaged, x86)|
| | |
| AS_WRA_2 (wrapper, x64) |
| | | |
| | AS_UNM_2 (unmanaged, x64)|
| | |
| AS_WRA_3 (wrapper, x86) |
| | |
| AS_UNM_3 (unmanaged, x86)|
|______________________________|
私がやりたいのはテストAS_WRA_1
です。
AS_WRA_1
でのみ機能するアンマネージコードを参照しているため、例外を引き起こす使用を防ぐために、X86
このプロジェクトをそれ自体に設定するのが最善だと思います。X86
BadImageFormat
AS_INT
AS_WRA
すべての実装のインターフェースが含まれ、に設定されANY CPU
ます。私は64ビットランタイムを使用しているので、に設定
AS_EXEC
しX86
ます。AS_WRA_2
64ビットのみ、AS_WRA_3
32ビットで動作します(つまり、基本的に同時に実行することはできませんが、テストAS_WRA_1
のみを行いたいので、多かれ少なかれそれを無視します-ようこそ、DLL地獄!)。
実行時に、リフレクションを使用して、ユーザーがUIで選択したラッパーからインスタンスを作成します。不思議なことに、結果は次のようになります。
- からインスタンスを作成できます
AS_WRA_2
- とのBadImageFormatExceptionsが発生
AS_WRA_1
しAS_WRA_3
ます。
これは私が予想していたこととは正反対です...私はここで何を間違っているのですか?