2012-03-22 27 views
32

最近私たちのデータオブジェクトにlog4net.dllが追加されました。我々のデータオブジェクトが完全に構築しますが、あなたが参照するものを構築しようとすると、我々のデータは、次のエラーを取得オブジェクト: "どのようにしても競合を解決できません"というエラーを修正するには?

No way to resolve conflict between "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" and "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905". Choosing "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" arbitrarily.

が、私は問題の詳細な情報を得るために私を有効に次 thread見つかりました。

log4netは、このプロジェクトでさまざまなことに使用されています。例えば、水晶は1.2.9をGACにインストールしました。私はinfragicticsが1.2.10を使用していることを知っています。

特定のディレクトリ(c:\references)があります。すべてのDLLをビルドし、すべてのアプリケーションが内部DLLを参照するためのディレクトリです。だから私は具体的に私のデータオブジェクトの参照をバージョン1.2.11であるc:\ references \ log4net.dllに設定しました。上記のエラーメッセージに1.2.11が表示されないので、どちらが奇妙ですか。 dllは特定のバージョンで参照されています:= True &ローカルコピー:= True。ビルドディレクトリ& 1.2.11のlog4netが正しく移動したかどうか確認しました。

それはここに役立ちます場合は、詳細なエラーメッセージの一部です:

There was a conflict between "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" and "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905". 
    No way to resolve conflict between "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" and "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905". Choosing "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" arbitrarily. 
     References which depend on "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" [C:\Windows\assembly\GAC_32\log4net\1.2.10.0__692fbea5521e1304\log4net.dll]. 
      C:\Windows\assembly\GAC_MSIL\CrystalDecisions.Shared\13.0.2000.0__692fbea5521e1304\CrystalDecisions.Shared.dll 

    References which depend on "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905" [C:\Program Files (x86)\Business Objects\Common\4.0\managed\log4net.dll].   c:\references\DBObjectAdoNet.dll 
      Project file item includes which caused reference "c:\references\DBObjectAdoNet.dll". 

を更新:これまでのところ、私はエラーを修正するために見つけた唯一の方法は、DBObjectAdoNet.dllを参照するものでlog4netのを参照することです。これは、実際には私たちのために役に立った解決策ではありません。ほとんどのシステムでは、 のすべてがそれを使用しています。

2回目のアップデート:問題を解決するためにlog4netをGACの考えに入れようとしましたが、それでも問題は解決しません。

第3の更新:Microsoftへのサポートコールを行いました。彼らは私がAssembly.LoadFrom()を使用することを望んでいます。これは、1つのアプリケーションで300,000を超える呼び出しを行うため、非常に躊躇しています。

私のマシンでCrystalランタイムをアンインストールした場合、エラーが消えてしまいました。私が知る限り、log4net 1.2.10.0をGACは.NET Framework 2.0フォルダの下にあります。これは、アプリケーションが.NET Framework 4アプリなので重要ではありません。

+0

'quote'私のマシンで水晶ランタイムをアンインストールするとわかりました。'/quote' - question:** crystal runtime **?何** Crystalランタイム**? –

+0

@Robert Crystal 11 x86 for .NET Framework 4.私は問題が発生したときにx64版でも同じことが起こったと思います。 – coding4fun

+0

問題を解決できなかったプロジェクトにlog4netバージョンのリファレンスを追加しましたが、これで問題は解決しました。 –

答えて

2

結晶ランタイムが間違いなく問題であることがわかりました。 %windir%\assemblyでlog4netをアンインストールすると、クリスタルランタイムがインストールされていると警告メッセージが表示されなくなります。変わったのは、log4netのサイトからlog4net 1.2.10をGACにインストールすると、警告メッセージが再表示されないということです。誰かがそれを説明できるなら、このスレッドに追加してください。クリスタルは、独自の強力な名前キー(公開鍵トークンは異なる)でlog4netを署名しました。

log4netの問題を解決する鍵は、log4netがオープンソースプロジェクトであることです。つまり、ソースから別の名前でdllを構築するだけです。まだ試してみませんでしたが、それは問題を解決するはずです。 log4netを更新するたびにソースからビルドするという余計なステップがありますが、dllをどれだけ更新するかは大きな問題ではありません。

+6

私たちはこのアプローチを悲惨な結果で試みました。 CLRは両方のアセンブリを喜んでロードしましたが、両方に存在するILogを解決できませんでした。その結果、ロギングの半分が失われました。 –

+0

@BrendaBell申し訳ありませんが、あなたのためにうまくいきませんでした。それはうまくいったのですが、もちろん、すべての設定は異なっています – coding4fun

14

編集のためにプロジェクトファイル(VBでは.csproj、VB.NETでは.vbproj)を開きます。

log4netのリファレンスがFully Qualified Type Nameで、HintPathSpecificVersion=Trueであることを確認してください。

<Reference Include="log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL"> 
    <HintPath>..\references\log4net.dll</HintPath> 
    <SpecificVersion>True</SpecificVersion> 
</Reference> 

ファイルを保存して再構築してください。

+1

返事をありがとう。それは、残念ながら、それは動作しませんでした試みた: は<リファレンス=含める "log4netの、バージョン= 1.2.11.0を、カルチャニュートラル、PublicKeyToken = = 669e0ddf0bb1aa2a、processorArchitecture = MSIL"> C:参照がlog4net.dll \ \ Falseの coding4fun

+0

何の特定のバージョンを提供しない、逆のパスをお試しください: は '<リファレンス= "log4netの"「doesnの> ' – KMoraz

+1

ハズレを含めるとどちらかが役に立ちます – coding4fun

関連する問題