dotnet / project-system

The .NET Project System for Visual Studio
MIT License
967 stars 386 forks source link

Project Property Page UI Extensibility #6895

Open drewnoakes opened 3 years ago

drewnoakes commented 3 years ago

(Extracted from #6627)

The new Project Property Pages aim to be extensible to first and third parties. Some additional extension points are required to offer the full capabilities of the end-to-end system to extenders.

drewnoakes commented 3 years ago

MEF components will need to be in global scope, as we won't have CPS on the client in Codespaces. There's no concept of UnconfiguredProject scope there, for example.

As our editor is not a MEF part itself, we'll need to explicitly import parts.

Something like:

// on main thread

IServiceProvider serviceProvider = ...;
IComponentModel componentModel = serviceProvider.GetService<SComponentModel, IComponentModel>();
IMyMefPart importedPart = componentModel.GetService<IMyMefPart>();
adamint commented 2 years ago

@drewnoakes this may be a good thing to revisit soon?

adamint commented 2 years ago

@kvenkatrajan specifically the function extensibility

walterpg commented 1 year ago

Progress on property editor extensibility would be welcome. For example, the dialog raised via <ValueEditor EditorType="DirectoryPath" DisplayName="My Folder" /> leaves a lot to be desired.

drewnoakes commented 1 year ago

@walterpg the Microsoft.VisualStudio.ProjectSystem.VS.PropertyPages.Designer.IPropertyEditor type (defined in CPS) is public, so as far as I know all the bits needed for custom editors are available today.