Here is my quick review of this updated development system.
Over the weekend, I took a break from productivity to finally check out Microsoft Visual Studio 2005. The DVDs had been sitting here quietly staring at me ever since I got them early this month, so I finally made some time to install it and see how it measures up to Microsoft Visual Studio / Visual C++ 6.0, which I currently use (and prefer) for the bulk of my development work.
To set the scene, I already had Microsoft Visual Studio .NET 2003 on my system, though I never bothered to try the 2002 version. The only good thing about this product was that it would peacefully coexist with the earlier (not .NET) version, save a few stolen file associations; otherwise, though, the product was a dog. In preparation for a review, I had started on my second full page of notes about problems before I gave up on VS .NET 2003 entirely. I simply did not uninstall for fear (later proven justified) that it would mess up my productive and usable development system.
I had read a few glowing reviews of Microsoft Visual Studio 2005, so I was hoping that they were accurate and that I could safely upgrade for new projects, since Microsoft seems to be actively campaigning to eliminate my current system. Apparently the phrase “compiler that is seven years old” appears on some list of talking points, as though it were derogatory. Lame.
Well, I uninstalled VS .NET 2003 and began the installation of VS 2005. The first thing to notice is that somebody in marketing figured out that “.NET” does not sell product (but does allow “.NOT” comments), and therefore that portion of the name is gone. The installation was smooth, and faster than for the predecessor, although the stylized graphics overlaid upon the same three people looked like they were either peering through a jungle gym or possibly prison bars. The selection of models was interesting, too.
After installation was complete, I went to create my first simple project. The missing “.NET” was the elephant in the room, as none of the options mention .NET by name, and knowing that it was a large part of this product, I was not sure what to avoid. Absolutely the last thing I want to do is accidentally build a game that requires another 24M download. I believe that “CLR” (for Common Language Runtime) is the first euphemistic acronym I have encountered in my career, though I could be forgetting something. I will also note that there are no project options for creating a static library (.LIB), nor for a standard DLL, unless it uses MFC. (Yuck.)
Anyway, the answer was that “Win32 Project” implies no .NET or CLR dependency. The empty project was created nicely, and I went to type a copyright symbol in my file header. No dice. It seems that the standard [Alt] does not work in the editor, a major oversight in my book. Wait a second. It works if I toggle the [NumLock] key to on. It also apparently works in a “text file” but not in a “C++ file”, so it may have something to do with the silly code outlining.
The good news is that Microsoft finally figured out how to make a help window pop up maximized, which is a massive improvement from VS 2003 being challenged to even get the miniscule window onto the correct monitor, nevermind properly sized. Unfortunately, the default for help is to hit the internet first before checking the almost 2G of help that I just put on my hard drive. That is an amazingly stupid default. Worse, I was just checking for WinMain() documentation and it just jumped to the first (wrong) thing it found, and when I got to the correct page, the declaration for the function was simply wrong!
I will also mention that much of the user interface is gratuitous fluff. There is no purpose to the non-standard menus, nor to the altered toolbar. Some standard items from version 6.0 were altered in strange ways that just made them harder to use. Whoever thought that pulldown menus to select an output window was a better idea than the tabs used previously was delusional, and the concept of windows (or options) appearing and disappearing based on context is much more confusing than useful.
When it comes to interface customization, though, the team struck out by removing icons from functions that had them in previous versions, so for my PC-lint toolbar icon, I can have text only, draw my own by hand (no pasting!), or select from a small palette of irrelevant images. (I now click an eight ball to lint a file, or a smiley face to lint the whole project.) The new icons provided look nice, but eliminating icons was a definite, if minor, step backwards.
So here is the heart of the matter for using VS 2005: actual development. I was able to use the editor and it did not seem as sluggish as the 2003 version. I was able to ignore the outlining and annoying highlighting fairly quickly so productivity there was not adversely impacted. I loaded up a version of Most Popular Solitaire and attempted to compile it. There is a new set of warnings about certain “unsafe” library calls, which were easy (albeit unnecessary) to address, and then the project compiled. It is also executed just fine.
This review needs benchmarks, of course. Actually, I only realized it needed benchmarks when I noticed a discernible (read: obvious) difference in compilation speed. One feature that VS 2005 advertises is simultaneous compilation, which seems like it should benefit my multi-processor development system. A complete rebuild of the Most Popular Solitaire project consists of three executables: release, debug, and checked. I timed a complete rebuild of the same project on my system, first with MSVC 6.0 and then with VS 2005 (allowing for the possibility of a speed advantage for the latter due to drive caching).
The difference in compilation speed was dramatic, 67 seconds versus 5 minutes 12 (312 seconds). The only problem is that the “compiler that is seven years old” was the quick one. The old compiler is roughly four and a half times the speed of the “improved” version. When I am programming, I compile quite often, and this difference between the two products could definitely impact my productivity adversely. Making the switch to VS 2005 would cost me an hour for every 15 rebuilds (of a fairly small project). Yikes!
The bottom line is that Microsoft Visual Studio 2005 is only decent when compared to its immediate predecessor, but the .NET line of this development system has still not reached the functional level achieved by the last of the purely native compilers, although it is getting closer. If one needs a feature unique to VS 2005, such as smart device emulation or .NET compilation, then this system is usable. If you are, like most shareware and PC game developers, developing native games or applications for Windows, I recommend sticking with Microsoft Visual Studio 6.0 (with all of the service packs, of course).