Vs2010 has new extensibility model that is based on the managed extension framework or MEF. However, this new model does not yet include visual studio "custom tools". Custom tools are text generators that you apply to files by typing their the name
of the tool in the "custom tool" property box in vs.
is meant to bring MEF to custom tools. Geny is a custom tool and is registerd as such. However once registerd it can be assigned to any file and use MEF to find a custom tool implementation to handle that file. You no longer have to implement a
com interface and muck about in the registry. Instead, apply the Genyrator attribute to your class and implement the IGenYrator interface, place your assembly in the GenYrators folder, restart vs and you're done. Geny will also make it easier to output
multiple files from a custom tool. For more info on using Geny and how to use and install it, check out the
The other part of Geny, and actually the reason this project was created, is the
. Typewrapper is a custom tool writted to use Geny that can create various kinds of wrappers around exsisting code. It was created because of the new cool apis in .net4 such as IObservable and TPL and the need to wrap exsisting apis such as events,
and dependecy properties and Begin/end methods and eventbased async calls. For more info on Typewrappers , go to the
Type wrapper page
In the first release, Geny includes an IObservable wrapper that creates methods that return IObservable versions of the events you specify. In the future i plan to make wrappers for Dependency properties to IObservable and from various async patterns to Tasks.
Geny is facing a significant rewrite to accomodate some new awsome features (think shaders) The current version can be still be used though, if not as an example on how to write a VS custom tool
Geny is a one man operation and something i do on my spare time, something i havent had a lot of lately (getting married sure eats time :) ) also before making geny i hadnt really used MEF, written a custom tool or used T4 before, so there might be some quirks
:) also, especially in the beginning of the project, i might change the interfaces as any time, so dont build missile launching apps on Geny just yet :)