I've split the suggestions into two lists: things you would only want to do once per target designer, and things you might want to do multiple times.
One instance per designer * Adding Visual Studio Options page / IProfileManager support * Adding IVsExtensibleObject support * Adding a custom singleton resource manager * Adding splash-screen support
Multiple instances * Adding custom unit tests (e.g. to test a rule: load a model, set a property, check the rule fires. Ditto validation methods) * Adding rules * Adding validation methods * Adding custom property descriptors * Adding skeleton UITypeEditor/ TypeConverter implementations * Generating "custom" code stubs when required by model definition (e.g.when setting ConnectionBuilder.IsCustom=true, or LinkConnectorDirective.UsesCustomConnect, DomainClass.HasCustomConstructor, DomainTypeDescriptor.CustomCoded etc). * Generating double-derived class files (and set the appropriate "GeneratesDoubleDerived" in the model). * Adding custom geometry shapes
Just having code snippets for some of these would be useful, although recipes would be better.
Also, I guess there may be circumstances in which you could use a recipe to add an additional text template as well as just adding "static" code e.g. the user could add a profile management "chunk" that provides a (generated) standard implementation that would be updated if the model changed, and which they could customize/extend in the normal way via partial classes / double-derived classes. This would be an alternative to adding the functionality to the base solution template used to create the target designer, and would allow the user to choose which additional / non-standard bits of functionality they wanted.
Duncan
|