Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 为什么Windows窗体和库之间的AppDomain.CurrentDomain.BaseDirectory不同_.net - Fatal编程技术网

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

.net 为什么Windows窗体和库之间的AppDomain.CurrentDomain.BaseDirectory不同,.net,.net,在我的winforms应用程序中,AppDomain.CurrentDomain.BaseDirectory设置为“C:\Projects\TestProject\bin\Debug\” 在我的单元测试中,它是“C:\Projects\TestProject\bin\Debug”(没有最后的斜杠)。为什么会这样 [编辑]@Will:我在问为什么测试项目的目录没有尾随斜杠?您可能会问两个可能的问题之一:为什么它们不同,或者为什么测试项目的目录没有尾随斜杠 假设它是第一个:代码就是从这里执行的。调试

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

在我的单元测试中,它是“C:\Projects\TestProject\bin\Debug”(没有最后的斜杠)。为什么会这样


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

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

假设它是第一个:代码就是从这里执行的。调试程序时,其已编译文件和二进制文件将放在项目的\bin\debug目录下。当您进行测试时,您正在运行测试的二进制文件,这些二进制文件被编译并放在测试项目的bin\debug目录下

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


我不知道为什么会有不同。测试应用程序可以在自定义CLR主机内运行;我认为可能是这样的,因为测试应用程序使用标准CLR主机中通常不允许的私有访问器执行一些奇怪的操作。我在这里只是抓住了稻草,因为我不知道这些东西实际上是如何编码的


不管怎么说,解决方案仍然存在(Path.Combine)。没有人应该连接路径,因为路径delimeters可能会更改。

是的,没有人应该连接路径(这不是问题所在,有人通过在路径中查找调试来检查代码是否在IDE中运行)。我在编写失败的单元测试时发现了这种奇怪的行为。主要是一件好奇的事情。@KrisErickson你是如何在单元测试中解决这个问题的?