2012-03-20 23 views
0

私たちのVS 2005ソリューションでは、x64のみをビルドするためにいくつかのプロジェクトを設定する必要があります。プロジェクトが使用しているサードパーティのソフトウェアはそれを必要とします。Visual Studio 2005はx64ライブラリを自動参照しません

プロジェクトが参照しているOracle DLL(System.Data.OracleClient.dll)は、Windows \ Microsoft.NET \ Framework \ v2.0.57027 にあり、64ビットプロジェクトからOracleに接続するときに問題が発生します。

MicrosoftがFramework64 \ v2.0.50727ディレクトリを使用してSystem.Data.OracleClient.dllを参照していない理由はありますか?このプロジェクトはx64へのビルドが強制されているため、論理的にはFramework64のリファレンスを使用すると考えられます。

私は取得していますエラーは次のとおりです。

のSystem.InvalidOperationException:Oracleクライアント ライブラリをロードする試みがBadImageFormatExceptionを投げました。この問題は、 が32ビットのOracleクライアントコンポーネントで64ビットモードで実行されている場合に発生します。 ----> System.BadImageFormatException:不正な形式のプログラムをロードしようとしました 。 ( HRESULTからの例外:0x8007000B)私は参照を追加するために行くたび

、それが唯一の非64ビットのDLLのを参照しています。 64bit System.Data.OracleClient.dllを参照する必要がありますか?

ありがとうございました。

答えて

1

これは参照アセンブリとは関係ありません。コンパイラは常に32ビットのアセンブリ参照を使用します。これは、アセンブリ内でメタデータのみを使用します。これは、32ビットと64ビットのコードで同じです。

ここで間違っているのは、ランタイムにあるアセンブリの種類です。 32ビットのものは、それの音で。オラクルの共通の問題は、何らかの理由でGACを使用したくないことです。そのアセンブリにはアンマネージコードが含まれているため、どちらの方法でも実行できません。 64ビット版のOracleプロバイダをデプロイするか、プログラムを強制的に32ビットモードで実行する必要があります。ソートできない場合は、Oracleにご連絡ください。

+0

ありがとうございました - 私は64ビットクライアントをOracle用にインストールしました。 Toadの問題のために私はまだ32bitが必要です。しかし、なぜVSが32ビットアセンブリへの参照を示しているのか、またはプロジェクトを64ビットに強制したときに32ビットアセンブリを表示するのでしょうか?私はそれがバックエンドで異なってリンクしているかどうかを理解することができますが、それは彼らがそれを持っているようにうっすらと思われます。 –

関連する問題