1

管理されていないサードパーティの DLL ( ChilkatDotNet2.dllですが、問題ではないようです)を参照する C# のプロジェクトがあります。サードパーティの DLL は、x86 と x64 の 2 つのバージョンで提供されます。processorArchitecture=x86プロジェクトは、適切な<Reference>要素でx86 バージョンを参照します。Debug|Any CPU と Release|Any CPU の両方で問題なくビルドできます。

ここで、サードパーティ DLL の x64 バージョンへの参照を変更します - processorArchitecture=AMD64. (理由は聞かないでください:))。Debug|Any CPU は再び正常にビルドされます。しかし、Release|Any CPU は次のエラーで失敗します: An attempt was made to load an assembly with an incorrect format: ChilkatDotNet2.dll

その理由は何ですか?VS 自体が 32 ビット プロセスで実行されているためだと思いますが (そうですか?)、デバッグで正常にビルドされるのはなぜですか?

4

3 に答える 3

2

リリース構成のプラットフォーム タイプが正しくない可能性があります。x86/AMD64 アセンブリを強く参照している場合、ビルドは任意の CPU にすることはできず、プラットフォーム固有である必要があります

于 2011-11-21T15:57:28.937 に答える
1

これがコンパイル時エラーであることに驚いています。BadImageFormatException私の経験では、これらの問題は実行時に現れます。ソリューション プラットフォームは Any CPU ですが、参照プロジェクトのターゲット プラットフォームをチェックして、Any CPU にも設定されていることを確認します。また、既定では、Visual Studio は任意の CPU ではなく、x86 構成を使用してアプリケーション プロジェクトを作成します。そのため、参照元プロジェクトが任意の CPU に設定されている場合でも、エントリ アプリケーション プロジェクトは、最終的には、任意の CPU を対象とするプロジェクトがどのように JIT されるかを決定する要因となります。

于 2011-11-21T16:12:16.203 に答える
0

まあ、問題は、プロジェクトが古いバージョンの VS からアップグレードされたという事実に隠されているようです (2005 年からだと思います)。ゼロから再作成し、必要なものをすべて追加しましたが、動作します! さらに、それは悪いものと同じになり、これは私を狂わせます.1つは機能し、もう1つは機能しません。

で、「日が昇る? そこには何も触らないで」と諦めました。:) 試すオプションを提案してくれたすべての人に感謝します-あなたの努力に感謝します(+1)。

スレッドを完了としてマークするために自分の回答を受け入れますが、投票しないでください-有用な情報が含まれていません...

于 2012-02-10T12:48:56.910 に答える