As I said in my review of Visual Studio 2008 in January 2008 and repeated in my SP1 review in August 2008, Visual Studio is the premier IDE for developing applications with the Microsoft .Net Framework and at least a contender for the best Windows-hosted C/C++ IDE. At the same time, despite my glowing endorsement, I quibbled about a few deficiencies in the product; in my later Silverlight 2.0 review in November, I went on to complain that the XAML designer added to Visual Studio by the Silverlight toolkit only had a preview pane rather than a full-blown designer.
Microsoft must be sick of hearing me bitch and moan and ask for the next thing when the company has just delivered something nearly great. And yes, I'm going to do it again, but understand that I wouldn't spend the energy to ask for the next step if I hadn't found the product useful. So let's start with the high notes.
[ See the Lab Notes blog for a scrolling tour of Visual Studio 2010 highlights. See Martin Heller's Strategic Developer blog for further Visual Studio 2010 beta notes and ongoing coverage of Microsoft development technologies. ]
Visual Studio 2010 (VS2010) has a revamped user interface that looks much cleaner than previous versions of Visual Studio, and uses Windows Presentation Foundation (WPF) rather than Windows Forms. I like the way this works, at least on a computer with plenty of RAM and a good graphics board. I give the UI a big thumbs-up. I'm told that the UI also supports multiple monitors, but I don't have the hardware configured to try this myself.
Not surprisingly, the WPF designer is even smoother than before. Additionally, you can now generate data-bound WPF controls by dragging items from the Data Sources window to the WPF designer. Even better, the XAML designer for Silverlight achieves parity with the WPF designer; you no longer need to switch out of Visual Studio to Expression Blend to work on a XAML design visually.
The new code browsing features are another win. Once you've learned to use Ctrl-Scroll to zoom in and out on the screen, you don't even think about it. Once you've learned the Navigate To shortcut (Ctrl-Comma) and the Call Hierarchy navigation, you'll wonder how you got around your projects before.
Debugging and TDD
VS2010 has much improved thread debugging; given the increased support for multithreading and parallelism, this is a necessity. Toolboxes and IntelliSense are now sensitive to the Framework version of your target project, so you don't have to wait until compile or runtime to discover that you've used a feature unsupported by your target. Again, given the increased number of possible targets, this is a necessity.
Visual Studio has supported test-driven development for years, but it was always awkward to create new stubs and to synchronize IntelliSense if you actually wrote the tests first. Now you can switch into consume-first mode to keep IntelliSense from running amok, and you can generate stubs from their usage.
The Visual Basic and C# languages have both evolved in nice ways and nearly achieved feature parity. Visual Basic now has lambda expressions and implicit line continuations; C# now has simplified COM calling and dynamic language support. Both have a new feature called type equivalence that simplifies deployment against different versions of an assembly, which is especially useful when trying to program against the Microsoft Office APIs. (Lambda expressions are anonymous inline functions or methods; in the .Net Framework they are used as a concise way to define delegates, and they're very useful when writing LINQ queries.)
F# is a functional programming language based on ML and OCAML, which uses the .Net Framework and interoperates with other .Net languages. F# was previously a research project; it's very nice to see it as part of Visual Studio 2010.
When working with big Visual C++ projects, I used to dread making changes to core header files; it would nearly always force me to take a break while the IDE caught up. The IDE is now smarter about parsing files in the background.
The VS2010 C++ compiler now supports the lambda expressions, rvalue references, compile-time assertions, expression type discovery, and automatic type deduction features of the C++0x standard. Another piece of good news is that the VS2010 C++ compiler has a mode that is backward-compatible with the Visual Studio 2008 tools and libraries. This will make it easier for individual developers to upgrade even if the rest of the team doesn't want to switch over.
Web deployment and parallel programming
Web deployment hasn't historically been one of Visual Studio's great strengths. All too often, I found myself switching to an FTP client for deployment instead of using the deployment tools in Visual Studio 2008. The one-click publishing feature of VS2010 may well change that, although I have yet to work up the courage to use it on a production site.
For me, the biggest new features of VS2010 have to do with parallel programming. I once wrote part of a book on parallel programming, and I have been following the various languages, frameworks, and libraries with interest, including Joe Duffy's work at Microsoft. I'm not sure that I've completely grasped the power of the new .Net Framework and native C++ support for task and data parallelism in VS2010, but what I've seen so far is impressive. A bunch of interesting parallel programming samples have recently been posted on CodePlex; I think they're worth checking out.
I'm not going to cover Team System or Team Foundation Server in this first look, but I want to mention the Architecture Explorer, a client-side feature of Team System. Microsoft has gotten serious about UML modeling; in the last two screen shots of the highlights sidebar I demonstrate class exploration and the automatic generation of architecture diagrams, which are just two of the many features useful to programmers as well as architects.
Beta bugs and omissions
It wouldn't be fair to completely gloss over the deficiencies of Visual Studio 2010 just because it's still a beta. I want you to know what to expect -- and what not to expect -- should you download and test the beta 1 product.
First of all, don't waste any time looking for the MSDN library for this beta. There is no local version; it's entirely online. I don't actually mind this; if my Internet connection is down, I can't do most of what constitutes my work for long.
If you're installing on Windows 7, as I did, the SQL Server installer built into the Visual Studio installer will fail. What you can do is to download and install SQL Server 2008 with SP1 separately. You can safely install either or both of the Express and Developer versions of the database.
I personally have encountered only one bug in this beta that has yet to be resolved. For some reason, after I installed the Silverlight 2.0 runtime and SDK, I could not debug the Silverlight projects. I'm not sure if this is a 64-bit issue or an installation problem; I expect that the problem will go away at some point, probably when I install a newer version of the Silverlight tools.
In any case, I'm looking forward to the incremental drops of add-ons to the Visual Studio 2010 beta and to the next beta. It's good now; I expect that it's going to be great by the time it ships.
Visual Studio 2010 Beta 1 is a very promising upgrade to the premier IDE for .Net development. It improves the UI, IntelliSense, and Designers; supports parallel programming; and improves support for test-driven development. It's still missing support for ASP.Net MVC and smart devices.
Martin Heller is a contributing editor of the InfoWorld Test Center, and he writes the Strategic Developer blog.
This story, "Visual Studio 2010 Beta 1 shows some leg" was originally published by InfoWorld .