Announcing: VS2010 Productivity Power Tools and Modeling Feature Packs

I just completed the Developer Foundational Session (mouthful) at TechEd New Orleans where we announced the immediate availability of two great new projects for VS2010:  the Productivity Power Tools and Visualization and Modeling Feature Pack.  

Product Release Types

Before going into the details of the new releases, I want to explain more about the types of releases you can expect us to provide:

Product Releases Our primary distribution vehicle is normal product releases such as Visual Studio 2010 itself.  These releases are fully tested, localized into multiple languages, and fully supported.  We typically call these “RTM” which means “release to manufacturing”; essentially the point at which the engineering teams we are done and hands them off for download or shrink wrap.  At some point we may also do a Service Pack (SP) where we release updates to the core bits that take into account your feedback and bug fixes.  As updates to the core bits, we do the full test matrix, localization, etc.
Power Tools These are releases we provide periodically that work on top of a released version of the product (e.g. we don’t modify the product core but rather use extensibility points).  While these releases are done by our engineering team, they are meant to try out new ideas or answer common requests quickly.  We may or may not incorporate the ideas permanently into a future version of the product.  These releases are free for download and to make them available quicker we don’t do full testing or localization.  These releases are not formally supported (generally the team will look for feedback and answer questions but you can’t call the tech lines).  Because of this lower bar you should use them at your own risk.
Feature Packs Feature Packs are a new concept we are introducing with VS2010.  Like Power Tools these releases are designed to run on top of the existing core bits (no modifications allowed) using extensibility.  Unlike Power Tools, Feature Packs are ideas we fully intend to incorporate into the core product in the future (consider it a head start on v-next).  Because of this a Feature Pack is of higher quality:  localized, fully tested, and formally supported.  Feature Packs are available through your MSDN subscription.
Samples Finally we have the venerable sample (starter kits, etc).  These are intended to demonstrate features and may be of varying levels of quality or completeness.

Productivity Power Tools

With VS2010 we made a significant number of platform investments including the new WPF based editor, DGML, UML diagrams, and TFS extensibility.  We took advantage of a lot of these features for building out the final product. But it has always been my expectation that this investment really pays off as we are able to do a full job building on this core platform.  The Productivity Power Tools represent the first example of doing that by our team (our partners have done great work as well, check out VS Gallery for more).

The Productivity Power Tools collect a bunch of very straightforward and very useful features that help you in your every day life in Visual Studio.  The features concentrate on editing, navigation, and other common tasks you use while constructing your code.

Working With Whole Lines of Code

In a large file it is easy to get lost.  Line selection will highlight the current line (default in grey) making it very easy to see where you are:

image

You may also want to highlight an entire line of text.  Today I most typically do this by hitting Home + Home + Ctrl/Shift/End.  Now you can just triple click a line like you would do in Word:

image

Finally, I often find myself needing to move blocks of code around in a method as I change logic.  For example I may want to move some logic up in the file from:

image

to this:

image

To accomplish this now, just select the lines and hit Alt+Down Arrow or Alt+Up Arrow.  The editor will simply move the buffer and will honor new changes.  If I had stopped in the middle of the original If statement, I would have gotten the following for example:

image

Tabs vs Spaces

Some times this turns into a “Tastes Great!” vs “Less Filling!” debate on a team.  Assuming you do wind up at a standard for your team there is no guarantee that the files you own are consistent.  Now as you open a file you are warned about mixed mode and given an opportunity to fix things:

image

Colorized Parameters

Parameters are now colorized in IntelliSense making it easier to parse:

image

Alignment Helpers

Guidelines make it easy to see boundaries across an entire buffer.   Guidelines already existed in VS2010 but were harder to activate.  Now it is a simple context menu:

image

image

Guidelines are placed right at your cursor point.  You can add as many as you like for your buffer.

Another common alignment task (depending on your coding style) is getting a set of assignments to align in a readable fashion.  To do the alignment automatically, simply place your cursor at the front of a block and hit the Ctrl+Alt+] key sequence to go from:

image

to:

image

Note that this format conflicts with the default C# setting so you may need to select the option: Tools->Options->Text Editor->C#->Formatting->Spacing->"[x] Ignore spaces in declaration statements".  (This feature is something you are more likely to use in C# as it would require disabling the VB pretty lister support)

HTML Clipboard Support

When you copy code a colorized HTML buffer is also now included (something I plan to use in this blog going forward!).  So in this example I can paste my code directly into an HTML buffer and the formatting is retained:

image

Tab Well Support

A very common feature request is to make it easier to navigate files and tab behavior.  You can now select the color for each tab by project:

image

Many other options including layout, close buttons, and sorting are available:

image

Here with a few options selected:

image

If you hold down the Ctrl key and hover over a symbol, it will turn into a blue underlined hyperlink giving you the ability to simply click to find the definition. 

New Add Reference Dialog

Many of you asked for improvements for Add Reference.  This release adds caching of results which means the dialog is typically up in a second or two as well as search enabled:

image

Summary

Now that I’ve had the productivity power tools installed I can’t imagine not having them installed.  I hope you will also find them very useful.

Visualization and Modeling Feature Pack

The modeling feature pack provides increased support for visualization (web sites as well as C/C++ code), new UML support, and increased support for layer diagram extensibility to Visual Studio Ultimate 2010.  Cameron Skinner did a great job giving a sneak peak of the feature pack here.  Let me highlight a few items here as well.

Web Site Visualization

Hopefully you have already discovered the power of DGML and architectural dependency graphs for your .NET code (read more about it here). In this release we’ve added support for the structure of your web sites. 

image

The resulting DGML page includes information about page dependencies (including master pages), controls, etc.  Here is an example page for the Blue Yonder MVC sample (click for larger view):

Click for larger image

Choosing the “By Web Site with Code Dependencies” also allows you to examine your MVC code behind along with your web site content:

Click for larger image

C/C++ (Native Code) Visualization Support

The VS2010 RTM product supports the .NET Framework (versions 1.1 –> 4).  I have received many requests for C/C++ support as well which is now included in this release.  In this example let’s look at the structure of the new Hilo sample application from the C++ team:

image

Click for larger image

Just like with .NET code, I can see through the DGML diagram the dependencies both internally to my application and externally.

In addition to binary dependencies, you can also generate a dependency graph of your header files:

image

image

Now if you are feeling ambitious, you can start to drill down on *all* the dependencies including what Windows pulls in:

image

image

And if you are real brave, you can expand everything!  With nearly 100 files (indirectly) included in the Windows SDK I had to scale it down pretty small to fit into a png :)  You can of course scale it up very larger and pan on your display:

image

Can I tell you how much I would have *loved* to have this feature when I ran the CLR development team?

There is also support in the Architecture Explorer and drag ‘n drop support for DGML diagrams which will automatically crack assemblies for you.  Very cool stuff.

UML Class Diagram Code Generation

VS Ultimate 2010 added support for the most popular UML diagram types including Class Diagrams.  This release also adds the ability to generate code from your UML diagram targeting the correct T4 template.  Here is a sample class diagram for customers with orders:

image

When you are happy with your diagram, simply right click and choose Generate Code:

image

At this point new class files are added with the code stubbed out for you:

image

image

Creating UML Class Diagram from Code

Generating code from a diagram is great when you start with your model.  But often you already have an existing project without diagrams.  With the feature pack you can drag namespaces from the Architecture Explorer to a UML diagram:

image

After you have brought items onto the surface, the UML Model Explorer will show you the contents (above left).

XMI Import

This release enables XMI 2.1 import which makes it easier to bring UML compliant documents into Visual Studio.  For now you will only be able to important documents targeting the subset we support.  You should expect us to add more document types in future releases of the product.

Summary

You should expect us to periodically release Power Tools and Feature Packs as a way to give you many of the features you have asked for without having to wait for our next major release.  Between these packs and our 3rd party partners who supply a huge variety of additional add-ins, I think you’ll find a lot of great stuff to help you out.

Let us know what you think of the new releases and keep your feedback coming.  We are definitely using all of your blog comments, tweets, and Connect items to shape the product.

Enjoy!