문서 수준 사용자 지정 아키텍처
업데이트: 2007년 11월
적용 대상 |
---|
이 항목의 정보는 Microsoft Office의 지정된 Visual Studio Tools for Office 프로젝트 및 버전에만 적용됩니다. 프로젝트 형식
Microsoft Office 버전
자세한 내용은 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오. |
Visual Studio Tools for Office에는 Microsoft Office Word 및 Microsoft Office Excel용 문서 수준 사용자 지정을 만들기 위한 프로젝트가 포함되어 있습니다. 이 항목에서는 Visual Studio Tools for Office 사용자 지정의 다음 사항에 대해 설명합니다.
사용자 지정 이해
사용자 지정의 구성 요소
사용자 지정이 2007 Microsoft Office system과 작동하는 방식
사용자 지정이 Microsoft Office 2003과 작동하는 방식
Visual Studio Tools for Office 사용자 지정 사용에 대한 일반적인 내용은 Office 솔루션 개발 개요, Word용 문서 수준 사용자 지정 프로그래밍 시작 및 Excel용 문서 수준 사용자 지정 프로그래밍 시작을 참조하십시오.
사용자 지정 이해
Visual Studio Tools for Office를 사용하여 사용자 지정을 빌드할 때는 특정 문서와 연결되는 관리 코드 어셈블리를 만듭니다. 연결된 어셈블리가 문서 또는 통합 문서에 있을 경우 관리 코드 확장이 포함되어 있다고 합니다. 자세한 내용은 Office 솔루션의 어셈블리 개요를 참조하십시오.
문서를 열면 Microsoft Office 응용 프로그램에서 어셈블리를 로드합니다. 어셈블리가 로드된 후에는 문서가 열려 있는 동안 사용자 지정에서 이벤트에 응답할 수 있습니다. 사용자 지정에서는 문서가 열려 있는 동안 개체 모델을 호출하여 응용 프로그램을 자동화 및 확장하며 .NET Framework의 클래스를 사용할 수도 있습니다.
어셈블리와 응용 프로그램의 COM 구성 요소 사이의 통신은 응용 프로그램의 주 interop 어셈블리를 통해 이루어집니다. 자세한 내용은 Office 주 Interop 어셈블리 및 Office 솔루션 개발 개요를 참조하십시오.
Visual Studio Tools for Office에서는 각 어셈블리를 서로 다른 응용 프로그램 도메인에 로드합니다. 따라서 한 솔루션이 올바르지 않게 동작해도 다른 솔루션이 잘못 동작하게 되지 않습니다. 또한 문서가 닫힐 때 모든 코드가 종료되고 어셈블리가 메모리에서 언로드됩니다 문서 수준 사용자 지정은 단일 응용 프로그램 도메인의 단일 문서에서 작동합니다. 문서 간의 통신을 위해 디자인되지는 않았습니다. 응용 프로그램 도메인에 대한 자세한 내용은 응용 프로그램 도메인 개요를 참조하십시오.
![]() |
---|
Visual Studio Tools for Office를 사용하여 만든 문서 수준 사용자 지정은 최종 사용자가 응용 프로그램을 시작할 경우에만 사용됩니다. 자동화 기능을 사용하는 등 프로그래밍 방식으로 응용 프로그램을 시작하면 사용자 지정이 예상대로 작동하지 않을 수 있습니다. |
디자인 타임 및 런타임 환경
Visual Studio Tools for Office 솔루션의 아키텍처를 이해하는 데는 솔루션을 디자인하고 실행하는 환경을 이해하는 것이 도움이 됩니다.
디자인 타임
디자인 타임 환경에는 다음 단계가 포함됩니다.
개발자가 Visual Studio에서 문서 수준 프로젝트를 만듭니다. 프로젝트에는 문서에 숨겨진 채 실행되는 어셈블리와 문서가 포함됩니다. 문서가 이미 있을 수도 있고(디자이너가 만든 경우 등) 프로젝트와 함께 새 문서를 만들 수도 있습니다.
디자이너(프로젝트를 만드는 개발자 또는 기타 관련자)가 최종 사용자를 위한 문서의 최종 모양 및 느낌을 만듭니다.
런타임
런타임 환경에는 다음 단계가 포함됩니다.
최종 사용자가 관리 코드 확장이 있는 문서나 통합 문서를 엽니다.
컴파일된 어셈블리가 문서 또는 통합 문서에 로드됩니다.
사용자가 문서 또는 통합 문서에서 작업할 때 어셈블리에서 이벤트에 응답합니다.
개발자 및 최종 사용자의 관점 비교
개발자는 주로 Visual Studio에서 작업하고 최종 사용자는 Word나 Excel에서 작업하므로 문서 수준 사용자 지정을 두 가지 관점에서 이해하는 것이 좋습니다.
개발자의 관점 |
최종 사용자의 관점 |
---|---|
개발자는 Visual Studio를 사용하여 Word와 Excel에 액세스할 수 있는 코드를 작성합니다. 개발자가 Word 또는 Excel을 실행하는 실행 파일을 만드는 것처럼 보일 수 있지만 실제로 이 프로세스는 다른 방식으로 진행됩니다. 문서는 어셈블리와 연결되고 해당 어셈블리에 대한 포인터가 포함됩니다. 문서를 열면 Word 또는 Excel을 통해 어셈블리가 검색되고 모든 처리된 이벤트에 대한 응답으로 코드가 실행됩니다. |
솔루션을 사용하는 사용자는 다른 Microsoft Office 파일을 열 때와 마찬가지로 문서 또는 통합 문서를 열기만 하면 됩니다. 또는 서식 파일을 통해 새 문서를 만들 수도 있습니다. 어셈블리에서는 문서 또는 통합 문서에 현재 데이터를 자동으로 입력하거나 정보를 요청하는 대화 상자를 표시하는 것과 같은 사용자 지정을 제공합니다. |
문서 수준 사용자 지정에 지원되는 문서 형식
사용자 지정 프로젝트를 만드는 경우 프로젝트에 사용할 문서의 형식을 선택할 수 있습니다. 자세한 내용은 방법: Visual Studio Tools for Office 프로젝트 만들기를 참조하십시오.
다음 표에서는 Excel용 문서 수준 사용자 지정에 사용할 수 있는 문서 형식을 보여 줍니다.
Excel 2007 |
Excel 2003 |
---|---|
Excel 통합 문서(.xlsx) Excel 매크로 사용 통합 문서(.xlsm) Excel 이진 통합 문서(.xlsb) Excel 97 - 2003 통합 문서(.xls) Excel 서식 파일(.xltx) Excel 매크로 사용 서식 파일(.xltm) Excel 97 - 2003 서식 파일(.xlt) |
Excel 통합 문서(.xls) Excel 서식 파일(.xlt) |
다음 표에서는 Word용 문서 수준 사용자 지정에 사용할 수 있는 문서 형식을 보여 줍니다.
Word 2007 |
Word 2003 |
---|---|
Word 문서(.docx) Word 매크로 사용 문서(.docm) Word 97-2003 문서(.doc) Word 서식 파일(.dotx) Word 매크로 사용 서식 파일(.dotm) Word 97-2003 서식 파일(.dot) |
Word 문서(.doc) Word 서식 파일(.dot) |
2007 Microsoft Office 사용자 지정이 Microsoft Office 2003에서 만든 문서를 기반으로 하는 경우 Visual Studio Tools for Office에서는 문서의 파일 형식을 변경하지 않습니다.
관리 코드 확장은 지원되는 형식의 문서에 대해서만 디자인해야 합니다. 그렇지 않으면 문서를 응용 프로그램에서 여는 경우 특정 이벤트가 발생하지 않을 수 있습니다. 예를 들어 관리 코드 확장을 Excel XML 스프레드시트 형식이나 웹 페이지(.htm, .html) 형식으로 저장된 통합 문서에 사용하면 Open 이벤트가 발생하지 않습니다.
파일 확장명이 .xml인 Word 문서 지원
Word 2003 및 Word 2007용 문서 수준 프로젝트 템플릿을 사용하여 다음 파일 형식을 기반으로 하는 프로젝트를 만들 수는 없습니다.
Word XML 문서(*xml)
Word 2003 XML 문서(*xml)
최종 사용자가 이러한 파일 형식의 사용자 지정을 사용할 수 있도록 하려면 위의 표에 지정된 지원되는 파일 형식 중 하나를 사용하는 사용자 지정을 빌드하고 배포합니다. 사용자 지정을 설치한 후 최종 사용자는 문서를 Word XML 문서(*xml) 형식(Word 2007의 경우) 또는 Word 2003 XML 문서(*xml) 형식(Word 2003의 경우)으로 저장할 수 있으며 사용자 지정은 계속해서 예상대로 작동합니다.
사용자 지정의 구성 요소
사용자 지정의 주요 구성 요소는 문서 및 어셈블리입니다. 이러한 구성 요소외에도 Microsoft Office 응용 프로그램에서 사용자 지정을 검색하여 로드하는 방식에 중요한 역할을 하는 다른 부분이 여러 개 있습니다.
배포 매니페스트 및 응용 프로그램 매니페스트
사용자 지정에서는 배포 매니페스트 및 응용 프로그램 매니페스트를 사용하여 최신 버전의 사용자 지정 어셈블리를 식별하고 로드합니다. 배포 매니페스트는 현재 응용 프로그램 매니페스트를 가리킵니다. 응용 프로그램 매니페스트는 사용자 지정 어셈블리를 가리키며 어셈블리에서 실행할 진입점 클래스를 지정합니다. 자세한 내용은 Office 솔루션의 응용 프로그램 및 배포 매니페스트를 참조하십시오.
Visual Studio Tools for Office 런타임
Visual Studio Tools for Office를 사용하여 만든 사용자 지정을 실행하려면 최종 사용자 컴퓨터에 Visual Studio Tools for Office 런타임이 설치되어 있어야 합니다. Visual Studio Tools for Office 런타임에는 사용자 지정 어셈블리를 로드하는 관리되는 구성 요소 및 일련의 관리되는 어셈블리가 포함되어 있습니다. 관리되는 어셈블리에서는 사용자 지정 코드에서 호스트 응용 프로그램을 자동화 및 확장하는 데 사용하는 개체 모델을 제공합니다.
자세한 내용은 Visual Studio Tools for Office 런타임 개요를 참조하십시오.
사용자 지정이 2007 Microsoft Office system과 작동하는 방식
사용자가 2007 Microsoft Office 사용자 지정의 일부인 문서를 열면 응용 프로그램에서는 문서에 연결된 배포 매니페스트를 사용하여 최신 버전의 사용자 지정 어셈블리를 찾아 로드합니다 배포 매니페스트의 위치는 _AssemblyLocation이라는 사용자 지정 문서 속성에 저장됩니다. 이 위치를 식별하는 문자열은 솔루션을 빌드할 때 해당 속성에 삽입됩니다.
배포 매니페스트는 응용 프로그램 매니페스트를 가리키며 응용 프로그램 매니페스트는 최신 어셈블리를 가리킵니다. 자세한 내용은 Office 솔루션의 응용 프로그램 및 배포 매니페스트를 참조하십시오.
다음 그림에서는 2007 Microsoft Office system 문서용 사용자 지정의 기본 아키텍처를 보여 줍니다.
2007 Microsoft Office system용 사용자 지정 아키텍처
2007 Microsoft Office system의 사용자 지정에 대한 로드 프로세스
사용자가 2007 Microsoft Office 솔루션의 일부인 문서를 열면 다음 단계가 수행됩니다.
Microsoft Office 응용 프로그램에서 사용자 지정 문서 속성을 검사하여 해당 문서와 연결된 관리 코드 확장이 있는지 여부를 확인합니다. 자세한 내용은 사용자 지정 문서 속성 개요를 참조하십시오.
관리 코드 확장이 있는 경우 응용 프로그램에서는 VSTOLoader.dll을 로드하는 VSTOEE.dll을 로드합니다. 이들 DLL은 Microsoft Visual Studio Tools for the Microsoft Office system (버전 3.0 런타임)의 로더 구성 요소인 관리되지 않는 DLL입니다. 자세한 내용은 Visual Studio Tools for Office 런타임 개요를 참조하십시오.
VSTOLoader.dll은 .NET Framework를 로드하고 Visual Studio Tools for Office 런타임의 관리되는 부분을 시작합니다.
문서가 로컬 컴퓨터가 아닌 위치에서 열린 경우 Visual Studio Tools for Office 런타임에서는 문서의 위치가 해당 특정 Office 응용 프로그램에 대한 보안 센터 설정의 신뢰할 수 있는 위치 목록에 있는지 확인합니다. 해당 위치가 신뢰할 수 있는 위치 목록에 없는 경우 사용자 지정은 신뢰되지 않으며 로드 프로세스가 중지됩니다.
Visual Studio Tools for Office 런타임에서는 솔루션이 아직 설치되지 않은 경우 해당 솔루션을 설치하고, 최신 응용 프로그램 및 배포 매니페스트를 다운로드하고, 일련의 보안 검사를 수행합니다. 자세한 내용은 Office 솔루션의 보안(2007 시스템)을 참조하십시오.
사용자 지정이 실행할 수 있는 것으로 신뢰된 경우 Visual Studio Tools for Office 런타임에서 배포 매니페스트 및 응용 프로그램 매니페스트를 사용하여 어셈블리 업데이트를 확인합니다. 새 버전의 어셈블리를 사용할 수 있으면 런타임에서는 새 버전의 어셈블리를 클라이언트 컴퓨터의 ClickOnce 캐시로 다운로드합니다. 자세한 내용은 Office 솔루션 배포(2007 시스템)를 참조하십시오.
Visual Studio Tools for Office 런타임에서 사용자 지정 어셈블리를 로드할 새 응용 프로그램 도메인을 만듭니다.
Visual Studio Tools for Office 런타임에서 응용 프로그램 도메인에 사용자 지정 어셈블리를 로드합니다.
Visual Studio Tools for Office 런타임에서 사용자 지정 어셈블리의 Startup 이벤트 처리기를 호출합니다. 자세한 내용은 Visual Studio Tools for Office 프로젝트 이벤트를 참조하십시오.
사용자 지정이 Microsoft Office 2003과 작동하는 방식
사용자가 Microsoft Office 2003 사용자 지정의 일부인 문서를 열면 응용 프로그램에서는 문서에 포함된 응용 프로그램 매니페스트를 사용하여 최신 버전의 사용자 지정 어셈블리를 찾아 로드합니다. 포함된 응용 프로그램 매니페스트는 어셈블리를 직접 가리키거나 어셈블리 업데이트를 찾는 데 사용되는 배포 매니페스트를 가리킬 수 있습니다. 자세한 내용은 Office 솔루션의 응용 프로그램 및 배포 매니페스트를 참조하십시오.
포함된 응용 프로그램 매니페스트는 런타임 저장소 컨트롤이라는 보이지 않는 포함 컨트롤에 들어 있습니다. 자세한 내용은 런타임 저장소 컨트롤 개요를 참조하십시오.
다음 그림에서는 Microsoft Office 2003 문서용 사용자 지정의 기본 아키텍처를 보여 줍니다.
Microsoft Office 2003용 사용자 지정 아키텍처
Microsoft Office 2003의 사용자 지정에 대한 로드 프로세스
사용자가 2003 Microsoft Office 솔루션의 일부인 문서를 열면 다음 단계가 수행됩니다.
Microsoft Office 응용 프로그램에서 사용자 지정 문서 속성을 검사하여 해당 문서와 연결된 관리 코드 확장이 있는지 여부를 확인합니다. 자세한 내용은 사용자 지정 문서 속성 개요를 참조하십시오.
관리 코드 확장이 있는 경우 응용 프로그램에서 AddinLoader.dll을 로드합니다. 이 DLL은 Visual Studio 2005 Tools for Office Second Edition 런타임의 로더 구성 요소인 관리되지 않는 DLL입니다. 자세한 내용은 Visual Studio Tools for Office 런타임 개요를 참조하십시오.
AddinLoader.dll은 .NET Framework를 로드하고 Visual Studio Tools for Office 런타임의 관리되는 부분을 시작합니다.
Visual Studio Tools for Office 런타임에서 응용 프로그램 도메인을 만들고, 내 컴퓨터 영역을 신뢰하지 않도록 응용 프로그램 도메인의 정책을 설정하고, 코드 액세스 보안 정책 저장소를 확인하여 사용자 지정 어셈블리의 정책을 찾습니다.
.NET Framework에서 정책을 기준으로 어셈블리가 제공한 증명 정보의 유효성을 검사합니다. 증명 정보가 유효하지 않으면 오류가 발생하고, 증명 정보가 유효하면 프로세스가 계속됩니다.
사용자 지정에서 배포 매니페스트를 사용하는 경우 Visual Studio Tools for Office 런타임에서 어셈블리 업데이트를 확인합니다. 업데이트가 필요하면 수행됩니다.
Visual Studio Tools for Office 런타임에서 어셈블리를 응용 프로그램 도메인에 로드합니다.
Visual Studio Tools for Office 런타임에서 사용자 지정 어셈블리의 Startup 이벤트 처리기를 호출합니다. 자세한 내용은 Visual Studio Tools for Office 프로젝트 이벤트를 참조하십시오.
참고 항목
개념
Visual Studio Tools for Office 런타임 개요
Visual Studio에서 Office 솔루션 만들기