다음을 통해 공유


비주얼 디자이너에 형식 노출

Visual Studio는 비주얼 디자이너를 표시하기 위해 디자인 타임에 클래스 및 형식 정의에 액세스할 수 있어야 합니다. 클래스는 현재 프로젝트의 전체 종속성 집합(참조 및 해당 종속성)을 포함하는 미리 정의된 어셈블리 집합에서 로드됩니다. 또한 비주얼 디자이너가 사용자 지정 도구에서 생성된 파일에 정의된 클래스 및 형식에 액세스해야 할 수도 있습니다.

Visual Basic 및 Visual C# 프로젝트 시스템은 임시 PE(임시 이식 가능 파일)를 통해 생성된 클래스 및 형식에 액세스하는 것을 지원합니다. 사용자 지정 도구에서 생성된 모든 파일을 임시 어셈블리로 컴파일하여 해당 어셈블리에서 형식을 로드하고 디자이너에 노출할 수 있습니다. 각 사용자 지정 도구의 출력은 별도의 임시 PE로 컴파일되며, 이 임시 컴파일의 성공 또는 실패는 생성된 파일의 컴파일 가능 여부에 따라 달라집니다. 프로젝트가 전체적으로 빌드되지는 않더라도 디자이너는 개별 임시 PE를 계속 사용할 수 있습니다.

프로젝트 시스템은 이러한 변경 내용이 사용자 지정 도구를 실행한 결과인 경우 사용자 지정 도구의 출력 파일에 대한 변경 내용을 추적하기 위한 모든 지원을 제공합니다. 사용자 지정 도구를 실행할 때마다 새 임시 PE가 생성되고 적절한 알림이 디자이너에게 전송됩니다.

참고 항목

임시 프로그램 실행 가능 생성 파일이 백그라운드에서 발생하므로 컴파일에 실패할 경우 사용자에게 오류가 보고되지 않습니다.

임시 PE 지원을 활용하는 사용자 지정 도구는 다음 규칙을 따라야 합니다.

  • GeneratesDesignTimeSource는 레지스트리에서 1로 설정해야 합니다.

    이 설정 없이는 프로그램 실행 파일 컴파일이 수행되지 않습니다.

  • 생성된 코드는 전역 프로젝트 설정과 동일한 언어여야 합니다.

    임시 PE는 레지스트리에서 GeneratesDesignTimeSource가 1로 설정된 경우 DefaultExtension에서 사용자 지정 도구가 요청된 확장으로 보고하는 내용에 관계없이 컴파일됩니다. 확장명이 .vb, .cs 또는 .jsl일 필요는 없습니다. 그 어떤 확장명도 될 수 있습니다.

  • 사용자 지정 도구에서 생성된 코드는 유효해야 하며 Generate의 실행이 완료될 때 프로젝트에 있는 참조 집합만 사용하여 자체적으로 컴파일해야 합니다.

    임시 PE가 컴파일되면 컴파일러에 제공되는 유일한 원본 파일은 사용자 지정 도구 출력입니다. 따라서 임시 PE를 사용하는 사용자 지정 도구는 프로젝트의 다른 파일과 독립적으로 컴파일할 수 있는 출력 파일을 생성해야 합니다.