为什么Windows窗体和库之间的AppDomain.CurrentDomain.BaseDirectory不同
时间:2020-03-05 18:49:33 来源:igfitidea点击:
在我的winforms应用程序中,AppDomain.CurrentDomain.BaseDirectory设置为" C:\ Projects \ TestProject \ bin \ Debug "
在我的单元测试中,它是" C:\ Projects \ TestProject \ bin \ Debug"(没有最后斜杠)。为什么是这样?
[编辑] @Will:我问为什么测试项目的目录没有斜杠?
解决方案
回答
我们可能会问两个可能的问题之一:它们为什么不同,或者为什么测试项目的目录没有斜杠。
假设它是第一个:那就是代码从哪里执行的。在调试程序时,将其编译后的二进制文件放在项目的\ bin \ debug目录下。在测试时,我们正在运行测试的二进制文件,这些文件已编译并放置在测试项目的bin \ debug目录下。
假设它是最后一个:可能是一些晦涩的原因,可能是错误,或者可能是为了捕捉正在连接路径而不是使用Path.Combine的人(调皮,调皮!)。
好吧,我不知道为什么会有所不同。测试应用程序可以在自定义CLR主机中运行;我认为情况可能是这样,因为测试应用程序使用私有访问器做一些奇怪的事情,而通常在标准CLR主机中是不允许的。我在这里只是抓住稻草,因为我对这些东西的实际编码方式没有任何实际的了解。
无论如何,解决方法是(Path.Combine)。没有人应该串联路径,因为路径的分度可能会改变。