2

VS2005 C++/CLI ライブラリを使用する .NET 4 アプリケーションに取り組んでいます。C++/CLI ライブラリに関するテストは、カスタム コンソール ベースのテスト ランナーであり、少し扱いに​​くいです。nunit を使用していくつかの新しいテストを作成しようとしています。

問題は、コンソール ベースのアプリケーションがすべての依存アセンブリを読み込むことができるが、Nunit がアセンブリを見つけられないと文句を言うことです (例: System.Runtime.Serialization.SerializationException : Unable to find assembly 'msvcm80, Version=8.0.50727.6195, Culture=neutral, PublicKeyToken== b03f5f7f11d50a3a')。

コンソール ベースのアプリケーションが C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d09154e044272b9a\mscvm80.dll でアセンブリをロードしていることを確認し、このファイルをビルド ディレクトリとテスト ランナー ディレクトリに手動でコピーしました。これは役に立ちません。

Depends.exe は、GPSCV.DLL と IESHIMS.DLL が見つからないことを教えてくれますが、コンソール アプリが依存関係を読み込むのを止めないので、それが重要かどうかはわかりません。

古い C++/CLI ライブラリに依存する Nunit テストのトラブルシューティングに関するヒントはありますか?

4

1 に答える 1

1

nunit 実行可能ファイルをビルド出力パスに実行すると、新しいテストが nunit で正常に実行されました。

この問題は、必要な C++ DLL が nunit ランナーと同じパスにある (または少なくとも nunit からアクセスできる) 必要があるという単純なケースのようです。紛らわしいのは、テストが別の場所で実行された nunit から実行されたときにスローされるモジュール読み込み例外が、nunit パスで必要のないアセンブリ (msvcm80.dll) を指定することです。とにかく、依存関係ツリーは私にとって少し不透明であり、これにより多くの混乱が生じました。

これに関する厄介な点は、Team City の nunit テスト ランナーではなく、Team City のバッチ スクリプトを介して nunit コンソールを呼び出して、このアセンブリの CI テストを実行する必要があることです (他のすべてのテストで行うように)。

于 2012-08-03T14:48:58.080 に答える