为所有项目类型注册扩展程序提供程序

Tho*_*que 5 c# visual-studio vs-extensibility vsix visual-studio-extensions

我有一个Visual Studio扩展,它将属性添加到项目项的属性网格中.这是通过注册这样的扩展程序提供程序来完成的:

    void RegisterExtenderProvider()
    {
        var provider = new PropertyExtenderProvider(_dte, this);
        string name = PropertyExtenderProvider.ExtenderName;
        RegisterExtenderProvider(VSConstants.CATID.CSharpFileProperties_string, name, provider);
        RegisterExtenderProvider(VSConstants.CATID.VBFileProperties_string, name, provider);
    }

    void RegisterExtenderProvider(string extenderCatId, string name, IExtenderProvider extenderProvider)
    {
        int cookie = _dte.ObjectExtenders.RegisterExtenderProvider(extenderCatId, name, extenderProvider);
        _registerExtenderProviders.Add(cookie, extenderProvider);
    }
Run Code Online (Sandbox Code Playgroud)

它适用于C#和VB项目,但仅限于那些......

  • 是否可以使其适用于所有项目类型?
  • 如果没有,我在哪里可以找到其他项目类型的CATID?

Sam*_*ell 2

为所有项目类型注册扩展程序提供程序是没有意义的。

  • 项目类型可能受 MSBuild 支持,也可能不支持。
  • 项目类型可能有也可能没有项目文件(网站项目没有项目文件)。
  • 项目类型可能会也可能不会产生可执行输出。各种项目类型的示例包括*.wixproj*.ucproj*.javaproj*.shfbproj等等。

相反,您需要为您知道其支持的项目系统注册扩展程序提供程序。