2013-06-28 3 views
1

C#/WPF/VS2010을 사용하여 ArcMap 용 설치 가능 확장 프로그램을 만들고 있습니다. (여기에 베어링이 있거나 없을 수도 있음). 내가하고자하는 한 가지는 사용자 임시 폴더에 데이터를 저장하는 것입니다. 그래서, 난과 같이 폴더를 얻을 :ArcMap Extension GetTempPath가 추가 SubFolder를 반환합니다.

public static string SystemTempPath = Path.GetTempPath(); 

내가 미리보기 창에서이있어 WPF 디자이너에서 (간접적으로) 변수에 모든 및 바인딩 컴파일 할 때 :

"C:\Users\<username>\AppData\Local\Temp\" 

좋아요, 그게 전부 내가 뭘하는지.

"C:\Users\<username>\AppData\Local\Temp\arcA6C5\" 

주 나는 ArcMap의를 다시로드 할 때마다 변경 끝에 추가 폴더 : 나는 ArcMap의에서 확장을 실행할 때 나는 다음과 같은 일을 얻는다. 그래서 이것은 Extension이고 ArcMap 커널의 장점에 다소 차별적 인 것으로 보입니다. ArcMap의 생성 된 temp 폴더가 아니라 사용자 temp var을 사용하고있는 것 같습니다.

내 질문 : 문법적으로 문자열 조작 이외의 문제를 해결할 수있는 방법이 있습니까? 나는이 여분이 항상 거기에있을 것이고 단순히자를 것이라고 추측 할 수 있지만이 방법은 다소 더러워 보인다. 저도 같은 결과는 물론이 시도 :

System.Environment.GetEnvironmentVariable("TEMP"); 
System.Environment.GetEnvironmentVariable("TMP"); 

것은 단지 어쨌든 약간 덜 더러운 될 것이다.

도움 주셔서 감사합니다.

답변

0

문제는 ArcMap이 런타임 환경 (TEMPTMP 환경 변수)을 변경하여 각 실행에 대해 고유 한 임시 폴더를 만드는 것입니다. 임시 폴더를 검색하는 모든 Windows API 호출은 업데이트 된 파일을 의도적으로 반환합니다.

사용자 임시 폴더에 데이터를 저장하고 싶습니다.

대신 데이터를 user's application data folder 내에 저장하는 것이 좋습니다. 이것은 사용자 데이터를 저장하기에 적합한 장소이며 일관성이 있습니다. 다음과 같이 시도하십시오 :

var path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); 
path = Path.Combine(path, @"YourCompany\YourProduct\"); 
+0

감사 리드. 그게 내가 생각한 것. 나는 Temp 폴더를 사용하는 아이디어를 좋아해서 다른 모든 사용자 임시 파일로 정리할 수있다. 나는 이미 설정을 저장하기위한 앱 데이터 폴더를 가지고 있지만, 그때 내가 사용한다면 그것을 정리하는 것에 대해 걱정해야한다. 그것을 좀 더 생각해야합니다. – Ernie