14

私は過去2時間、SOに関するこれらの問題を調査してきましたが、何も機能していないようです。

NuGet経由でlog4net1.2.11を使用するソリューションがあります。Windows7を実行している32ビット開発ワークステーションでは正常に動作します。64ビットWindows2008R2テストシステムでは動作しません。私が得るエラーは次のとおりです。

未処理の例外:System.IO.FileLoadException:ファイルまたはアセンブリ'log4net、Version = 1.2.11.0、Culture = neutral、PublicKeyToken=669e0ddf0bb1aa2a'またはその依存関係の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

4 に答える 4

6

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

「oldkey」バージョンは apache log4net サイトから取得できます。プロジェクト ファイルから参照を削除し、代わりに oldkey バージョンを参照してください。

于 2012-12-19T01:04:38.030 に答える
4

これが私の解決策です。log4net から Common.Logging から NLog に変更しました。たいした手間はかかりませんでしたし、必要ではなかったと思いますが、うまくいきました。

于 2012-11-30T00:00:38.623 に答える
3

まったく同じ問題が発生しています。コード ベースの深い依存関係により、1.2.10 が GAC に組み込まれ、NuGet は 1.2.11 を使用しようとしています。log4net に NuGet を使用することを断念しました。頭の痛い問題です。NuGet は少し全か無かのようです。

于 2012-10-25T04:18:55.137 に答える
3

場合によっては、プロジェクトの依存関係を実際にドリルダウンする必要があります。私の場合、それは Log4Net の異なるバージョンを参照していた実際のサービス スタック プロジェクトの参照の参照でした。

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

依存関係ツールを使用して、競合するバージョンを使用している参照をすばやく見つけることができますが、このためのツールがない場合は、プロジェクトの参照を単独でコンパイルし、log4net.dll のどのバージョンがディレクトリにコピーされるかを確認できます。

于 2013-05-16T20:30:28.127 に答える