Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
You can define your own content type and link a file name extension to it by using the editor Managed Extensibility Framework (MEF) extensions. In some cases, the file name extension is already defined by a language service. But, to use it with MEF, you must still link it to a content type.
Create a MEF project
Create a C# VSIX project. (In the New Project dialog, select Visual C# / Extensibility, then VSIX Project.) Name the solution
ContentTypeTest
.In the source.extension.vsixmanifest file, go to the Assets tab, and set the Type field to Microsoft.VisualStudio.MefComponent, the Source field to A project in current solution, and the Project field to the name of the project.
Define the content type
Add a class file and name it
FileAndContentTypes
.Add references to the following assemblies:
System.ComponentModel.Composition
Microsoft.VisualStudio.Text.Logic
Microsoft.VisualStudio.CoreUtility
Add the following
using
directives.using System.ComponentModel.Composition; using Microsoft.VisualStudio.Text.Classification; using Microsoft.VisualStudio.Utilities;
Declare a static class that contains the definitions.
internal static class FileAndContentTypeDefinitions {. . .}
In this class, export a ContentTypeDefinition named "hid" and declare its base definition to be "text".
internal static class FileAndContentTypeDefinitions { [Export] [Name("hid")] [BaseDefinition("text")] internal static ContentTypeDefinition hidingContentTypeDefinition; }
Link a file name extension to a content type
To map this content type to a file name extension, export a FileExtensionToContentTypeDefinition that has the extension .hid and the content type "hid".
internal static class FileAndContentTypeDefinitions { [Export] [Name("hid")] [BaseDefinition("text")] internal static ContentTypeDefinition hidingContentTypeDefinition; [Export] [FileExtension(".hid")] [ContentType("hid")] internal static FileExtensionToContentTypeDefinition hiddenFileExtensionDefinition; }
Add the content type to an editor export
Create an editor extension. For example, you can use the margin glyph extension described in Walkthrough: Create a margin glyph.
Add the class you defined in this procedure.
When you export the extension class, add a ContentTypeAttribute of type "hid" to it.
[Export] [ContentType("hid")]