6

ソリューションに既存のプロジェクトを追加しました。MSTest ランナーですべての単体テストを実行すると、いくつかのテストで次のエラーが発生します。

メッセージ: テスト メソッド soandso が例外をスローしました: System.IO.FileLoadException: ファイルまたはアセンブリ 'log4net、バージョン 1.2.12.0、Culture=neutral、PublicKeyToken=669e0ddf0bb1aa2a' またはその依存関係の 1 つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULT:0x80131040 からの例外)

私は他の人が同じ問題を抱えていることを知っており、このトピックに関する他の質問と回答があります. しかし、私は多くのことを試しましたが、何も役に立ちませんでした。使用する log4net のバージョンは 1.2.13.0 です。

FUSLOGVW.exe でバインド エラーを確認しました。log4net には、追加されたアセンブリといくつかの不明なアセンブリが表示されます。アセンブリ内の log4net の参照は、NuGet で追加されたバージョン 1.2.13.0 を示しています。したがって、このすべての問題を引き起こしているのは、おそらく依存アセンブリです。log4net をバージョン 1.2.12.0 に戻そうとしましたが、それでも同じエラー メッセージが表示されます。

MSTest testrunner ですべてのテストを実行すると、これらのエラーが表示されます。失敗したテストのみを実行すると、合格します。それらを個別に実行すると、それらも合格します。バインディング リダイレクトを試みましたが、テスト アセンブリではなく、テスト対象のアセンブリに対して行いました。テストアセンブリでそれを行う方法がわかりませんでした-構成がありません。Resharper テスト ランナーでテストを実行すると、テストも成功します (ただし、他のテストは失敗します)。TFS ビルド サーバーは MSTest-runner を実行するため、MSTest で動作させる必要があります。

これを解決する方法を知っている人はいますか?

4

1 に答える 1

11

犯人が見つかりました。私が疑っていたように、依存アセンブリは log4net 1.2.12.0 を参照していました。調べるために使用されたツールは dotPeek でした。幸いなことに、依存アセンブリのソース コードがあり、最新の log4net を参照するように変更できます。これにより、この問題が解決されます。

したがって、誰かが同様の問題を抱えている場合は、dotPeek または同様のツールを使用して依存アセンブリを調べ、参照しているアセンブリのバージョンを確認してください。

于 2014-04-02T09:29:54.103 に答える