2010-07-30 5 views
0

Visual Studio 2008의 VB.NET을 사용하여 검색 및 복구 응용 프로그램에 대한 광범위한 매핑 및 추적 기능을 제공하는 사용자 지정 컨트롤을 만들었습니다. 내가 겪고있는 문제는 컨트롤이 제대로 작동하는 데 필요한 여러 디렉토리를 찾기 위해 실행 가능한 주요 응용 프로그램의 경로를 정의해야한다는 것입니다. 모든 것은 내가 VS에서 사용하고 때 잘 작동하지만, 나는 다음과 같은 오류 얻을 별도의 솔루션의 형태로 컨트롤을 포함 할 때 :사용자 지정 컨트롤의 실행 파일 경로 정의

Failed to create component 'MainControl'. The error message follows: 'System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Program Files\Microsoft\Visual Studio 9.0\Common\IDE\GIS\Data\Default...

이 그것의 \ GIS를 찾고 있음을 나타내는 것을 Visual Studio 프로그램 경로의 \ Data \ Default 디렉터리에 있지만 Application.StartupPath를 사용하여 컨트롤 전체에서이 위치를 정의했습니다.

이 오류는 컨트롤 솔루션 외부의 폼에 컨트롤을 포함하려고 할 때만 발생합니다. 이 컨트롤을 개발하기 위해 만든 솔루션에는 두 개의 프로젝트가 있습니다 (하나는 컨트롤 용이고 다른 하나는 디버깅을 수행하기위한 테스트 폼 용).

아무에게도 이것에 대한 지침을 제공 할 수 있습니까?

답변

1

컨트롤이 디자이너에서 사용되는 동안 코드를 실행하면 이러한 현상이 발생합니다. Visual Studio의 폼에 컨트롤을 놓을 때 생성자, Load 이벤트, Paint 이벤트 등이 실행됩니다.

이 코드가 실행되지 않도록하려면 DesignMode 속성을 사용해야하고 현재 작업 디렉터리가 잘못된 경우 충돌이 발생해야합니다. 그것은 디자이너에서 잘못 될 것이고, 작업 디렉토리는 결국 Visual Studio가 아니라 결국 사용되는 응용 프로그램입니다. 또는 상대 경로가 아닌 절대 경로를 사용하십시오.

도움이되지 않는 경우 디자인 시간 문제를 디버그하는 방법은 explained here입니다.

+0

트릭을 한 Hans에게 감사드립니다. 그것은 다소 재미 있습니다. 저는 VB.NET에서 약 3 년 동안 개발해 왔으며, 이번이 처음이 문제에 직면했습니다. 어쨌든, 당신의 솔루션이 옳았습니다. – Gerry