Share via


연습: 콘텐츠 형식을 파일 이름 확장명에 연결

MEF(편집기 Managed Extensibility Framework) 확장을 사용하여 사용자 고유의 콘텐츠 형식을 정의하고 파일 이름 확장명을 연결할 수 있습니다. 경우에 따라 파일 이름 확장명이 언어 서비스에 의해 이미 정의되어 있습니다. 그러나 MEF와 함께 사용하려면 콘텐츠 형식에 연결해야 합니다.

MEF 프로젝트 만들기

  1. C# VSIX 프로젝트를 만듭니다. (새 프로젝트 대화 상자에서 Visual C#/확장성, VSIX 프로젝트를 차례로 선택합니다.) 솔루션 이름을 ContentTypeTest로 지정합니다.

  2. source.extension.vsixmanifest 파일에서 자산 탭으로 이동하고 형식 필드를 Microsoft.VisualStudio.MefComponent로, 소스 필드를 현재 솔루션의 프로젝트로, 프로젝트 필드를 프로젝트 이름으로 설정합니다.

콘텐츠 형식 정의

  1. 클래스 파일을 추가하고 이름을 FileAndContentTypes로 지정합니다.

  2. 다음 어셈블리에 대한 참조를 추가합니다.

    1. System.ComponentModel.Composition

    2. Microsoft.VisualStudio.Text.Logic

    3. Microsoft.VisualStudio.CoreUtility

  3. 다음 using 지시문을 추가합니다.

    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.Text.Classification;
    using Microsoft.VisualStudio.Utilities;
    
    
  4. 정의가 포함된 정적 클래스를 선언합니다.

    internal static class FileAndContentTypeDefinitions
    {. . .}
    
  5. 이 클래스에서 "hid"라는 이름의 ContentTypeDefinition을 내보내고 기본 정의를 "text"로 선언합니다.

    internal static class FileAndContentTypeDefinitions
    {
        [Export]
        [Name("hid")]
        [BaseDefinition("text")]
        internal static ContentTypeDefinition hidingContentTypeDefinition;
    }
    
  • 이 콘텐츠 형식을 파일 이름 확장명에 매핑하려면 확장자가 .hid이고 콘텐츠 형식이 "hid"인 FileExtensionToContentTypeDefinition을 내보냅니다.

    internal static class FileAndContentTypeDefinitions
    {
         [Export]
         [Name("hid")]
         [BaseDefinition("text")]
        internal static ContentTypeDefinition hidingContentTypeDefinition;
    
         [Export]
         [FileExtension(".hid")]
         [ContentType("hid")]
        internal static FileExtensionToContentTypeDefinition hiddenFileExtensionDefinition;
    }
    

편집기 내보내기에 콘텐츠 형식 추가

  1. 편집기 확장을 만듭니다. 예를 들어 연습: 여백 문자 모양 만들기에 설명된 여백 문자 모양 확장을 사용할 수 있습니다.

  2. 이 절차에서 정의한 클래스를 추가합니다.

  3. 확장 클래스를 내보낼 때 "hid" 형식의 ContentTypeAttribute을 추가합니다.

    [Export]
    [ContentType("hid")]