2009-10-15 1 views
0

저는 ClickOnce (네트워크에서 '온라인'실행)를 통해 응용 프로그램을 배포하고 있습니다. 응용 프로그램에 포함 된 두 개의 텍스트 파일은 게시 될 때 배포 위치에 올바르게 복사됩니다.ClickOnce 응용 프로그램에 포함 된 파일의 경로를 검색 하시겠습니까?

나는 프로그래밍 방식으로 이러한 파일의 경로를 참조하려고 해요 :

Dim t As New HTMLTemplate("ReportTemplates\IncidentDetailMain.txt") 

때때로이 작품, 때로는 응용 프로그램이 DirectoryNotFoundException의 결과로, 사용자의 내 문서 폴더를 볼 것으로 보인다.

아무도 여기서 무슨 일이 일어날 지 설명 할 수 있습니까?

답변

3

가장 좋은 방법은 폴더를 당신에게 URI를 줄 것이다

System.Windows.Forms.Application.StartupPath 

을 사용하는 곳의 실행 응용 프로그램입니다. 그런 다음 해당 참조 파일을 항상 실행 파일과 동일한 상대 경로에 있어야하는 참조 파일을 사용할 수 있습니다.

MSDN: Application.StartupPath

은 윈폼과 WPF 애플리케이션 모두를 사용할 수 있습니다.

System.Environment.CurrentDirectory는 사용자가 파일을 열거 나 저장하도록하면 응용 프로그램 수명 동안 변경 될 수 있으므로 StartupPath가 더 안전합니다.

그래서, 최종 코드는 다음과 같습니다

string filePath = Path.Combine(
    System.Windows.Forms.Application.StartupPath, 
    "ReportTemplates\IncidentDetailMain.txt"); 
.. = new HTMLTemplate(filePath); 
1

가장 안전한 방법은 exe의 경로를 얻은 다음이를 기본으로 사용하는 것입니다. 다음과 같은 위치를 사용하여이 작업을 수행 할 수 있습니다

, System.Environment.CurrentDirectory

+0

감사합니다, 여전히 작동하는 것 같다, 내가 기다린 오류가 다시 발생하면 볼 수 있습니다. – Simon

+0

예, 간헐적으로 문제가 다시 발생합니다. @ andhammar 님의 답변이 해결되기를 바랍니다. – Simon

+0

CurrentDirectory를 사용하는 경우 앱 시작시이를 수행하고 저장해야합니다. 그것은 바뀔지도 모른다 !!! 예를 들어 파일 대화 상자를 열고 폴더로 이동하면 실제로 CurrentDirectory가 변경됩니다 –