Back to the Toolbox

A look at Mike's own bag of developer tools shows that more .NET code is in his future.

"One only needs two things in life: WD-40 to make things go, and duct tape to make them stop."
—G.M. Weilacher

Apologies to Weilacher (whoever he or she was; the Web appears to be silent on this subject), but my annual tools column would be pretty slim if I only listed WD-40 and duct tape, neither of which is all that useful in software development in any case. Over the last year, my solution development has concentrated on .NET. I expect that if you're pursuing any of Microsoft's developer certifications, yours has done the same. So, this year, you'll find some .NET-centric tools on the list. If you still haven't sipped the .NET Kool-Aid, don't despair—there are some more generally useful tools here as well.

I'll start with a pair of tools that have made the .NET development part of my life much simpler: NUnit and NDoc.

Tools for Testing
NUnit (http://nunit.org/) is a free, open-source unit-testing framework for .NET applications. I've written about unit testing and test-driven development in the past (click here, here, and here for some examples) and likely will do so in the future. Test-driven development in particular is one of those simple ideas that can make a huge difference in personal productivity. At this point, I'm sold—every .NET application that I work on gets its own set of unit tests. If you work in Visual Studio .NET, you'll also want to take a look at the rapidly developing NUnitAddin, which integrates NUnit directly with the IDE; http://dotnetweblogs.com/NUnitAddin/ will get you that one.
Developer Central Newsletter
Want to read more of Mike's work? Sign up for the monthly Developer Central e-newsletter, including product reviews, links to Web content and more, at http://lists.101com.com/
NLS/pages/main.asp?NL=
mcpmag&o=developer
.

NDoc (http://ndoc.sourceforge.net/) is also a free, open-source tool, but it's somewhat more specialized. If you're working in C#, NDoc strips the XML comments from your source code, uses reflection to ferret out information about the actual assembly you're building, and slices and dices the two together to produce lovely HTML Help files in the same style as the MSDN documentation for the .NET Framework Class Library. If you're building libraries of any sort, whether commercial or internal, this one can save you a bunch of time on the documentation end of things.

Pulling It All Together
When you start juggling multiple applications (like NUnit and NDoc, not to mention Visual Studio .NET and Visual SourceSafe) on a single project, a good build utility becomes a necessity. I'm still quite fond of the commercial product FinalBuilder (http://www.atozedsoftware.com/finalbuilder/), in part because its GUI approach to things appeals to me and in part because it just plain works. If the $300 price tag is too much for you, take a look at the open-source NAnt project (http://nant.sourceforge.net/) or Microsoft's BuildIt (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/
dnbda/html/tdlg_app.asp
). Either one will help you pull together all the pieces of a complex build process into a single operation. You might think this is just a convenience, rather than an essential tool. But, the first time you omit an essential step of your build process because you got pressured and forgot, you'll wish you'd automated the process.

While I'm talking about commercial .NET tools, I want to mention the trio of excellent add-ins from FMS (http://www.fmsinc.com/):

  • Total .NET Xref, for finding things anywhere in a solution
  • Total .NET Analyzer, for checking code according to dozens of rules and guidelines
  • Total .NET SourceBook, a repository of useful code, updated via a Web service

FMS's products are too expensive for the casual user, but if you're doing serious development in .NET you definitely need to at least take a look.

Virtual Lab
Another tool I like enough to pay for is VMware (http://www.vmware.com). The idea of VMware is simple: It provides a virtual computer that runs in a window, so you can simulate a completely different computer without having to buy more hardware. It's a rare day when I don't fire up at least one instance of VMware. I've used it for testing with non-English versions of Windows, for playing with beta operating systems and software, for testing apps among a dozen different Web browsers, and for playing computer games that won't run on Windows 2000.

Caught by Web Services
An area that's captured an increasing amount of my attention lately is Web services. When you're trying to get a feel for a new Web service and don't want to bother building any client software, .NET WebService Studio (http://www.gotdotnet.com/team/tools/web_svc/default.aspx) will come to your rescue and won't cost you a cent. The tool will let you connect to any WSDL endpoint; then, it builds its own simple user interface to invoke the Web service interactively.

.NET WebService Studio will give you a pretty good idea what's going on when you invoke a Web service, but sometimes you need to do heavier-duty debugging. At those times, I turn to Mindreef SOAPscope (http://www.mindreef.com/), a $99 commercial solution that works as a transparent monitoring proxy for SOAP messages. When you're not sure which component in your environment is messing up, a few hours of sniffing the wire with SOAPscope may be all you need to settle things.

Digging Into XML
And as long as I'm in the XML mindset, let me mention XMLSPY (http://www.altova.com). Depending on which edition you purchase, you can spend anywhere from $99 to $990 on this tool. It does such a great job of dealing with the endless morass of XML standards. With its powerful editing tools, XMLSPY is worth it if you need to touch XML more than occasionally.

Thinking of XML somehow puts me in the mood to look at stuff at a very low level, and I've found a variety of tools for digging into components at a low level indeed. For all the times when the documentation is inadequate, here are four that have earned a place on my Start menu:

  • Nogoop Software's ActiveX Inspector and .NET Inspector are great for digging into components. They can instantiate things, peer at the internals of running applications, browse types and more. They even implement form design surfaces so you can play with visual components. $45 each at http://www.nogoop.com/.
  • ActiveXplorer looks at both COM and .NET components and shines at providing an exhaustive inventory of everything on your computer and letting you easily see their object hierarchies. With repair, dependency and HTML help generation capabilities, ActiveXplorer is great for managing busy development environments. $149 from http://www.aivosto.com/index.html.
  • Outside of the component world, PE Explorer from HeavenTools does a great job. It can dissect many aspects of the internals of Windows executable files and is especially good at inspecting, editing and extracting embedded resources. $129 from http://www.heaventools.com.
  • Finally, back on the .NET front, there's Lutz Roeder's Reflector. This is sort of like the Object Browser or, rather, what the Object Browser might grow up to be if Microsoft put serious work into it. In addition to class browsing, Reflector features integration with MSDN and XML documentation, an IL disassembler, prototypes in multiple languages and more. Free from http://www.aisto.com/roeder/dotnet/.

Instead, Burn Music on CDs
If you're an MSDN subscriber, you've probably noticed that new downloads are available only as ISO images these days. That's a bit of a nuisance if you don't actually feel like burning CDs just to test the latest release of Microsoft "Fruitbat." At least, it was a nuisance for me until I downloaded IsoBuster, a utility that makes child's play out of extracting files from an ISO image. Depending on your needs, there are both freeware and shareware versions at http://www.smart-projects.net/isobuster/.

Keeping up on Everything
Finally, I want to mention an application that's not quite a development tool, but still an essential part of my day: NewsGator. An RSS aggregator, NewsGator, can keep up with RSS files (XML headline summaries), which are published by thousands of sites around the Internet, including many development sites. With NewsGator installed, my RSS feeds get automatically slurped into my Outlook session as posts in a folder, where I can inspect them along with my e-mail. This makes it wonderfully simple to keep tabs on all sorts of stuff around the Net. $29 will get you a copy from http://www.newsgator.com. If you're new to RSS, and want to learn more (or check out alternative aggregators), I maintain some pointers at http://www.larkfarm.com/rss_resources.htm.

What's in Your Toolbox?
One of the nice things about this job is that I get to look back at the end of each year and realize that there is still plenty of nifty software being produced. But no matter how much time I put into finding useful tools for developers, I'm sure there are other things out there that I've missed. That's where you come in: Do you know a useful tool I neglected to mention? Please drop me a line and let me know about it! I'll use the most interesting comments in a future issue of my Developer Central newsletter.

About the Author

Mike Gunderloy, MCSE, MCSD, MCDBA, is a former MCP columnist and the author of numerous development books.

Featured