別の 32 ビット dll を動的にロードする C++ で記述された 32 ビット dll をロードする ac# 実行可能ファイルがあります (最初の dll はラッパーです)。
これを 32 ビット マシン (VS ツールセット v100 を使用) でビルドすると、すべて正常に動作します。
64 ビット マシン (VS ツールセット v110 を使用) でビルドすると、一部のマシンで実行されますが、他のマシンではラッパー dll で FileNotFoundException が発生します。一部の 64 ビット マシンで動作し、一部で失敗し、少なくとも 1 台の 32 ビット マシンで失敗します。
失敗は、場所が Assembly.GetExecutingAssembly().Location から来る Assembly.LoadFrom で発生します。dll は、x86 としてビルドされた exe と同じディレクトリにあります。
失敗したバージョンを取得するために 64 ビット マシンでビルドする場合、32 ビット マシンでビルドされたバージョンのラッパー dll をドロップすると、適切に動作します (つまり、実際にはファイルが見つからないという問題ではなく、「正しい」ファイルが見つからないということです)。一つ見つかった)。
これが失敗する理由はありますか?ビルド マシンですか、それともツールセットですか。または、他の何か?ビルドを適切に動作させるためにビルドに設定できるものはありますか (64 ビット ボックスでのビルドを続けたいと思います)。