In beta 2, Visual Studio 2010 is beginning to show the rather attractive shape of things to come.
It supports test-driven development, and it adds historical debugging, as well as support for concurrency. Silverlight RIA development, the F# functional programming language, and ASP.Net MVC 2 are all included in the product. The new WPF-based IDE is now fast enough to use, and with a few exceptions, the entire studio is a little quicker than Visual Studio 2008.
I have been working with Visual Studio 2010 Beta 2 on and off since it was released last month, most recently for my first look at the SharePoint 2010 beta. In addition to the many, many attractive new features, Beta 2 corrects the deficiencies I noticed in my first look at Visual Studio 2010 Beta 1, and it corrects many bugs that I hadn't noticed. You can even go live with this version if you wish, which means that you can start using it to develop and deploy production applications. Overall, Visual Studio 2010 Beta 2 demonstrates credible progress toward having a kick-ass IDE for Microsoft's planned March 2010 release date.
As I mentioned early in October, in this beta Microsoft has dropped the ancient Visual SourceSafe in favor of TFS Basic. TFS goes way beyond Visual SourceSafe in many ways, starting with its use of a true database and continuing with its work item tracking and ongoing software metric collection. I had no abiding love for the often unreliable Visual SourceSafe, but I was a little hesitant about installing TFS, due to my experience with installing earlier versions; I was also put off by TFS Basic's confusing installation options. As it turned out, TFS Basic installed fairly smoothly on my Windows 7 for x64 box, and I was able to tie TFS to an existing SQL Server 2008 Express instance without too much trouble.
The only real installation issue I had was that TFS unexpectedly grabbed port 8080; I had to move the server software that had been using port 8080 to a different port. I worried ahead of time that running TFS Basic would slow down my machine, but I haven't noticed much of a change. Using TFS is a little more complicated than using Visual SourceSafe, but it offers much better options for version control -- such as shelving, unshelving, and better merging -- and adds significant support for software processes and software project management.
The lack of Visual SourceSafe support does mean that Visual Studio 2010 can't safely edit my old Classic ASP Web site, which uses SourceSafe for version control. If there's a way to fix that site to use a more modern version control system, I'd like to know what it is. Meanwhile, I can still edit the site in Visual Studio 2008.
I was pleased to see the improved performance of beta 2 compared to beta 1. For many things, Visual Studio 2010 Beta 2 now seems to be even a little faster than Visual Studio 2008 SP1. However, there are still episodes when the beta 2 UI becomes unresponsive for minutes at a time and the dreaded "Visual Studio is busy" notification displays. If there's a reproducible pattern to this, I haven't found it, but I most often see it during one kind of initialization or another. I know that the people currently managing Visual Studio 2010 are very sensitive to performance issues, so I'm confident that these bugs, however intermittent they may be, will be tracked down and fixed by March.
One of the small but useful old features missing in the beta 1 code editor was column select (Alt-drag). It's back in beta 2, but it's often disconcertingly slow to catch up to the mouse, especially if you're selecting a large box of text.
New Help engine
A larger piece missing from beta 1 was offline help. Beta 2 has a brand-new offline help engine that doesn't seem to require the ridiculous indexing overhead of the old MSDN Library help engine and displays information considerably faster than the old engine. It also retains the option to get help online from MSDN, which has gotten a welcome overhaul.
I installed only a small subset of the full documentation locally. Local documentation displays in a browser window just like online documentation, only with a local URI, and generally displays faster than online documentation, a refreshing change from Visual Studio 2008, where the Web search would usually complete well before the local search. When local content is not installed, the new help engine redirects to the online documentation. In all the cases I've tried, this has worked without a problem. Local content can be updated easily as needed.
New language and environment features
I have discussed the programming support for SharePoint 2010 elsewhere, so I won't repeat it here. This beta also supports both Office 2010 and Office 2007 programming.
Silverlight support is baked into this release, with targeting for .Net versions from 2.0 to 4.0. The two-paned drag-and-drop Silverlight designer works well, although the graphical pane often exhibits a noticeable delay as it updates.
Targeting various .Net versions is a major capability improvement in Visual Studio 2010. It must have caused the programmers working on it endless headaches, because it creates so many complicated use cases for the IDE, especially for IntelliSense. Nevertheless, it seems to be working well at this point.
I've been a fan of Test-Driven Development (TDD) for several years. You could do TDD with Visual Studio 2008 if you tried, but it took some manual scutwork and more planning than I could usually muster to keep from running afoul of the overly helpful but confused IntelliSense, which would gleefully and incorrectly complete new names. Beta 2 of Visual Studio 2010 adds support for automatically generating stub classes, properties, fields, constructors, and methods from unit tests. IntelliSense can now be used either in the old completion mode or the new suggestion mode; the latter is much better for TDD, since you are often writing test code that uses identifiers and APIs before they exist.
I'm happy to see that F# shipped with beta 2. F# is a dialect of ML (OCAML) for .Net and supports functional programming, compositional programming, lambda expressions, immutable data types, pattern matching, and both asynchronous and parallel programming (see figure). It also has an interactive interpreter, fsi, which can run as a console or as a window inside Visual Studio.
IntelliTrace adds historical debugging to Visual Studio's excellent live debugger. It supports debugging Visual Basic and C# applications that use .Net version 2.0, 3.0, 3.5, or 4, and F# applications on an experimental basis. It doesn't support C++, script, or other languages, and it doesn't support Silverlight, Xbox, SharePoint, or Windows Mobile applications.