私はMicrosoft.Practices.EnterpriseLibrary.Common.dll
を参照するDLLプロジェクトを持っている(=「DLL」)マイクロソフトエンタープライズライブラリ3.1の私のインストールディレクトリから。それは "b03f"で始まる公開鍵を持っています。
Miner.Geodatabase.dll
バージョン9.30.2.5168を参照する別のプロジェクトがあります(GACフォルダに9.2.0.0が表示されます)。マイナーdllは、 "196b"で始まる公開鍵を持っています。
3番目のdllは他の2つを参照します。奇妙なDLLの行動(質問オーバーホール)
はここで上記のプロジェクト ELTest.rarとシンプルVS2005のソリューションです -
1. RefEL、ちょうどそのlibフォルダからDLLを参照します。
2. RefGeodatabseは、GACのMiner.Geodatabase.dll
を参照しています。
3. RefBothは、他の2つのプロジェクトを参照します。 RefGeodatabaseとRefBothのビン/デバッグがDLLのバージョンとを含んでいながら
はコンパイル後、RefELのビン/デバッグフォルダには、「b03f」(「本物」)DLLのバージョンが含まれていますマイナーdllと同じ "196b"で始まる公開鍵。彼らはエンタープライズライブラリを再コンパイルした(そして、おそらく何かを変えた)ようだ。
実行時に(私の実際の解決策では、この偽の解決策ではない)、私の "両方の"プロジェクトは、 "b03f" dllが必要な "EL"プロジェクトを呼び出し、見つからずクラッシュします。
私は何をすることが出来るのですか?おそらく、エンタープライズライブラリのDLLをGACに登録すると、実行時に見つかるでしょう。ターゲットコンピュータにentlibをインストールする必要のない別のソリューションはありますか?
使用しているVisual Studioのバージョンは何ですか?プロジェクト参照やファイル参照を使用していますか? HintPathsはプロジェクトファイルでどのように見えるのですか?あなたが記述しているようにDLLをコピーするのは完全に正常です。 –
私はvs2005 sp1を使用しています(spもインストールされていなくても起こります)。プロジェクトAはEL dllをファイル(libフォルダ内)として参照していますが、** GACからは**ありません。 プロジェクトBは、GACを介してMiner.Geodatabase.dll(ver 9.30.2.5168)を参照しており、コンパイルした後、奇妙なEL dllを受け取っています。 このDLLがどこから来ているのか分かりません。しかし、AとBの両方を参照するプロジェクトはこの奇妙なdllを取得し、Aは実行時に失敗します。 –