2012-06-25 7 views
2

Visual Studio 2008, 제 3 자 dll, xml 파일 및 이미지를 사용하여 C#에서 양식 응용 프로그램을 작성했습니다. 이미지가 리소스로 프로젝트에 추가되었습니다.게시 할 때 system.io.filenotfoundeception 게시

System.IO.FileNotFoundException은 다른 컴퓨터에서 실행 파일의 게시 된 버전을 실행하려고 할 때 발생합니다.

PC의 바탕 화면에 .exe 파일을 복사하고 dll과 xml 파일을 바탕 화면에 복사하는 경우 exe를 두 번 클릭해도 제대로 작동합니다.

내 프로젝트에서 필자는 필요한 dll 참조에 대해 copyLocal을 true로 설정했습니다. xml은 프로젝트에 추가되고 더 새로운 출력 디렉토리 인 경우 복사하도록 설정됩니다. 또한 게시 응용 프로그램 파일을 확인하고 모든 것이 있습니다.

내가 XML 파일을로드하는 데 사용하는 라인은이

config = new XmlDocument(); 
config.Load("fileName.xml"); 
+4

해당 파일을 내용으로 저장하고 항상 복사하십시오 (또는 새 태그 인 경우 복사하십시오) –

+0

"[스택 오버플로가 제목의 태그를 허용하지 않습니다.] (http://meta.stackexchange.com/a/130208)" –

+0

은 다음과 같습니다. 코드에서 파일을 읽으려고하십니까? –

답변

0

난 당신이 XML 파일을로드하려고 할 때 FileNotFound 예외가 오른쪽 던져되고 있으리라 믿고있어?

단순히 "filename.xml"을 찾는 것이 나에게 환상적인 아이디어는 아닙니다. 특히 이것이 애플리케이션의 주요 구성 파일 인 경우 특히 그렇습니다.

일반적으로 이러한 것들을 내 App.config 파일로 옮기고 정규화 된 경로 또는 짧은 경로를 사용하여로드합니다. 예를 들어 :

의 App.config

<add key="ExternalConfig" value="D:\\config.xml"/> 

.cs는 또한 상대 경로를 사용하지만, 당신은 항상 상대 있다는 것을 염두에 두어야 할 수

config = new XmlDocument(); 
config.Load(ConfigurationManager.AppSettings["ExternalConfig"]); 

파일 현재 작업 디렉토리.

또는 구성의 데이터 유형에 따라이 정보를 App.config 파일에 저장하고 config.xml을 모두 제거해보십시오.

+0

". \"이 (가) 파일 이름의 접두사를 붙이면 파일을 찾을 수없는 예외가 해결되는 것을 볼 수 없습니다. 이 두 파일 이름은 동일합니다. –

+0

아, 네 말이 맞아. 나는 그것을 편집 할 것이다. 감사. – RavB

관련 문제