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 回答