2008-09-08 5 views
5

の間で異なるAppDomain.CurrentDomain.BaseDirectoryでは "C:プロジェクト\ \ TestProject \ binに\デバッグ\" 私のユニットテストではなぜ、AppDomain.CurrentDomain.BaseDirectoryが設定されているWindowsフォームと私のWinFormsアプリケーションでライブラリ

それは "C:\ Projects \ TestProject \ bin \ Debug"です(最後のスラッシュはありません)。どうしてこれなの?

[編集] @ウィル:なぜテストプロジェクトのディレクトリにスラッシュが付いていないのですか?

答えて

9

2つの可能性のある質問の1つを質問している可能性があります。なぜ異なるのでしょうか。テストプロジェクトのディレクトリにスラッシュが付いていないのはなぜですか?

これを最初に仮定します。コードがどこから実行されているかを考えます。プログラムをデバッグすると、コンパイルされたバイナリとプロジェクトの\ bin \ debugディレクトリの下にバイナリが置かれます。テストするとき、テストのバイナリをコンパイルし、テストプロジェクトのbin \ debugディレクトリの下に置いて実行しています。

最後のものを想定してください:多分、おそらくバグかもしれませんが、おそらくPath.Combine(いたずらな!)を使用するのではなく、パスを連結している人を捕まえるかもしれません。


なぜ、それが違うのか分かりません。テストアプリケーションは、カスタムCLRホスト内で実行できます。私はこれがテストアプリケーションが通常は標準のCLRホスト内では許可されていないプライベートアクセサを使って奇妙なことをするので、そうかもしれないと思います。私は実際にどのようにこのようなものが実際にコード化されているかについての実際の知識はないので、ここではストローでしか把握していません。

とにかく、回避策は立っています(Path.Combine)。パス区切り文字が変更できるので、パスを連結する必要はありません。

+2

ええ、誰もパスを連結する必要はありません(問題はありませんでした。誰かがIDEでパス内のデバッグを探してコードが実行されているかどうかをチェックしていました)。私が失敗したユニットテストを書いていたとき、私はこの奇妙な行動を見つけました。大部分は好奇心です。 –

+0

@KrisEricksonどのようにしてユニットテストでこの問題が解決されましたか? – DevT

+0

ファイルシステムを嘲笑しました。 –

関連する問題

 関連する問題