1

単体テストを実行してプロジェクトのベースパスを取得しようとすると、奇妙な出力が得られるという状況があります。

D:\VSCode\Bob.Smith\Projects\MySolution\DEVELOPMENT\MyClasses\MyProject\TestResults\Jacob.Freeman_P1004 2012-11-26 09_21_33\Out

これはVSの既知の問題ですか、それとも私が見逃した問題ですか?ディレクトリ情報を取得するために、他のコードなしで次の行を使用しています。

string output = null;
output = Environment.CurrentDirectory;

次のようなディレクトリ情報を取得するためにさまざまな方法を試しましたが、それでも同じ出力が得られます。

output = System.IO.Directory.GetCurrentDirectory()

前もって感謝します。

4

2 に答える 2

4

ドキュメントに記載されているようにEnvironment.CurrentDirectory

現在の作業ディレクトリの完全修飾パスを取得または設定します。

現在の作業ディレクトリは、必ずしもプロジェクトのベースパスである必要はありません-exeを起動するときです。テストの実行中、このパスはテストランナーによって設定されます。この変数は、プログラムの実行中に変更される可能性があります。

アプリケーションAssembly.GetEntryAssembly().Locationでは、exeファイルの場所を取得するために使用する必要があります。テストランナーによって実行されるため、これはテストでは機能しません。

テスト目的で、テスト済みのdllファイルの場所が必要な場合は、を使用できますtypeof(SomeTypeThatIsDeclaredInThatDLL).Assembly.Location

于 2012-11-26T09:41:59.680 に答える
1

設計どおりに機能します。テストは、binに対して別のディレクトリで実行されます。

于 2012-11-26T09:35:18.480 に答える