Smalltalk's Beautiful Image

Ted Neward has clued in that one major reason why Smalltalkers are so fond of the language (\<troll>not just because they're nuts, like LISP proponents\</troll>) is Smalltalk's image. The image is quite a revelation: it's the in-memory representation of everything you've ever done in Smalltalk. You can reset it, and trim it down if you like, but basically, out of the box, the image makes programming Smalltalk more like writing in a notebook and less like rolling a fresh piece of paper into a typewriter. So if one month you write a program to, say, explore genetic algorithms and then the next month you're writing a graph layout program, it's not like you say "Oh, let me open up that genetic algorithm project and see if there's anything I can use," it's just there.  

That's the long-term benefit, but even in the short-term, the workspace allows you to write something, grab a chunk out of the middle, execute it in a stand-alone manner, change it, move it back into the "guts" of the big block you wrote (although "doing the right thing" and refactoring it into it's own method is no harder than cut-and-paste). Python and other dynamic languages have a console that's equivalent to the workspace, but I don't think they go the extra step to persist the image over time.

I wish that there were .NET languages that had a console / workspace and an image. I think such a language would be very, very attractive. Since .NET does not require objects to be serializable, is an image fundamentally impossible? If so, is there an 80-20 solution?