Now that the beta is out I’ve been working with it a week and I can provide some feedback on the things I do and don’t like. To organize things a little better I’ll identify some of the new features that were added and give my opinion about the usefulness. All this is strictly my opinion so take from it what you would like.
We need to get this out of the way early. VS11 is ugly, depressing and hard to get used to. You have the choice of either light gray and black or dark gray and black. That’s it. Almost all the color is gone so you are stuck looking at a blah UI all day. Hopefully the Theme Editor extension from VS2010 will make a comeback otherwise we’re stuck with a UI that looks like it was written by someone who loved Windows 3.1 and had a 16-bit graphics card. Following with the hideous Metro approach the tool windows are in all uppercase. Since the purpose of the theme changes was to avoid distracting us I don’t understand why tool windows are yelling at us. Did anybody really have a hard time finding a tool window because it was properly cased? More importantly would uppercasing the whole thing solve that problem? I doubt it.
The icons are smaller, they are shades of gray, the images really don’t match their functionality and a lot of them look similar. For example commenting a section is a rectangle with a symbol above it. Uncommenting is a rectangle with a different symbol above it. In Solution Explorer the icon used to represent showing all files is identical to the icon collapsing all projects except one of them has what looks like a dot in the middle of it. Sure we could learn what these icons mean but why change the standard icons. The fact that they are all shades of grays just makes all the images look similar. Some of the images aren’t fully colorless though. The source control status for items is still in color. Items in a solution folder still render in full color. Beyond that they’re just a bunch of black and gray pixels. Don’t even get me started on TFS folders that are and are not deleted.
I’m really shocked that this made it through Microsoft’s UI team. Who really thought this was a step forward? I understand that colors can be distracting but we humans are trained to associate meaning with certain colors: red means danger or stop, green means safe or go, etc. Additionally standard icons have existed in Windows for years. I think MS went too far in the “remove the color” process. Keep the standard colored icons for normal, understood stuff and dump down the coloring on less important stuff. For example the different colors for the different types of objects (classes, structs, etc) probably doesn’t convey much information but a red “X” tells me to be careful but a gray “X” doesn’t convey anything. I really, really hope this changes before the the release but MS generally does not make such wholesale changes this late in the game.
Find & Replace
In VS2010 find and replace was updated via an extension that replaced the standard find & replace dialog with a hovering window that would appear in the editor window. I really liked how it was done. Since it was an extension there were places where it did not integrate correctly but the fact that the window hovered there and I couuld easily find and replace items in the current document was awesome. It is incredible how easy it is to find/replace now. In VS11 the functionality is integrated. The only complaint I have is the UI is larger and accessing some features is less obvious. Still, it works so this is a great new feature in VS11.
Solution Explorer (SE) has been revamped to include all the standard information but also the types within a file and the members within a type. It is basically combining ClassView with Solution Explorer. I know some people like this but I can’t help but feel that it is going to cause SE to slow down as solutions get large. To be honest I haven’t found ClassView to be useful in a very long time. Even Object Browser does nothing useful anymore. If they just removed these windows I’d be ok with it. I mean who goes to ClassView to find a class definition? You can quick search for it or (if you already have it in the editor), right click and jump to the definition. So, while I don’t find the new SE class viewing feature useful, I won’t knock MS for including it.
By far the more useful features of SE (and other windows actually) is the preview capability. In SE if you hover over a file for a few seconds it will pop up in the new preview window of the editor. The nice thing about this is that the file can be used as though it was open in the editor normally but it actually isn’t. You can “open” the file fully from the preview window or just let it go away. This nicely solves the issue where you’re looking for something in a file as you don’t have to open (and then close) a bunch of editor windows. You can just preview each one until you find what you want. Awesome feature that seems to be working really well.
Another feature that gets mentioned is the ability to create a new rooted view in SE. I’m not really sure about the usefulness of this feature but I could see some cases where it might be handy. Another feature is the ability to have a second copy of SE open with a different view. Again I don’t see a usefulness of this in my daily coding but I’m sure someone will find it useful.
This is certainly a highly tauted feature in VS11 but it seems half baked and full of exceptional cases. The theory is that you can open VS2010 SP1 (the SP is required) solutions in VS11 and nothing gets changed. Thus some folks can upgrade to VS11 while others remain in VS2010 SP1. This is suppose to ease the migration process. Until you use a VS11 the solution/projects remain unchanged. Having tried this on different types of projects I have had little luck with it working. Projects with service references have their references updated when loading in VS11 even though it doesn’t appear that anything has changed. Database projects don’t work at all. I even had a project with a T4 template that was forced to upgrade. Even web apps seem to want to upgrade even though nothing has changed. I honestly don’t think that a standard, commercial application’s solution file can be used without upgrading in VS11 because of all these exceptions. Some of the exceptions could be bugs but it is hard to say at this point. I agree with the concept but I don’t think the implementation is up to the task yet.
WebDev is dead – fortunately. IISX is the new web development server. Given that it shares the same core as IIS and behaves similarly this is a boon because we can now develop on the same server we’ll be deploying to. Furthermore IISX is fast and clean compared to WebDev where each web app had its own instance.
The biggest issue with IISX is a showstopping bug in its communication with the debugger. Note that this occurs in VS2010 today so whether VS11 is impacted or not depends upon where the bug resides. After a while the debugger stops responding which causes VS to lock up. The only solution is to terminate IISX which brings down your site, the debugger and your debugging session. The frequency in which this occurs depends upon what you’re debugging and how. In my sample case I’m debugging 2 separate web apps and a set of web services at once. I can get one or two debug sessions in before it tanks. There is a Connect issue on it and quite a few people are having the same issue but MS has yet to confirm that they can replicate it or that it has been fixed. If VS11 still has this problem then IISX will be a no-go for many people.
VS11 lets you pin document windows to the editor. It was an extension in VS2010. Pinning allows you to keep common files open in the editor so you don’t accidentally close them. Furthermore they are stored on a separate row so you can easily find them even if you have lots of windows open. A really handy feature and it seems to work really well in the beta.
This feature was brought up in demos as a big deal but I don’t find it useful. QS is a search box that appears at the top of the IDE. It allows you to quickly find menu items or text in open documents. I can see its usefulness if you are trying to locate a command but for general searching I’m probably going to stick with Find. Nevertheless I could see future versions of VS taking this to a whole new level where we could quickly search for anything in the IDE or our solution.
Of course Windows 8 is all about Metro so VS11 has lots of Metro app-specific templates and stuff. I honestly could care less about yet another UI framework for an OS that probably won’t be as popular as Windows 7 (which wasn’t as popular as XP). Until XP, Vista and Win7 disappear from consumer machines Metro is not going to be a UI technology we can write commercial apps for unless we write two different UIs – one for non-Metro and one for Metro. While I’m sure some people might do that I’m not one of them. Writing apps is hard enough already I don’t want to compound that by writing 2 different UIs. Maybe when Windows 8.vNext comes around Metro might be viable but for now I’m completely ignoring it. So the Metro features in VS11 I cannot provide any meaningful feedback on.
Some people use TFS and some people don’t. For those that do VS11 makes some radical changes to the TFS interface. I can’t say that it makes it any better. In fact I think the new Pending Changes window in VS11 is a step backwards in every way. In order to check in a change to TFS related to a work item you have to: a) memorize or write down the work item ID, open the Pending Changes window, select the option to relate the change to a work item, manually type in the work item id(s) and hope you don’t make a mistake. There is no integration between the two. The alternative would be to drag and drop the work items from the Work Item Query window that you might have open in the editor but that means Team Explorer can’t be unpinned because you have to drag from the editor to the tool window. Of course to get to the work item query you have to switch Team Explorer to the Work Item view…
All and all I sort of see that MS was trying to consolidate the information but honestly it is horribly inefficient. Hopefully this will be resolved at release otherwise working with TFS just got a whole lot harder.
This is a really cool sounding feature that I haven’t been able to test yet. The concept is simple – when you check in a file you can opt to request a code review instead. Other team members can comment on your code. Code review extensions have been available in VS for years but now MS is trying to integrate it. I like the idea and can find uses for it now. The issue is that it doesn’t appear to work unless you’re also running TFS11. At least I haven’t been able to get the appropriate option using TFS10. I’m also not sure of which editions it will be available in. In most shops that I’m aware of senior folks (who you would want code reviews from) generally run Premium or higher but junior and mid folks (who would request the review) run Professional. Unless MS makes the feature available in all (non-Express) editions I think it will end up being yet another feature few people use.
This one slipped in under the hood but can be useful. When you select a block of code you can have VS search for other places in the code that are duplicates – the effectiveness of this I’ve yet to verify. The theory, of course, being that duplicate code can be refactored. Extensions exist for VS today to do this (DevExpress has a particularly impressive implementation). I’ve played with it a little bit and it seems to work well enough. Whether it’ll end the need for third-party implementations remain to be seen.
All in all I’m happy with VS11 (other than the themes). It seems more stable and responsive than VS2010 ever was. I do have some occasional freezes in the UI but with the PerfWatson stuff running in the background hopefully MS will fix it before the release. Is VS11 a mandatory upgrade? I think that depends upon what you’re writing. If you will continue to target .NET v4, need to continue to use VS2010 for some projects and have no interest in Metro then I don’t think VS11 is going to add enough stuff to warrant making the jump from VS2010 to VS11. However if you’re using older versions of VS then VS11 is certainly the upgrade path you’ll want as it adds enough features to make it worth the cost over pre-VS2010 versions. If nothing else then performance and stability is superior.