2009-06-11 4 views
0

"데이터"라고하는 코드 디렉토리의 상대 코드로 XML 파일에 데이터를 저장하는 WPF 응용 프로그램이 있습니다. 로컬 XML 저장소를 사용하여 WPF 응용 프로그램을 개발/배포하는 데 가장 적합한 상대 경로 솔루션은 무엇입니까?

나는 이러한 방법으로 데이터 디렉토리에 상대 경로를 얻을 :

protected string ApplicationPath 
{ 
    get { return System.IO.Path.GetDirectoryName(System.Reflection.Assembly 
      .GetExecutingAssembly().CodeBase); } 
} 

protected string ApplicationDataPath 
{ 
    get { return ApplicationPath + @"..\..\..\Data\"; } 
} 

public string FullXmlDataStorePathAndFileName 
{ 
    get 
    { 
     return ApplicationDataPath + GetItemTypeIdCode() + ".xml"; 
    } 
} 

이 디버그 이후 테스트를 위해 작동 또는 .exe가 다시 프로젝트에 가서 데이터에 액세스합니다 관한 것이다.

XML 파일을 저장할 때 문제 1 번이 발생합니다. "URI 형식이 잘못되었습니다."오류가 발생합니다. "......을 처리 할 수없는 것 같습니다. \ "경로의 일부를 저장하는 경우 :

xmlDoc.Save(FullXmlDataStorePathAndFileName); 

문제 # 2는 그 난 후, (누군가가 압축을 풀고 한 .exe를 두 번 클릭 있도록 예를 들어 다운로드가 사용할 수 있도록) 내 응용 프로그램을 배포 할 때 .xml 파일은 .exe과 동일한 디렉토리에 있거나 Data 디렉토리에 하나씩 더 있어야 응용 프로그램의 각 인스턴스가 자체 XML 파일을 읽고 쓸 수 있습니다.

가장 적합한 솔루션은 무엇입니까? 요구 사항은 다음과 같습니다

  • XML 파일이 프로젝트와 투명에서 로컬로해야한다, 예를 들어, 개발 및 테스트 할 때 개발하는 동안, 때문에, 기본 데이터는 예를 들어,의 경우 F5 키를 눌러

  • 직선 전달 방법 항상 새로 고쳐 "최근 경우 복사" "출력 디렉토리에 복사"있는 Visual Studio에서 XML 파일을 편집하고 사람이 개발했습니다

시작시 "릴리스"디렉토리와 파일 (.EXE 및 원본 XML 파일)을 모두가하고 XML 파일에 .EXE 점에서 경로를 압축하는 이와 같은 상대 디렉토리에 로컬 XML 데이터 소스가 있으면 좋은 해결책입니까?

답변

2

별도의 구성 파일에 XML 경로가있을 수 있습니까?

또는 조건부 (#if DEBUG/#endif)를 사용하여 디버그 버전에 대한 별도의 로직을 사용할 수 있습니다.

그러나 (시스템 디스크) \ Users \ UserName \ AppData \ Roaming \ AppName (등)과 같은 데이터에 더 적합한 장소를 권합니다. 앱이 Program Files에 설치되어 있다면 앱에 파일을 저장하기위한 추가 권한이 필요합니다. Vista에서는 계정이 admin (UAP 사용) 인 경우에도 권한 상승으로 앱을 실행해야합니다.

1

XML 파일이 "출력 디렉토리에 복사 - 새 파일이면 복사"로 설정되어 있으면 bin \ Debug 폴더에서 직접 액세스 할 수 있어야합니다. 따라서 xml 파일은 디버깅 할 때와 배포 할 때 exe와 동일한 폴더에서 참조 할 수 있습니다.

관련 문제