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このプロジェクトをそれ自体に設定するのが最善だと思います。X86BadImageFormatAS_INTAS_WRAすべての実装のインターフェースが含まれ、に設定されANY CPUます。私は64ビットランタイムを使用しているので、に設定
AS_EXECしX86ます。AS_WRA_264ビットのみ、AS_WRA_332ビットで動作します(つまり、基本的に同時に実行することはできませんが、テストAS_WRA_1のみを行いたいので、多かれ少なかれそれを無視します-ようこそ、DLL地獄!)。
実行時に、リフレクションを使用して、ユーザーがUIで選択したラッパーからインスタンスを作成します。不思議なことに、結果は次のようになります。
- からインスタンスを作成できます
AS_WRA_2 - とのBadImageFormatExceptionsが発生
AS_WRA_1しAS_WRA_3ます。
これは私が予想していたこととは正反対です...私はここで何を間違っているのですか?