共用方式為


逐步解說: 將內容類型連結至檔案名稱副檔名

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

您可以定義您自己的內容類型,並使用編輯器 Managed Extensibility Framework (MEF) 延伸模組,將副檔名連結到它。 在某些情況下,檔案的副檔名已經定義的語言服務。不過,使用 MEF 您仍必須將它連結到內容類型。

必要條件

啟動 Visual Studio 2015 中,您未安裝 Visual Studio SDK 從 「 下載中心 」。 它是 Visual Studio 安裝程式的選用功能。 您也可以在稍後安裝 VS SDK。 如需詳細資訊,請參閱安裝 Visual Studio SDK

建立 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. 在此類別中匯出ContentTypeDefinition名為 「 隱藏 」 和 「 文字 」,為其基底定義宣告。

    internal static class FileAndContentTypeDefinitions  
    {  
        [Export]  
        [Name("hid")]  
        [BaseDefinition("text")]  
        internal static ContentTypeDefinition hidingContentTypeDefinition;  
    }  
    

內容類型連結的檔案名稱副檔名

  • 若要將此內容類型對應至檔案的副檔名,匯出FileExtensionToContentTypeDefinition擴充功能的 「.hid 」 和內容類型 「 隱藏 」。

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

將內容類型加入至編輯器匯出

  1. 建立編輯器延伸模組。 例如,您可以使用邊界圖像 (glyph) 延伸模組中所述逐步解說︰ 建立邊界圖像

  2. 加入您在此程序中定義的類別。

  3. 當您匯出的擴充類別時,加入ContentTypeAttribute 「 隱藏 」 給它的型別。

    [Export]  
    [ContentType("hid")]  
    

另請參閱

語言服務及編輯器擴充點