4

我将数据库的路径(包含一些 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().

为什么这种行为如此不同?

4

2 回答 2

6

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

为什么一个包含结束斜线而另一个不包含斜线可能与 nUnit 如何创建运行测试的 appdomain 有关

于 2012-07-30T11:34:44.783 回答
-1

更好的选择是使用IsolatedStorage!

例如,您可以使用以下方式编写设置:

using(IsolatedStorageFile f=IsolatedStorageFile.GetUserStoreForDomain())
{

using(var s=new IsolatedStorageFileStream("Myapp.config",FileMode.Create,f))
using(var writer=new StreamWriter(s))
writer.WriteLine("My Settings");
}
于 2012-07-30T11:40:21.973 回答