The Moth
http://www.danielmoth.com/Blog/2007/11/top-10-things-to-know-about-visual.html - The Moth as he's known, shows us his top ten things to know about visual studio (trust me this is not all about linq)
Ingo Rammer - Debugging tools
http://blogs.thinktecture.com/ingo/archive/2006/08/05/414674.aspx - Ingo ("The God") Rammer shows us an interesting application of the use of the windbg tool to get to the bottom of some nasty bugs. Rack up on a client site with just a usb key with the following tools and be able to debug managed (and unmanaged code). 90% of bugs are caused by un garbaged collected objects, Ingo shows us how to find these http://blogs.thinktecture.com/ingo/archive/2006/08/05/414674.aspx.
Tools for use include:
- Windbg.exe
- cbd.exe (command line version of above)
- adplus.vbs -crash -pn notepad.exe (gets you a crash dump)
- SOSAssist visually walk through the memory dump files produced, and right cilck to show offending code in .NET Reflector!
- Hawkeye.exe - http://acorns.com.au/projects/hawkeye/ - kind of like spy++ for managed code applications, lets you modify a running applications button text for example while the application is still running.
This was by far the best technical session I attended at TechEd by the way! Most of the sessions I ended up with half a page of notes, for this one I couldn't stop writing (4 pages of notes generated!)
Roy Osherove
Showed us how to do many wonderful things with Reflection, and System.Reflection.Emit. One of the most pertinent things he did was a CloneWithEmit method that was more performant by a factor of at least 4 times on and 100000 objects with about 9 properties each in a collection. The fact that his first example which he then sped up by using this new methods, looked almost identical to the code I wrote to do exactly that for single line code WCF service translators for data contracts to business entities, was most intriguing.
Also use the new CustomAttributeData.GetCustomAttributes in future as it doesn't invoke the constructors of the attributes, merely returns the object graph structure for what you need in read only format. Assembly.ReflectionOnlyLoad as well is more secure.