project-system icon indicating copy to clipboard operation
project-system copied to clipboard

Need to support the ability to override "generators"

Open davkean opened this issue 8 years ago • 2 comments

To speed up code generation when switching tabs in the XAML designer, the XAML "overrides" the MSBuild::Compile generator and replaces it with the XAML single file generator. We need to make official support for this, especially as build is out-of-proc and XAML won't be able to register a host object to get unsaved changes.

See CLangFileNode::GetXamlOverrideGenerator for more information.

davkean avatar Jul 13 '17 05:07 davkean

The way this works is like follows:

  • This adds a new string value called; OverrideGenerator that is added to extension section of a generator that represents the ProgId of the override generator.
  • Based on its extension a file is considered as using this OverrideGenerator if it's generator matches the default generator. For example, in the following, XAML files marked with MSBuild::Compile are considered as using the XamlIntelliSenseFileGenerator single file generator.

image

  • When queried, CustomTool for a file/project item returns the overridden generator - but does not ever write that generator out if hasn't changed.

The last one suspects that we might need to write a custom data source for the CustomTool property instead of just swapping at the point we go to create it.

davkean avatar May 28 '18 09:05 davkean

This works now, via CPS in src\Microsoft.VisualStudio.ProjectSystem.VS.Implementation\CodeGenerators\WpfCodeGeneratorOverriderProvider.cs but probably needs to move to VsGeneratorsCacheService and be read from the registry

davidwengier avatar Mar 25 '19 05:03 davidwengier