[MonoDevelop] Stetic patch (only for people needing additional features)

Matjaž Mihelič ml at arsis.net
Thu Jul 23 08:00:16 EDT 2009

First, I don't expect this patch to become mainstream. Its approach is
anything but correct. But it might get useful to people like me who are
writing desktop applications and using custom widgets. 

Since it has been written that stetic part of project is unfunded and
there is no time, this is the best option for people like me until .Net
4 hits the road (if I read correctly, assembly unloading is part of .Net
4 and that feature practically solves everything and every single
problem that current stetic has)

What this patch does?
- Stetic now checks if assembly is gac based. If it is (and only if it
is) then reloads widget library by direct loading of assembly. Gac
assemblies can't change on recompile, project ones can, so it is safe to
assume that assembly won't change while working.
- Checks all Widgets for new() constructor, and if that one exists,
widget will be invoked directly, meaning stetic works with real instance
instead of wrapped base type
- Gives the possibility for custom property editors in gac assemblies
(patch for that is still in work, but I need to read MS specs about
attributes to be able to do it the right way)
- There is also a plan to fix priority (Attributes should override
objects.xml), but that will be separate patch

- Using real widgets means you see live feedback and there is no more
invisible widgets with size 0x0
- Ability for custom property editors

Well, if you want to work on library which was loaded from gac you have
to restart monodevelop. But this is really rare occasion as mostly
people just use widget libraries. I could write patch for auto restart,
but I suspect I'd just impose work on my self for something completely
useless. And I rather lose 3-4 seconds on monodevelop than hours on
designing forms manually or guessing what actually will be the result of
my invisible widgets.

So if you need this functionality you're welcome to try it. Patch is
made for stable 2.0 release. But I guess it should work with trunk too.


More information about the Monodevelop-list mailing list