1

Microsoft Enterprise Library 3.1のインストール ディレクトリからMicrosoft.Practices.EnterpriseLibrary.Common.dll(=" the dll ")を参照する dll プロジェクトがあります。「b03f」で始まる公開鍵を持っています。 バージョン 9.30.2.5168を参照する別のプロジェクトがあります(GAC フォルダーに 9.2.0.0 が表示されます)。Miner dll には、「196b」で始まる公開鍵があります。 3 番目の dll は、他の 2 つを参照します。
Miner.Geodatabase.dll

上記のプロジェクトELTest.rar - 1 を使用した単純な vs2005 ソリューションを次に 示します。RefEL は、その lib フォルダーからdll
を 参照するだけです。 2. RefGeodatabse は、GAC から参照するだけです。 3. RefBoth は、他の 2 つのプロジェクトを参照します。
Miner.Geodatabase.dll

コンパイル後、RefEL の bin/debug フォルダーにはdllの "b03f" ("real") バージョンが含まれ、RefGeodatabase と RefBoth の bin/debug には"196b" で始まる公開キーを持つdllのバージョンが含まれます。 - マイナー dll と同じ。彼らはエンタープライズ ライブラリを再コンパイルしたようです (そして、おそらく何かを変更したようです)。
実行時に (この偽のソリューションではなく、私の実際のソリューションでは)、私の「両方の」プロジェクトは、「b03f」dll を必要とする「EL」プロジェクトを呼び出し、それを見つけることができず、クラッシュします。

私はどうしたらいいですか?Enterprise Library dll を GAC に登録すると、実行時に見つかる可能性があります。ターゲット コンピューターに entlib をインストールする必要のない別のソリューションはありますか?

4

1 に答える 1

0

さて、エンタープライズ ライブラリの通常 (「b03f」) バージョンを GAC (および実稼働コンピューター) に登録することにしました。このリンクを使用して、すべての dll を一度に登録しました。魅力のように働きました。

現在、私の RefEL プロジェクトは dllの GAC バージョンを参照しています。RefGeodatabase には Miner.Geodatabase.dll があり、これは CopyLocal=true で GAC の「196b」バージョンを参照していますが、実行時に私のプロジェクトは「b03f」バージョンを見つけます。 GAC でクラッシュしません。

于 2009-08-25T08:28:07.803 に答える