我在app.config中存储了我的数据库路径(包含一些xml文件的文件夹)。在启动时我检查,如果路径存在。如果它不存在,我想将路径设置为默认路径。代码如下所示:
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:\办公室\ Projekte_Software \ ServiceTool \ _Work \ ServiceSoftware \ ServiceSoftware \ BIN \调试\”
我还使用NUnit进行一些单元测试。如果我在调试模式下运行NUnit,我得到: “F:\办公室\ Projekte_Software \ ServiceTool \ _Work \ ServiceSoftware \ ServiceSoftware.UnitTests \ BIN \调试”
在NUnit调试模式的路径中没有尾部反斜杠“\”,所以当我连接CheckAndRepairSettings()
中的路径字符串时,我得到一个不存在的路径。
为什么这种情况如此不同?
答案 0 :(得分:6)
您应该使用Path.Combine来连接路径,它处理有关现有/不存在(以及其他)路径分隔符的问题
为什么一个包含结尾斜杠而另一个不包括nUnit如何创建运行其测试的appdomain
答案 1 :(得分:0)
更好的选择是使用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");
}