Stephen Ellis
Stephen Ellis

Reputation: 2711

Visual Studio treat custom extension as CSharp

I've got files with a custom extension .mcsx that are really CSharp files. I want to get code completion on these files in Visual Studio 2012, but these files are treated as plain text when I open them in VS.

I've tried to create a custom MEF extension which allows me to treat the files as having a content-type based on csharp, but I don't get autocompletion or code formatting for these documents. I might need to invoke the custom CSharp classifier for my custom content type, but I'm not sure. Can anyone help?

The custom ContentType is below:

static class ContentType
{
    public const string Name = "CSScript";

    [Export]
    [Name(Name)]
    [DisplayName("CSharp Script")]
    [BaseDefinition("CSharp")]
    public static ContentTypeDefinition CSharpContentType = null;


    [Export]
    [ContentType(Name)]
    [FileExtension(".mcsx")]
    public static FileExtensionToContentTypeDefinition CSharpFileExtension = null;

}

Upvotes: 3

Views: 360

Answers (2)

Stephen Ellis
Stephen Ellis

Reputation: 2711

Thanks to 'Ego' on the VS forums:

You can add the custom extension file via the way below:

http://blogs.msdn.com/b/zainnab/archive/2010/08/22/using-custom-file-extension-associations-vstipenv0038.aspx

For more information about Registering a Language Service please view:

http://msdn.microsoft.com/en-us/library/vstudio/bb166421(v=vs.110).aspx

Upvotes: 2

Jason Malinowski
Jason Malinowski

Reputation: 19021

So inside of VS things are actually a bit different than the editor APIs imply -- we don't actually use content types (for the most part) to determine when to activate. Noah Richards has a great blog post that shows how to create an extension that marks another extension under an existing editor.

Upvotes: 0

Related Questions