如何将现有 editor/classifier 与新文件扩展名相关联?

How to associate existing editor/classifier with a new file extension?

我希望我的 Visual Studio 扩展能够为带有 .customExt 的文件突出显示 C# 语法。理想的效果很容易实现 VS UI : Tools -> Options -> Text Editor -> File Extension,但是如何从扩展级别实现类似的效果? 是否有可能获得现有的 VS csharp 分类器? 或者也许有一种方法可以将 .customExt 关联到现有的 Microsoft Visual C# 编辑器?

我试过:

[Export]
[FileExtension(".customExt")]
[ContentType("CSharp")]
internal static FileExtensionToContentTypeDefinition hiddenFileExtensionDefinition;

但显然没有达到预期效果

我在此处找到了有关如何将自定义文件类型与现有编辑器相关联的解决方案:

New extension: CSS Is Less

非常简单,只需要在VSIX工程中加入.pkgdef文件即可:

[$RootKey$\Languages\File Extensions\.customExt]
@="{694dd9b6-b865-4c5b-ad85-86356e9c88dc}"

[$RootKey$\Editors\{08467b34-b90f-4d91-bdca-eb8c8cf3033a}\Extensions]
"customExt"=dword:00000027

该文件应设置以下属性:

  • 复制到输出目录:总是复制
  • 包含在 VSIX 中:正确