3

2 つのサードパーティ アセンブリがあります。1 つは x86 ターゲット用にコンパイルされ、もう 1 つは任意の CPU 用にコンパイルされます。同じアプリケーションからそれらを使用する方法はありますか。

これで、アプリケーションは正常にコンパイルされましたが、実行に失敗しました。x86 と任意の CPU の両方で EXE ファイルをビルドしようとしましたが、うまくいきませんでした。corflagsを使用してターゲット プラットフォーム ビットを変更することはできますが、アセンブリは署名されているため、署名を変更したくありません。

誰でも助けてもらえますか?

4

1 に答える 1

9

それらを参照できますが、アプリケーションは、エントリ.exeアセンブリがx86に設定されている、任意のCPUに設定されてx86マシンで実行されている場合にのみ実行されます。IISでホストされるプロセスの場合、ビット数はIIS自体によって決定されます。

例として-私はこのvs2010ソリューションを作成しました:https ://docs.google.com/open?id = 0Bw_NnV9fhgmgSGxGOEZXSnVsd1k

コンソールアプリはx86/Any APUにすることができ、2つのライブラリを参照します。1つはx86で、もう1つはAnyCPUです。

exeをx86に設定し、x64で実行すると、正常に動作します(明らかに、x86でも問題なく動作します)。ただし、exeをAny CPUに設定し、x64で実行すると、クラッシュします(を使用してBadImageFormatException)。繰り返しになりますが、x86で実行しても機能します。

プロセスのビット数を決定するのは、エントリアセンブリのフレーバーです。したがって、ロードできるアセンブリの予想されるビット数。

あなたの場合、あなたが焦点を合わせているアセンブリが必ずしも問題ではない可能性があります-それは彼らが参照しているアセンブリです。例外はあなたにもっと教えてくれるかもしれません。

于 2012-05-28T07:41:02.397 に答える