Visual Studio将自定义扩展名视为CSharp

时间:2013-06-20 17:58:16

标签: visual-studio-extensions

我有自定义扩展名.mcsx的文件,它们实际上是CSharp文件。我想在Visual Studio 2012中获取这些文件的代码完成,但是当我在VS中打开它们时,这些文件被视为纯文本。

我尝试创建自定义MEF扩展,允许我将文件视为具有基于csharp的内容类型,但我没有获得这些文档的自动完成或代码格式。我可能需要为自定义内容类型调用自定义CSharp分类器,但我不确定。有人可以帮忙吗?

自定义ContentType如下:

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;

}

2 个答案:

答案 0 :(得分:2)

感谢VS论坛上的'Ego':

您可以通过以下方式添加自定义扩展程序文件:

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

有关注册语言服务的更多信息,请查看:

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

答案 1 :(得分:0)

因此,VS内部实际上与编辑器API有点不同 - 我们实际上并未使用内容类型(大多数情况下)确定何时激活。 Noah Richards有一个great blog post,它显示了如何创建一个扩展,在现有编辑器下标记另一个扩展。