当前位置:  开发笔记 > 编程语言 > 正文

为什么Windows窗体和库之间的AppDomain.CurrentDomain.BaseDirectory不同

如何解决《为什么Windows窗体和库之间的AppDomain.CurrentDomain.BaseDirectory不同》经验,为你挑选了1个好方法。

在我的winforms应用程序中,AppDomain.CurrentDomain.BaseDirectory设置为"C:\ Projects\TestProject\bin\Debug \"

在我的单元测试中,它是"C:\ Projects\TestProject\bin\Debug"(没有最终斜杠).为什么是这样?

[编辑] @Will:我在问为什么测试项目的目录没有尾部斜杠?



1> 小智..:

您可能会问两个可能的问题之一:它们为什么不同,或者为什么测试项目的目录没有尾部斜杠.

假设它是第一个:那就是代码执行的地方.调试程序时,其编译和二进制文件位于项目的\ bin\debug目录下.当你进行测试时,你正在运行测试的二进制文件,这些二进制文件被编译并放在测试项目的bin\debug目录下.

假设它是最后一个:可能是一些模糊的原因,可能是一个错误,或者可能是为了捕捉连接路径的人而不是使用Path.Combine(顽皮顽皮!).


好吧,我不知道为什么会有所不同.测试应用程序可以在自定义CLR主机中运行; 我认为这可能就是这种情况,因为测试应用程序使用通常在标准CLR主机中不允许的私有访问器做一些奇怪的事情.我只是在这里抓住稻草,因为我对这些东西实际编码方式没有任何实际的了解.

无论如何,变通方法(Path.Combine).没有人应该连接路径,因为路径分隔符可以改变.


是的,没有人应该连接路径(这不是问题,有人通过在路径中查找调试来检查代码是否在IDE中运行).当我编写失败的单元测试时,我发现了这种奇怪的行为.主要是好奇的事情.
推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有