2012-11-26 34 views
1

我有一种情况,我正在运行单元测试并试图获取项目基本路径,它给我一个奇怪的输出。C#单元测试 - 怪异的项目目录

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

由于文档指出Environment.CurrentDirectory

获取或设置当前工作目录的完全限定路径。

当前工作目录不一定是项目的基本路径 - 它是当你启动一个EXE。运行测试时,此路径由测试运行器设置。程序运行时,这个变量可能会改变。

在应用程序中,您应该使用Assembly.GetEntryAssembly().Location来获取您的exe文件的位置。这对于测试运行者执行的测试不起作用。

如果出于测试目的,您只需要测试dll文件的位置,您可以使用typeof(SomeTypeThatIsDeclaredInThatDLL).Assembly.Location

+0

很好的解释,谢谢! – Jacooobley

+0

谢谢,帮帮我吧! – TheGeekZn

0

它按设计工作。您的测试在不同的目录中针对bin执行。

+1

这可能是一条评论。 – TheGeekZn

+0

这个问题的确切答案是“这是一个已知问题” –

+0

我们正在寻找适当的答案。意思是,上述答案将是一个“确切”的答案。 – TheGeekZn