演练:链接到文件扩展名的内容类型

使用编辑器 managed extensibility framework 扩展,则可以定义拥有内容类型和与之链接文件扩展名 (MEF)。 在某些情况下,文件扩展名已经由语言服务定义的;但是,使用它与 MEF 必须与内容类型仍然链接到。

若要采用本演练,您必须安装 Visual Studio 2010 SDK。 有关更多信息,请参见 扩展 Visual Studio 概述。 若要查找有关中所列如何下载 Visual Studio SDK,请 Visual Studio Extensibility Developer Center 参见 MSDN 网站上。

创建 MEF 项目

创建 MEF 项目

  1. 创建 c# 或 Visual Basic 编辑器分类器项目。 将解决方案命名为 ContentTypeTest。

  2. 打开在 VSIX 清单编辑器中的 source.extension.vsixmanifest 文件。

  3. 确保 Content 归为包含一个 MEF 组件内容类型,而路径设置为 ContentTypeTest.dll。

  4. 保存并关闭的 source.extension.vsixmanifest。

  5. 删除现有类文件。

定义内容类型

定义内容类型

  1. 将类文件并将其命名为 FileAndContentTypes。

  2. 添加以下 using 指令 (在 Visual Basic 中Imports 语句)。

    Imports System.ComponentModel.Composition
    Imports Microsoft.VisualStudio.Text.Classification
    Imports Microsoft.VisualStudio.Utilities
    
    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.Text.Classification;
    using Microsoft.VisualStudio.Utilities;
    
  3. 声明包含定义的静态类 (在 Visual Basic 中为模块)。

    Friend Module FileAndContentTypeDefinitions
    
    End Module
    
    internal static class FileAndContentTypeDefinitions
    
  4. 此类,请导出一个名为的 ContentTypeDefinition “隐藏”并声明其基定义为 “text”。

    <Export(), Name("hid"), BaseDefinition("text")>
    Friend myDefinition1 As ContentTypeDefinition
    
    [Export]
    [Name("hid")]
    [BaseDefinition("text")]
    internal static ContentTypeDefinition hidingContentTypeDefinition;
    

链接到内容类型的文件扩展名

与内容类型链接文件扩展名

  • 若要将此内容类型到具有扩展名 “.hid”的文件扩展名,请导出 FileExtensionToContentTypeDefinition 和 “隐藏”该内容类型。

    <Export(), FileExtension(".hid"), ContentType("hid")>
    Friend myDefinition2 As FileExtensionToContentTypeDefinition
    
    [Export]
    [FileExtension(".hid")]
    [ContentType("hid")]
    internal static FileExtensionToContentTypeDefinition hiddenFileExtensionDefinition;
    

添加内容类型导出到编辑器

添加内容类型到编辑器扩展

  1. 创建一个编辑器扩展。

  2. 在导出时,将 “隐藏”类型 ContentTypeAttribute 到它。

    <Export(), ContentType("hid")>
    Friend myDefinition3 As FileExtensionToContentTypeDefinition
    
    [Export]
    [ContentType("hid")]
    

请参见

概念

编辑扩展点