Przewodnik: łączenie typu zawartości z rozszerzeniem nazwy pliku

Możesz zdefiniować własny typ zawartości i połączyć z nim rozszerzenie nazwy pliku przy użyciu rozszerzeń zarządzanych przez edytor rozszerzeń (MEF). W niektórych przypadkach rozszerzenie nazwy pliku jest już zdefiniowane przez usługę językową. Jednak aby używać go z mef, nadal musisz połączyć go z typem zawartości.

Tworzenie projektu MEF

  1. Utwórz projekt VSIX w języku C#. (W Okno dialogowe Nowy projekt , wybierz pozycję Visual C# / Rozszerzalność, a następnie projekt VSIX. Nadaj rozwiązaniu ContentTypeTestnazwę .

  2. W pliku source.extension.vsixmanifest przejdź do karty Zasoby i ustaw pole Typ na Microsoft.VisualStudio.MefComponent, pole Źródło na Projekt w bieżącym rozwiązaniu, a pole Project na nazwę projektu.

Definiowanie typu zawartości

  1. Dodaj plik klasy i nadaj mu FileAndContentTypesnazwę .

  2. Dodaj odwołania do następujących zestawów:

    1. System.componentmodel.composition

    2. Microsoft.VisualStudio.Text.Logic

    3. Microsoft.VisualStudio.CoreUtility

  3. Dodaj następujące using dyrektywy.

    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.Text.Classification;
    using Microsoft.VisualStudio.Utilities;
    
    
  4. Zadeklaruj klasę statyczną zawierającą definicje.

    internal static class FileAndContentTypeDefinitions
    {. . .}
    
  5. W tej klasie wyeksportuj nazwę "ukryj" i zadeklaruj swoją podstawową ContentTypeDefinition definicję jako "tekst".

    internal static class FileAndContentTypeDefinitions
    {
        [Export]
        [Name("hid")]
        [BaseDefinition("text")]
        internal static ContentTypeDefinition hidingContentTypeDefinition;
    }
    
  • Aby zamapować ten typ zawartości na rozszerzenie nazwy pliku, wyeksportuj FileExtensionToContentTypeDefinition rozszerzenie o rozszerzeniu hid i typ zawartości "hid ".

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

Dodawanie typu zawartości do eksportu edytora

  1. Utwórz rozszerzenie edytora. Na przykład można użyć rozszerzenia glyph marginesu opisanego w przewodniku: Tworzenie marginesu glyph.

  2. Dodaj klasę zdefiniowaną w tej procedurze.

  3. Podczas eksportowania klasy rozszerzenia dodaj ContentTypeAttribute do niej typ "ukrył".

    [Export]
    [ContentType("hid")]