연습: 콘텐츠 형식을 파일 이름 확장명에 연결
MEF(편집기 Managed Extensibility Framework) 확장을 사용하여 사용자 고유의 콘텐츠 형식을 정의하고 파일 이름 확장명을 연결할 수 있습니다. 경우에 따라 파일 이름 확장명이 언어 서비스에 의해 이미 정의되어 있습니다. 그러나 MEF와 함께 사용하려면 콘텐츠 형식에 연결해야 합니다.
MEF 프로젝트 만들기
C# VSIX 프로젝트를 만듭니다. (새 프로젝트 대화 상자에서 Visual C#/확장성, VSIX 프로젝트를 차례로 선택합니다.) 솔루션 이름을
ContentTypeTest
로 지정합니다.source.extension.vsixmanifest 파일에서 자산 탭으로 이동하고 형식 필드를 Microsoft.VisualStudio.MefComponent로, 소스 필드를 현재 솔루션의 프로젝트로, 프로젝트 필드를 프로젝트 이름으로 설정합니다.
콘텐츠 형식 정의
클래스 파일을 추가하고 이름을
FileAndContentTypes
로 지정합니다.다음 어셈블리에 대한 참조를 추가합니다.
System.ComponentModel.Composition
Microsoft.VisualStudio.Text.Logic
Microsoft.VisualStudio.CoreUtility
다음
using
지시문을 추가합니다.using System.ComponentModel.Composition; using Microsoft.VisualStudio.Text.Classification; using Microsoft.VisualStudio.Utilities;
정의가 포함된 정적 클래스를 선언합니다.
internal static class FileAndContentTypeDefinitions {. . .}
이 클래스에서 "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; }
편집기 내보내기에 콘텐츠 형식 추가
편집기 확장을 만듭니다. 예를 들어 연습: 여백 문자 모양 만들기에 설명된 여백 문자 모양 확장을 사용할 수 있습니다.
이 절차에서 정의한 클래스를 추가합니다.
확장 클래스를 내보낼 때 "hid" 형식의 ContentTypeAttribute을 추가합니다.
[Export] [ContentType("hid")]