Visual Studio 2010 New Stuff

Visual Studio 2010 brings about a bunch of new "coder-centric" features, some of which I'm practically drooling over. Post based on a session with Jeff King, Program Manager of Visual Studio Web Tools. He's a cool guy.

  • Improved CSS2.1 support, particularly in the designer view for attribute selectors and the like.
  • Multiple monitor enhancements: Grab a file's tab in the editor and drag it somewhere else to have a mini window that can be moved to a different monitor
  • There's already support for C# snippets, but now there's also HTML/JS snippets. Default ones included for standard things eliminates typing runat="server"s and <style type="text/javascript"> or `` from being so boilerplate. Type tag ("a", "requiredfieldvalidator") or name of snippet and two tabs to insert. Supports sneaky things like when inserting a RequiredFieldValidator it will set the ControlToValidate to the last validatable control it finds automatically. Jeff literally wrote up a form with 2 fields, validation, and a radio button list in less than 1 minute and about 80 keystrokes including whitespace.
  • Neat trick that I think may exist in 2008 as well: make selection, right click, surround with... (update panel, div, etc)
  • Pretty darn good js intellisense based on a virtual evaluation engine - including intellisense for jquery with no vsdoc file, and intellisense on jquery extensions added with extend() that aren't even obviously declared as a function even. Very impressive virtual DOM implementation.
  • Ability to "consume first" by referencing a nonexistant object, and have the object created based on the context of your mentions of it. Could prove quite useful to write tests prior to some code's existence as the consume first model would create only the minimal set of required fields to work.
  • Ctrl-, opens a 'quick find' to find files in large projects - very much like jump to file in winamp - and set focus to them. I like this idea, even if you organize well the file lists just get too long in larger projects.
  • "call hierarchy," a reflector-style analysis of who calls function x and what functions x calls
  • Application packaging, which includes files, databases (including merging schema changes), ssl certs, web.config transforms, etc into a single .zip package for deployment. Uses the MSDEPLOY tool that can be implemented on the server using a web service to eliminate the need for non-HTTP access as well as provide rsync-style synchronization. If you'll excuse me being 12 years old for a minute, the rather amusing out of context phrase "you can take your package and give it to the community" was said while discussing this feature.
  • Web.config transformations allow automatic transformation of a web.config file based on project configurations (e.g. debug/release), transformations are diffs from the main web.config and use a XSLT-like (but less verbose) language. This looks like it would be a wonderful tool for development groups like mine (and @u2elan's as well) who have multiple developers doing local development, but each requiring a slightly different configuration per machine. The only problem is that it would require creating a build profile for every developer, and them to remember to switch to it before building on their machine. I suggested to Jeff King that some sort of provider model to programmatically select which transformation(s?) to load might be a good idea, so we could implement something like a switch based on machine name, or (@tvancil's idea) logged in username. He said he'd have some people call me to discuss it.