2012-05-02 13 views
14

私はこれら2つの問題を調べるのに2時間を費やしましたが、何も動作していないようです。log4net 1.2.11の競合に関するもう1つの問題

NuGet経由でlog4net 1.2.11を使用するソリューションがあります。それは、Windows 7を実行している私の32ビット開発ワークステーションで正常に動作します。私の64ビットWindows 2008 R2テストシステムでは動作しません。私が手にエラーがある:

未処理の例外:System.IO.FileLoadException:「文化はニュートラル、PublicKeyToken = = 669e0ddf0bb1aa2a、log4netの、= 1.2.11.0バージョン」またはその依存関係の1つのファイルまたはアセンブリをロードできませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。

私のテストシステムのアプリケーションディレクトリを調べています。 log4net.dllファイルにバージョン1.2.11があります。

GACのバージョンは1.2.10でした。私はそれを削除しました。私の開発サーバーには、もう一度別のバージョンがありました。私もそれを削除しました。私は再建した。私は再配置しました。私は

<dependentAssembly> 
    <assemblyIdentity name="log4net" publicKeyToken="669E0DDF0BB1AA2A" culture="neutral"/> 
    <bindingRedirect oldVersion="0.0.0.0-1.2.10.0" newVersion="1.2.11.0"/> 
</dependentAssembly> 

を設定ファイルに追加しました。何も違いがないようです。私の展開プロジェクトは、展開されているlog4netアセンブリの正しいバージョンと署名を示しています。

私は他に何ができるのか分かりませんが、ロギングライブラリがアプリケーションの実行を妨げていると非常に不満を感じています。

私は何が欠けていますか?

答えて

4

私の解決策は次のとおりです。私はlog4netからCommon.LoggingをNLogに変更しました。それは多くの努力を必要としなかった、私はそれが必要だったはずだとは思わないが、それは働いて、うまくいった。

+0

私は同じことをしなければなりませんでした。問題は、依存関係にlog4netのバージョンが競合する必要がある場合です。 –

+3

回避策ではなく、この問題に対する実際の解決策については、@ keithl8041の回答を参照してください。 :) –

+0

@ JohnySkovdal、実際に私は回避策と呼んでいます。つまり、廃止予定のライブラリと古いライブラリキーを明確なEOLで引き続き使用する必要があります。それは将来あなたの選択肢を制限します。 –

3

私たちはまったく同じ問題を抱えています。コードベースの深い依存関係は1.2.10をGACに入れ、NuGetは1.2.11を使用しようとしています。私たちは、log4netのためにNuGetを使用して、あまりにも多くの頭痛をあきらめました。 NuGetは少しでもかまいません。

6

log4netをNuGet経由でアップグレードした後で、新しいバージョンが別のキーで署名されていることがわかった場合にのみ、この問題が発生しました。一口。なんらかの理由で、これはライブサーバーにデプロイしたときにのみ明らかになりましたが、開発中に切り詰められませんでした。

「oldkey」のバージョンはthe apache log4net siteから取得できます。ちょうどプロジェクトファイルからあなたの参照を念頭に置き、代わりにoldkeyバージョンを参照してください。

3

場合によっては、プロジェクトの依存関係を詳しく調べる必要があります。私の場合、これは、Log4Netの別のバージョンを参照していた実際のService Stackプロジェクトのリファレンスの参照です。

これを修正するために、Log4Netの最新バージョンをnugetからServiceStackプロジェクトに追加しました。私はまた、直接参照が最新バージョンを使用していることを確認し、これが問題を解決しました。

矛盾するバージョンを使用している参照をすばやく見つけるにはツールを使用できますが、ツールを持たない場合はプロジェクトの参照のみをコンパイルしてコピーされるlog4net.dllのバージョンを確認できますディレクトリに移動します。

関連する問題