Sunday, August 5, 2007

A Developers Toolkit for C# and .Net

A developer, no matter how skilled, is dependent on the tools at his disposal. There are numerous free tools to aid in .Net development; from source control to debugging to documentation and profiling. Here, I've compiled a complete list of tools that I've used for years that cover the entire development lifecycle.

C# and .Net are a powerful language and platform for developing software. The high levels of abstraction, garbage collection, architecture, and runtime provide an amazing platform for writing high quality software. It's a great start, but it's not enough.

In the end, quality software comes down to developer skill and organization. This article will provide some links to free tools that every .Net developer should have on hand in order to write high quality software. If you don't know what a tool does, I encourage you to explore it, you may learn something new about source control, test driven development, profiling, continual integration, or debugging that you didn't know before.

What follows is a best of breed toolkit that I use personally and professionally almost every day. All the tools are freely available for download online (with the exception of the full Visual Studio 2005 suite).

IDE
Visual Studio 2005(Not Free) - In my opinion it's the best IDE in the world. Supports many languages, integrated web server, code completion, refactoring tools, debugger, etc. etc. etc… it's a pleasure to use. Just make sure you have a quick system, all the fancy features can take come CPU cycles and memory.

Visual Studio 2005 Express Edition (Free) - If you are getting started you don't need to buy the fully Visual Studio package yet, Visual Studio 2005 Express Edition is free and let's you do just about everything you can do in the full package.

Profiling Tools
CLR Profiler for .Net 2.0 - "The CLR Profiler includes a number of very useful views of the allocation profile, including a histogram of allocated types, allocation and call graphs, a time line showing GCs of various generations and the resulting state of the managed heap after those collections, and a call tree showing per-method allocations and assembly loads."

Debugging
Windbg - This is the debugger for Windows from Microsoft. It's command line driven, difficult to use, and give you exposure to everything. And, there are symbols and tools for .Net. Some tutorials to get started: .Net Framework Source Code and Debugging and A Windbg Tutorial.

Code Analysis Tools
Reflector for .Net - "Reflector is the class browser, explorer, analyzer and documentation viewer for .NET. Reflector allows to easily view, navigate, search, decompile and analyze .NET assemblies in C#, Visual Basic and IL." This one is especially helpful for getting insight into third party .Net libraries that you may be using in your projects.

DevMetrics by Anticipating Minds- This is a closed source but free tool for running basic analysis on your .Net projects. The application installs as a plugin to the Visual Studio environment as well as provides a console utility. The tool will provide you a breakdown of lines of code, cyclomatic complexity, and other metrics by solution, project, file, and object.

Unit Testing Tools
NUnit- NUnit is a tool for developing, maintaining, and running unit tests. By using NUnit to write test procedures (say, versus a console application) you can maintain tests for regression testing, easily execute all or a subset of tests, and get reports of results. Take a day to read the short documentation, I found it fit very well into my development pattern.

Documentation Tools
NDoc Code Documentation Generator for .Net - NDoc is a great tool for developing documentation files in various formats including HTML Help. If you are familiar with .Net development you'll know about the meta tags that are available when commenting code. The Microsoft compiler provides a flag to execute all of your in-code comments into an XML file. NDoc takes this XML file and makes it a user friendly readable and distributable format. By thoroughly documenting your code (as you should) NDoc will compile a valuable documentation file for future developers, testers, and other team members.

Compliance Tools
FxCop- "FxCop is a code analysis tool that checks .NET managed code assemblies for conformance to the Microsoft .NET Framework Design Guidelines." FxCop is a very in depth tool for analyzing source code for compliance. It was built by Microsoft for internal use to ensure uniform coding styles and standards across the company.

Build Tools
nAnt- "NAnt is a free .NET build tool." nAnt provides the ability to automate the complete build process. From integrating with source control for branching or tagging. To building the project. To copying files. To version control. Use nAnt to ensure all the steps to bring your software from code to test to delivery are consistent and complete.

Contiuous Integration Tools
CruiseControl - "CruiseControl is a framework for a continuous build process. It includes, but is not limited to, plugins for email notification, Ant, and various source control tools. A web interface is provided to view the details of the current and previous builds." Use CruiseControl especially if you have multiple developers checking in changes to ensure that your projects build successfully and pass unit tests all the time.

Source Control Tools
Subversion and TortoiseSVN- Subversion is an open source CVS replacement that many in the community find superior. TortoiseSVN is a great Windows client that provides Windows Explorer integration for managing your repositories. I've used SVN professionally and recommend it.

CVS and TortoiseCVS- CVS is a popular and free source control system. TortoiseCVS provides Windows Explorer integration for repository management. This is the system I use at home and you'll find most projects on the web use CVS as well.

0 comments: