Share via


편집기에서 관리 되는 확장성 프레임 워크

편집기 확장 프레임 워크 (MEF) 관리 되는 구성 요소를 사용 하 여 작성 됩니다. 편집기에서 확장 MEF 구성 요소를 직접 빌드하고 코드 편집기 구성 요소도 사용할 수 있습니다.

관리 되는 확장성 프레임 워크의 개요

MEF는 것을.MEF 프로그래밍 모델을 따르는 구성 요소 또는 NET 라이브러리 추가 하 고 응용 프로그램의 기능을 수정할 수 있습니다. Visual Studio 편집기 제공와 MEF 구성 요소를 사용할 수 있습니다.

MEF는에 포함 되어 있는.NET Framework 버전 4 System.ComponentModel.Composition.dll 어셈블리입니다.

MEF에 대한 자세한 내용은 MEF(Managed Extensibility Framework)를 참조하십시오.

구성 요소 및 구성 컨테이너

구성 요소 부분에서 다음 중 하나 (또는 모두) 할 수 있는 클래스의 멤버 또는 클래스입니다.

  • 다른 구성 요소를 사용 합니다.

  • 다른 구성 요소에서 사용 될

예를 들어, 제품 가용성 데이터 웨어하우스 인벤터리 구성 요소에 의해 제공에 따라 주문 입력 구성 요소를 가진 쇼핑 응용 프로그램을 고려 하십시오. MEF 용어로 재고 부 수 내보내기 제품 가용성 데이터와 주문 항목 일부가 수 가져오기 데이터입니다. 주문 항목 부품 및 부품 재고 알고 서로 대 한 필요는 없습니다. 컴포지션 컨테이너 (호스트 응용 프로그램에 의해 제공) 내보내기, 집합을 유지 관리 하 고 해결 하는 내보내기에 대 한 책임을 지지 하 고 가져옵니다.

구성 컨테이너, CompositionContainer, 일반적으로 호스트에 의해 소유 하 고 있습니다. 구성 컨테이너 유지는 카탈로그 내보낸된 구성 요소입니다.

구성 요소 파트 내보내기 및 가져오기

공용 클래스 또는 클래스 (속성 또는 메서드)의 공개 구성원으로 구현 되는 모든 기능을 내보낼 수 있습니다. 구성 요소 부품에서 파생 되지 않은 ComposablePart. 추가 해야 대신에 ExportAttribute 클래스 또는 내보낼 클래스 멤버에 특성. 이 특성은 지정은 계약 는 다른 구성 요소에서 기능 일부를 가져올 수 있습니다.

내보낼 계약

ExportAttribute 내보낼 엔티티 (클래스, 인터페이스 또는 구조체)를 정의 합니다. 일반적으로 내보내기 속성 내보내기 형식을 지정 하는 매개 변수를 사용 합니다.

[Export(typeof(ContentTypeDefinition))]
class TestContentTypeDefinition : ContentTypeDefinition {   }

기본적으로 ExportAttribute 특성 내보내기 클래스 형식이 있는 계약을 정의 합니다.

[Export]
[Name("Structure")]
[Order(After = "Selection", Before = "Text")]
class TestAdornmentLayerDefinition : AdornmentLayerDefinition {   }

기본 예제에서 [Export] 특성에 해당 하는 [Export(typeof(TestAdornmentLayerDefinition))].

다음 예제에서와 같이 속성 또는 메서드를 내보낼 수도 있습니다.

[Export]
[Name("Scarlet")]
[Order(After = "Selection", Before = "Text")]
public AdornmentLayerDefinition scarletLayerDefinition;

MEF 내보내기 가져오기

MEF 내보내기를 사용 하는 경우는 내보낸 된 고 추가 계약 (일반적으로 형식)를 알고 있어야는 ImportAttribute 특성 값입니다. 기본적으로 가져오기 특성 수정 클래스 형식이 하나의 매개 변수를 사용 합니다. 다음 줄을 코드 가져오기는 IClassificationTypeRegistryService 형식입니다.

[Import]
internal IClassificationTypeRegistryService ClassificationRegistry;

MEF 컴포넌트 부품을 편집기 기능 가져오기

기존 코드를 MEF 구성 요소의 일부인 경우 MEF 메타 데이터 편집기 구성 요소를 사용할 수 있습니다.

MEF 컴포넌트 부품의 편집기 기능 사용 하기

  1. 전역 어셈블리 캐시 (GAC)에 System.Composition.ComponentModel.dll 하 고 편집기의 어셈블리에 참조를 추가 합니다.

  2. 있는 관련 추가 문을 사용 하 여.

    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.Text;
    
  3. 추가 [Import] 서비스 인터페이스를 다음과 같은 특성이 있습니다.

    [Import]
    ITextBufferFactoryService textBufferService;
    
  4. 서비스를 가져온 그 구성 요소 중 하나를 사용할 수 있습니다.

  5. 저장 어셈블리를 컴파일할 했습니다 때의. Visual Studio 설치의 \Common7\IDE\Components\ 폴더에 있습니다.

참고 항목

개념

편집기 확장 지점