【发布时间】:2014-05-26 19:41:06
【问题描述】:
我的问题是,当我的测试套件正在运行时,Environment.CurrentDirectory 会在某个地方以某种方式并且只是偶尔设置为C:\Windows\System32。一些测试依赖于当前目录,结果它们失败了。
我已经在我的项目中进行了查找,并确认我的代码都没有设置该属性。不过,我使用了许多 3rd-party 库,所以我怀疑其中一个正在修改当前目录。
我专门针对当前目录更改为 system32 进行了一些搜索,但结果为空。发生这种情况是否有一些常见原因?
另一种方法,同样是空的,是:我怎样才能找到罪魁祸首?据我所知,当值发生变化时,我不能让 Visual Studio 在任何地方中断。因为它是一个环境变量并且在 .NET 库中,所以我无法在 setter 中设置断点。
我想过使用 procmon 什么的,它希望记录当前目录何时发生变化,但是当它发生时它并没有暂停执行,所以我仍然不知道它发生在哪里。
我不知道如何调试它。有任何想法吗?还是我唯一的办法是将 Environment.CurrentDirectory 保存到全局只读字段并在我的代码中专门引用它,从而允许修改当前目录而不受惩罚?
【问题讨论】:
-
为什么你的测试需要知道当前目录是什么?确定运行程序集的路径不是更好吗?
-
@stuartd 相信我,如果我写了它们,它们就不会依赖于当前目录......这是一个很好的观点,但是这可能都没有实际意义,因为没有什么真正应该是完全使用 ebvieonment 变量。
标签: c# .net windows visual-studio