【发布时间】:2012-07-28 01:36:42
【问题描述】:
我将数据库的路径(包含一些 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。如果我在我的应用程序调试模式下运行它,我会得到:
"F:\Office\Projekte_Software\ServiceTool\_Work\ServiceSoftware\ServiceSoftware\bin\Debug\"
我还使用 NUnit 进行一些单元测试。如果我在调试模式下运行 NUnit,我会得到: "F:\Office\Projekte_Software\ServiceTool\_Work\ServiceSoftware\ServiceSoftware.UnitTests\bin\Debug"
在 NUnit 调试模式下,路径中没有尾随的反斜杠“\”,因此当我在 CheckAndRepairSettings() 中连接路径字符串时,会得到一个不存在的路径。
为什么它的行为如此不同?
【问题讨论】:
-
这不是问题的答案,但是在创建路径时,应该使用 Path.Combine(path1, path2)。这将解决反斜杠问题,从而避免您的错误。