Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Register an extender provider for all project types

I have a Visual Studio extension that adds an property to the property grid of a project item. It is done by registering an extender provider like this:

    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);
    }

It works fine for C# and VB projects, but only for those...

  • Is it possible to make it work for all project types?
  • If not, where can I find the CATIDs of other project types?
like image 624
Thomas Levesque Avatar asked Nov 02 '22 03:11

Thomas Levesque


1 Answers

It doesn't make sense to register the extender provider for all project types.

  • Project types may or may not be backed by MSBuild.
  • Project types may or may not have a project file (Web Site projects do not have a project file).
  • Project types may or may not produce executable output. An example of the wide variety of project types, you have *.wixproj, *.ucproj, *.javaproj, *.shfbproj, and many more.

Rather, you need to register your extender provider for the project systems you know it supports.

like image 129
Sam Harwell Avatar answered Nov 15 '22 04:11

Sam Harwell