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

时间:2014-03-17 21:23:21

标签: c# visual-studio visual-studio-extensions vsix vs-extensibility

我有一个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);
    }

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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