Question

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?
Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top