2012-07-30 2 views
3

app.config에 내 데이터베이스 경로 (일부 XML 파일이있는 폴더)를 저장합니다. 시작할 때 경로가 있는지 확인합니다. 존재하지 않으면 경로를 기본 경로로 설정하려고합니다. 코드는 다음과 같습니다System.AppDomain.CurrentDomain.BaseDirectory가 다른 결과를 반환하는 이유는 무엇입니까?

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를 실행하면 내가 얻을 : : NUnit과의 경로에서

더 후행 백 슬래시가 없다 "\" "F \ 사무소 \ Projekte_Software \ ServiceTool \ _Work \ ServiceSoftware \ ServiceSoftware.UnitTests 빈 \ 디버그 \" 디버그 모드, 그래서 내 기존 경로가 내 CheckAndRepairSettings() 경로 문자열을 연결할 때 얻을.

왜 이렇게 다른 행동을합니까? 하나가 다른 하나를 삭감하는 것은 아마 어떻게 관련이없는 엔딩 포함 왜

+0

아니고 대답하지만 경로를 만드는, 그래서 Path.Combine (경로 1, 경로 2)을 사용해야합니다. 이렇게하면 백 슬래시 문제가 처리되어 오류를 방지 할 수 있습니다. – Maarten

답변

4

당신은 경로를 연결하는 Path.Combine를 사용해야합니다, 그것은 기존의/(무엇보다도) 존재하지 않는 경로 구분

에 관한 문제를 처리 nUnit은 테스트를 실행하는 appdomain을 만듭니다.

+0

감사합니다. 'Path.Combine'을 사용하여이 문제를 해결했습니다. – Batuu

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"); 
} 
관련 문제