2011-09-07 7 views
7

TeamCity NUnitランナーを使用して.DLLファイルに格納されたテストを実行しています。TeamCityからNUnitテストを実行するとFileNotFoundExceptionが発生する

私の.DLLは、同じフォルダに存在する他のDLLを参照しています。

これらを実行するとき、私は参照されたDLLのFileNotFoundExceptionを取得しています。

どうすればこの問題を解決できますか?私はおそらくTC NUnitのランナーは、メインのアプリケーションの実行フォルダとしていくつかの他のディレクトリを使用しているので、テストDLLの隣に実際にはロードされていないが、まだこの主張を証明することはできませんファイルから防ぐことを考えています...

誰でもこの現象が発生しましたか?

答えて

9

OKに連絡すること自由に供給し、それは確かに愚かなと恥ずかしいです:私はNUnitのテストランナーを設定している

これらのテストを実行します。

**/*.Tests.dll 

これは、このようなobj/

として、他のフォルダから /bin/Debug/とからもテストが含まれることを意味し

これらのフォルダには、もちろん参照は含まれていないため、同じテストが2回実行され、これらのうちのいくつかはもちろん失敗します!

1

パスはビルドチェックアウトディレクトリに関連しており、作業ディレクトリには関係ありません。別のパスが必要な場合は、%reference%シンタックスを使用して、ディレクトリパスを持つTeamCityプロパティを参照してください。 Windowsの下で実行しますか? TeamCity 6.5を使用していますか?それでも解決しない場合は

は、問題が解決される[email protected]

+0

私は現在6.5、Windows、はいを使用しています。私はパスが相対的であることを知っています、なぜそれが失敗したのかを理解しようとするために使っていた論理的な説明でした。 Dll AがDll Bを参照している(同じディレクトリ内にある)場合、どのような理由でDll Bを見つけることができないのでしょうか? –

0

私の場合、欠落しているDLLはネイティブライブラリであり、ビルドエージェントに不正なバージョンのVCランタイムがインストールされているため、ロードできませんでした。私のソリューションは、C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ redist \ x86 \ Microsoft.VC110.CRT 'にあるランタイムDLLをプロジェクトに直接追加することでした(ビルドアクション=コンテンツ、コピー先出力ディレクトリ=常にコピー)。これにより、インストールがより面白くなります。

これが役に立ちます。

関連する問題