0

64 ビットの Windows 2008 サーバーで実行され、ODP.net 経由で Oracle 11g にアクセスする C# コンソール アプリケーションがあります。それは約6ヶ月間働いています。

ビルド設定を「Any CPU」にして、コンピューターでプログラムをコンパイルします。6 か月前に適切な 64 ビット Oracle dll を Windows サーバーにインストールしましたが、決して置き換えませんでした。コンソール アプリの exe のみを置き換えました。

昨夜更新しましたが、BadImageFormat 例外が発生し、Oracle アセンブリが見つからないというメッセージが表示されます。これは通常、dll のコンパイル パッケージが間違っていることを意味します。確認しましたが、まだ元の Oracle dll を使用しています。また、サーバーで「任意の CPU」にコンパイルしていることも確認しました。

元のOracle dllのソースを再コンパイルして再ロードし、再ロードしてみました。

誰もこれを見たことがありますか?何か案は?

4

1 に答える 1

0

ということで試行錯誤の末にたどり着きました。

ある時点で、PC の ODP バージョンをバージョン 4. に更新しましたが、サーバーのバージョンは 2.でした。私は 32 ビットと 64 ビットを正しく説明していましたが、特定のバージョンを予期するようにコンパイルされていました。

何らかの理由で、新しい DLL をサーバーにコピーできませんでした。4.* 64 ビット dll を参照するアプリケーションをコンパイルする必要があり、その後、すべてをサーバーにロードして動作させることができました。そして、PC で作業を続けるために、参照を削除して 32 ビットを再参照する必要がありました。面倒ですが、うまくいきます。

于 2012-07-12T16:10:43.177 に答える