Share via


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!

Comments

  • Anonymous
    June 08, 2010
    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?

  • Anonymous
    June 08, 2010
    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?

  • Anonymous
    June 08, 2010
    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.

  • Anonymous
    June 08, 2010
    The comment has been removed

  • Anonymous
    June 08, 2010
    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.

  • Anonymous
    June 09, 2010
    This is awesome, thanks!

  • Anonymous
    June 09, 2010
    Well productive !!!

  • Anonymous
    June 09, 2010
    The comment has been removed

  • Anonymous
    June 09, 2010
    The comment has been removed

  • Anonymous
    June 09, 2010
    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...

  • Anonymous
    June 09, 2010
    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!

  • Anonymous
    June 10, 2010
    The comment has been removed

  • Anonymous
    June 10, 2010
    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!!

  • Anonymous
    June 10, 2010
    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).

  • Anonymous
    June 10, 2010
    The comment has been removed

  • Anonymous
    June 10, 2010
    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!

  • Anonymous
    June 10, 2010
    Hi, How I remove guideline?

  • Anonymous
    June 10, 2010
    The comment has been removed

  • Anonymous
    June 10, 2010
    The comment has been removed

  • Anonymous
    June 10, 2010
    The comment has been removed

  • Anonymous
    June 10, 2010
    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?

  • Anonymous
    June 10, 2010
    The comment has been removed

  • Anonymous
    June 11, 2010
    When it's will be possible to collapse/expand some instructions like 'if', 'for', 'foreach'?

  • Anonymous
    June 14, 2010
    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...

  • Anonymous
    June 14, 2010
    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: msdn.microsoft.com/.../ff655021.aspx Hope this helps, Matt
  • Anonymous
    June 15, 2010
    @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.

  • Anonymous
    June 16, 2010
    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.

  • Anonymous
    June 17, 2010
    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

  • Anonymous
    June 18, 2010
    Having a really good conversation with Brian Harry about this topic and the challenges around Power Tools, Feature Packs, Power Packs, etc. blogs.msdn.com/.../what-on-earth-is-a-feature-pack.aspx

  • Anonymous
    June 20, 2010
    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.

  • Anonymous
    June 21, 2010
    The comment has been removed

  • Anonymous
    June 22, 2010
    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.

  • Anonymous
    July 04, 2010
    The guideline feature doesn't work correctly when tabs are used for indentation.

  • Anonymous
    February 29, 2012
    Power Tools pour Visual Studio 2010