【问题标题】:Why is AppDomain.CurrentDomain.BaseDirectory different between Windows Forms and Library为什么 Windows 窗体和库之间的 AppDomain.CurrentDomain.BaseDirectory 不同
【发布时间】:2008-09-08 18:24:48
【问题描述】:

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

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

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

【问题讨论】:

    标签: .net


    【解决方案1】:

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

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

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


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

    无论如何,解决方法是 (Path.Combine)。没有人应该连接路径,因为路径分隔符可能会改变。

    【讨论】:

    • 是的,没有人应该连接路径(这不是问题,有人通过在路径中查找调试来检查代码是否在 IDE 中运行)。当我编写失败的单元测试时,我发现了这种奇怪的行为。主要是出于好奇。
    • @KrisErickson 你是如何在单元测试中解决这个问题的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 2017-09-28
    • 2017-04-03
    • 2016-01-19
    • 2021-11-10
    • 2014-02-17
    相关资源
    最近更新 更多