为什么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)。没有人应该串联路径,因为路径的分度可能会改变。