gpt4 book ai didi

c# - 为什么 System.AppDomain.CurrentDomain.BaseDirectory 返回不同的结果?

转载 作者:行者123 更新时间:2023-11-30 14:35:42 25 4
gpt4 key购买 nike

我将数据库的路径(包含一些 xml 文件的文件夹)存储在 app.config 中。在启动时,我检查路径是否存在。如果它不存在,我想将路径设置为默认路径。代码如下所示:

public void CheckAndRepairSettings()
{
/* Check Paths */
if(GetDatabasePath() == null)
SetDatabasePath(System.AppDomain.CurrentDomain.BaseDirectory + "DataBase");
}

GetDatabasePath() 从 app.config 读取路径,SetDatabasePath() 将路径写入 app.config。这些方法运行良好。

我的问题是 System.AppDomain.CurrentDomain.BaseDirectory。如果我在我的应用程序 Debug模式下运行它,我会得到:"F:\Office\Projekte_Software\ServiceTool\_Work\ServiceSoftware\ServiceSoftware\bin\Debug\"

我还使用 NUnit 进行一些单元测试。如果我在 Debug模式下运行 NUnit,我会得到:"F:\Office\Projekte_Software\ServiceTool\_Work\ServiceSoftware\ServiceSoftware.UnitTests\bin\Debug"

在 NUnit Debug模式下,路径中没有结尾的反斜杠“\”,因此当我在我的 CheckAndRepairSettings() 中连接路径字符串时,我得到了一个不存在的路径。

为什么这表现如此不同?

最佳答案

您应该使用 Path.Combine 来连接路径,它处理有关现有/不存在(除其他事项外)路径分隔符的问题

为什么一个包含结尾斜线另一个不包含可能与 nUnit 如何创建它运行测试的应用程序域有关

关于c# - 为什么 System.AppDomain.CurrentDomain.BaseDirectory 返回不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11720587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com