Open Source and Visual Studio

Subversion or CVS with VS.NET?

Microsoft's forthcoming Visual Studio Team System will include source code control, integrated defect tracking, testing, reports, and a bunch of other project management and project governance tools and capabilities. All built in and integrated. BUT! That does not mean that there are not other options, even open source options. AnkhSVN and Igloo are a couple examples of source code control add-ins for Visual Studio. NUnit covers unit testing. There are others, too! Here's a brief list, with some details:

  • AnkhSVN: A Subversion addin for Microsoft Visual Studio .NET, has been available for 18 months or so now. AnkhSVN is a Visual Studio .NET addin for the Subversion version control system. It allows you to perform the most common version control operations directly from inside the VS.NET IDE. It currently works with VS2003 and VS2002 (If you are running VS2002 you really should upgrade).
  • Jalindi Igloo allows you to connect Microsoft Visual Studio and other IDEs directly to a CVS repository. The program is completely free and can be used anyway you like. There is a nice article on how to get it working with VS.NET at The Code Project.
  • NUnit is a unit-testing framework for any .NET language. The current production release, version 2.2, is the fourth major release of this xUnit based unit testing tool for Microsoft .NET. It is written entirely in C# and has been completely redesigned to take advantage of many .NET language features, for example custom attributes and other reflection related capabilities. NUnit brings xUnit to all .NET languages.
  • csUnit, another unit-testing framework. I think less popular than NUnit.
  • MbUnit, another unit-testing framework, the project leads say this one differentiates itself from NUnit in it's extensibility model. It contains a number of tests that go beyond the simple unit testing, such as combinatorial testing, data oriented testing, etc...
  • TestDriven.NET - a testing add-in for Visual Studio, works with {N,cs,Mb}Unit and even VS Team System
  • CruiseControl.NET - a tool to aid in continuous integration , a team development practice which aims to reduce risk in team projects by integrating changes back to the main source tree, more or less continuously. Popularized by Martin Fowler.
  • Ndoc, which generates API documentation from .NET assemblies and XML documentation comment files.
  • Nant, a build tool.
  • NCover, a code coverage tool.
  • NMock, a mock objects framework for .NET (mock object frameworks are often used to aid unit testing).
  • Snippy, a tool to edit and modify the code snippets in VS2005.
  • There is even a VSTS-clone, called NTeam. I haven't used this one, and it looks like the project may not have delivered a release yet. But it's something to watch.

Open Source + Visual Studio = ?

All of the things I mentioned above are open source tools, or have source code available. Does it seem strange that Visual Studio works with them? It shouldn't.

Much of it is possible through the VSIP SDK, and the published extensibility interfaces for Visual Studio. For those tools that don't integrate into VS but rather into .NET itself, is it too obvious to point out that .NET Framework can be used on open source projects?

If you think it's strange that open source stuff works together with Microsoft commercial products, you may have been reading too many press releases from companies saying "Microsoft means lock in" and ".NET is a Windows-only proposition". Sure, Visual Studio runs only on Windows, but that doesn't mean your SCCS has to run on Windows too. It doesn't say anything about your enterprise database, or your queueing system, or your testing tools, and so on. Microsoft tries to encourage extensions of Visual Studio, specifically. Check out Dr Ex's page.

But Wait, there's More.

There are a number of other companion tools, too . Some free, some open source, some commercial. Some plug into VS, some are standalone. Some of my favorites are: Reflector for examining assemblies, CSAH for helping VS devs post their code on blogs, WSCF for contract-first webservices development, and the vsPropertyGenerator to help automate adding and removing properties on C# classes. The SharpToolbox has a very good list, organized by category.

Don't get me wrong, I believe there is real value in integrating the various "big block" pieces, and delivering a nice workflow, as Microsoft does with VSTS. But it won't make sense for everyone. Some people like their Subversion or their CVS (~shudder~). They want their NUnit, they like their CruiseControl. I say to those people: Good on ya. With Visual Studio you can keep using and exploiting the stuff you love. And, beyond the big blocks, there are lots of smaller add-ins and complementary tools that might come in handy in your environment.

What are you using?