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:


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:


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:


to this:


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:


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:


Colorized Parameters

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


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:



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:




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:


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:


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


Here with a few options selected:



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:



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. 


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:


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:



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



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:


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:


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


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



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:


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.


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.


Comments (34)

  1. John Oswalt says:

    The new Add Reference Window goes back to starting on the .NET Assemblies tab which is slow starting up. Why does the new Add References dialog not go to the Projects tab like the new dialog for VS2010.

    Can you update of the tools to start at the Projects tab for the Add Reference dialog?

  2. Kieran Mockford says:

    The very first time the dialog is opened it builds a database of the assemblies on your machine – however this should only happen the very first time after the pack is installed. Are you seeing the delay on every open? Does it present the "Refreshing References" message every time?

  3. suresh says:

    i wish there is XMI export functionality is available. do you know when that feature could complete? XMI import is great. but in my case i want to use visual studio to generate class diagrams fromt he code and export them as XMI packages to import in our EA.

    Visual studio is so cool in generating all the models from the code.

    so, exporting as XMI is more powerful feature to use those packages elsewhere (other modeling tools), than importing the mess from other modeling tools to visual studio.

  4. Travis says:

    The colourized parameter support only makes it easier to read if you use a light background (and have dark-coloured parameters). Otherwise, it makes intellisense unusable :-(. Is there anyway to change the intellisense background colour, or turn off just that one feature?



  5. John Oswalt says:

    I did not realize that the load of the .NET Assemblies was only a one time load after the plugin is installed. If that is the case, then it is not as big of an issue. I would have still preferred it to default to the Projects tab like the normal dialog. Seems strange that it does not after Microsoft made such a big deal about this change in VS2010.

  6. JJ says:

    This is awesome, thanks!

  7. Balaji says:

    Well productive !!!

  8. Nina says:

    >>> 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:

    "Default in grey" implies that there's a way to change the highlight color of the current line. How does on do that? I'm working with a dark background / light font color, which makes the highlighted row not very readable.


  9. Adam says:

    These look very nice indeed, I'll definitely be keeping these.

    I have one question however: how can I completely switch off the "inconsistent tabs and spaces" feature? I don't really want to be told about this, but every single code file I open prompts me to tabify or untabify. How can I stop this globally?

    @Nina, in Tools/Options/Environment/Fonts and Colors you can change the background color for the Current Line and Current Line Inactive items.

  10. Anonymous says:

    RE: The new Add Reference window.

    This extension finally returns the behavior to what it should have been in VS2010 all along.  I'll never know why MS chose to break it in the first place.  Don't listen to John.  Many of us prefer to start on the .NET assemblies tab.

    However, is there a reason this dialog now displays the the Product Name (AssemblyProduct) instead of the Title (AssemblyTitle)?  There are cases where two different assemblies have the same product name, but different titles…

  11. Nick says:

    Is there a way to turn off the Navigation when holding down ctrl?

    It breaks using ctrl-click to select a word and ctrl-C to copy it!

  12. Jason says:

    >>>>>The colourized parameter support only makes it easier to read if you use a light background (and have dark-coloured parameters). Otherwise, it makes intellisense unusable :-(. Is there anyway to change the intellisense background colour, or turn off just that one feature?

    Another request for this feature. I love everything else, and I think I would love the colorized parameters if I could see them 🙂 I've looked through the Fonts and Colors settings but can't find anything specific to intellisense color control. Can we get that as an option?

  13. Jim says:

    Brother.. if you don't work for MS, you should. This is the kind of stuff that should ALREADY be a part of VS. You just schooled the VS team on the importance of the quantity of little things that matter most. Well done!!

  14. Dan Esparza says:

    Awesome plugin.  Is there a way to turn tab 'pinning' off completely?  It's too easy to accidentally hit the pin button instead of the 'close x' (or vice/versa).

  15. cuwaters says:

    These power tools are awesome.  The one thing I really think is missing is the ability to turn on/off individual power tools.  I really like the tabs, for instance, but don't like the full line highlighting.

  16. Jasonz says:

    Thanks everyone for the feedback so far.  We are prepping a new build of the Power Tools which fix some issues you reported and will include increased control over which tool items are turned off / on.  We're hoping to have this new build out next week or so.  Keep the feedback coming!

  17. Fabio Galante says:

    Hi, How I remove guideline?

  18. Jasonz says:

    @Fabio – you can remove a guideline by right clicking the line itself and choosing Remove Guideline.  Note that you have to do this on a line of code which has characters with the guidline.  For example an empty line has no chars so the guidline isn't activated.

  19. Travis says:

    Hi Jason, that's great that you're doing another release! I was heartbroken because I loved the tools, but couldn't live without intellisense.

    In order of preference, I would prefer: 1) ability to choose intellisense bg colour in fonts dialogue 2) have intellisens bg colour automatically respect text editor bg and 3) ability to turn off that feature. Also, if possible (am I getting annoying?), can we also have this available as a seperate download, as our work machines are locked off, and files have to be manually copied across the DMZ.

    Once again, thanks, and great work to all involved.

  20. Travis says:

    Hi Jason, that's great that you're doing another release! I was heartbroken because I loved the tools, but couldn't live without intellisense.

    In order of preference, I would prefer: 1) ability to choose intellisense bg colour in fonts dialogue 2) have intellisens bg colour automatically respect text editor bg and 3) ability to turn off that feature. Also, if possible (am I getting annoying?), can we also have this available as a seperate download, as our work machines are locked off, and files have to be manually copied across the DMZ.

    Once again, thanks, and great work to all involved.

  21. Mike G says:

    Seems that the old add reference dialog is still used in Project properties references list add button

    New add reference dialog is only used when you right-click a project and select "Add Refefrence" menu item

    I assume this is not intentional?

  22. Adam says:

    I have a bug report and a feature request regarding the guidelines:

    The bug appears when tabs are used to indent code rather than spaces. If I select to add a guideline when the cursor is in such a line of code, it treats the width of each tab as a single character rather than the actual number of characters occupied in the display. This means that the guideline appears some distance to the left of the cursor location which is very confusing.

    Secondly a "Remove all guidelines" option would be very useful!

    Many thanks and I look forward to an updated version in the near future.

  23. Denis Voituron says:

    When it's will be possible to collapse/expand some instructions like 'if', 'for', 'foreach'?

  24. James says:

    Hi there! I'm trying to generate code from the UML Class diagram, but when I right click in the pop up menu there are all commands except for Generate Code. Can anybody help me, plz? I've downloaded and installed the Visualization and modeling feature pack runtime. Can't find the problem…

  25. Matthew Cosner says:

    James – I would suggest checking whether you have the Visualization and Modeling Feature Pack installed, or only the Runtime.  You can check whether you have this installed from Tools>Extension Manager, and making sure that you see the following items in the list:

    – Visualization and Modeling Feature Pack

    – Visualization and Modeling Feature Pack Runtime

    The descriptions for the feature pack and runtime are available here:…/ff655021.aspx

    Hope this helps,


  26. Sean Laberee says:

    @Mike G. Unfortunately, the Project Properties didn't have the extensibility we needed to hook to pop up the new Add Reference dialog so you get the old one.

  27. Lance says:

    Love the tool, but had to uninstall it because the helper Colorized Parameters made the dialog unreadable with my color-scheme (black background) since it made all the non-colorized text white on a white background.

  28. Johny Iversen says:

    First of, really great tool set!

    I just have one thing, that I don't know if you've considered. Being a Silverlight developer, I rely heavily on adding code files as links (Add as Link), because we, at my company, have a huge code base from before Silverlight, that add this way to our Silverlight library.

    However, opening files from a project that originates from another project, changes how intellisense works, and I was thinking that the color encoding of the tabs should adapt the same behaviour, which is, being able to see from which project the file has been opened, and color it accordingly. I don't know what is possible though, but I just thought I'd bring it up, as it would be really helpful to be able see from the color encoding from which project you've opened the file.

    Anyways, keep up the good work! 🙂

    Best regards,

    Johny Iversen

  29. Allen says:

    Having a really good conversation with Brian Harry about this topic and the challenges around Power Tools, Feature Packs, Power Packs, etc.…/what-on-earth-is-a-feature-pack.aspx

  30. Noam says:

    Great Stuff! Thanks.

    Just one issue. On the add reference dialog, if you hit the Browse button, it shows up a nice dialog to select your DLLs from the file system. After you hit open on that dialog, you still have to hit 'Add' to make it add to the list. I alway forget that and just close the form, only to notice that it did not add my DLL, just brought it it's name. It would be great if it just added it at the same time.

    Thanks again.

  31. Tyler says:

    Is there an ETA on the release that will allow me to turn off the whole line highlighting feature?

  32. Richard says:

    Is anyone else experiencing a problem where non-pinned tabs do not display content in the editor?

    Occasionally I open a new file by double click in soulution explorer. Tab is added to the editor, but no content is displayed. Specifcally none of the source code text is displayed, but some of the fold points are visible down the left side of window. If I PIN the tab, then the tab moves to group of pinned tabs and displays correctly. If I unpin the tab, it moves back and again does not display the contents. This is an intermittent problem. Occassionally closing some of the other open tabs fixes the problem and the newly opened TAB contents are displayed correctly.

  33. Mark says:

    The guideline feature doesn't work correctly when tabs are used for indentation.

  34. Power Tools pour Visual Studio 2010