VS2010 Tutorial: Building VS Extensions with the Beta 1 SDK

The SDK is used to create extensions to Visual Studio itself like those you can find on VS Gallery.  You can download it here.  The installation is done on top of an existing install of VS 2010 and gives you a set of build tools, templates, and a short cut for debugging devenv.exe (VS) that can be used for testing your new extensions.

Once you get the SDK installed, you will find a new set of templates.  Let’s start by doing File, New Project.  Type ‘editor’ in the search box to find example editor extensions:


Select the ‘Editor Text Adornment’ template and click OK.  This sample template extends the editor with a Text Adornment which basically gives you the ability to change how text is displayed.  By default this adornment finds all instances of the character ‘a’ and highlights them.

Build the solution (Ctrl+Shift+B).  The template automatically packages the new .dll into a .vsix file (basically a zip with some dialogs, the code, and other data required to extend VS).  It then copies the new package into the Extensions directory for the test instance of VS:


Now hit F5 to debug the new extension.  Because you are extending Visual Studio itself, the test instance of VS is launched:


This is a separate instance of devenv.exe as shown by tlist:


Notice the key difference is devenv.exe is launched with a special /rootsuffix flag which gives it a different instance for the extension location:


In the experimental instance of VS, open a text file (such as the one generated for this add-in).  When it loads, you’ll notice the editor extension is in effect and has drawn a red box around every ‘a’ in the file:



The code is pretty straightforward.  The constructor sets up a event handler for layout changed, whenever the change happens every line is scanned, within each line when an ‘a’ is found a red box is placed around it.

If you open the .vsixmanifest file you will get an editor for all the settings an extension needs:


This includes things like the images you will see when you browse / install the extension, the description, etc. 

Extensions can be easily shared with your friends.  To install an extension, either double click the VSIX file to install it or copy the unzipped extension contents to your extensions directory.

In addition to local usage, you can also publish (or acquire) extensions from the VS Gallery.  This is easy to do from inside VS by choosing Tools, Extension Manager:


If you select the Online Gallery, you will find all the controls, templates, and tools from the public site:


You can easily download and install an extension by selecting it and hitting the Download button. In this case I’ll download the Demo Dashboard which is one of our samples:


After you download the file (assuming you accept the license), you will be prompted to restart VS so the extension can be loaded:


If you select Restart Now, VS will start again and restore your state.  The new extension is now in place:


Once you have written an extension you really like and you think others may want, you can use the VS Gallery site to upload your item:


You can update, delete, etc your extension after it is uploaded.

As you can see, loading new items, creating new items, etc is very straightforward.  I’m looking forward to seeing what you come up with.


Comments (10)

  1. It’s pretty cool when you General Manager is out working with the bits you just released. Jason just

  2. DarthObiwan says:

    I’ve been working on an extension but its more a solution level extension not an editor extension. I’m getting entirely lost trying to figure out the Visual Studio SDK. The MSDN documentation for it is even more confusing. It took me a while to just be able to get a list of all the files in a solution. In the end it was looking at the code of an extension on CodePlex that I was finally able to actually get a working reference to DTE. None of the msdn examples worked… I feel like I’m just missing something.

    What I’m looking for is a good site/book/resource for understanding the mess I’m seeing with all these dll’s, DTE3, Solution4 confusions.

    It would be good to note the VSPackage solution template is really nice to start off an extension, adding unit tests and the framework for adding a menu item and tool window.

    I did do a blog post on starting off VS2010 extensions, also covering more parts of the VSIX file.

  3. Thank you for submitting this cool story – Trackback from DotNetShoutout

  4. It’s always great to see your General Manager excited about a feature you worked on. It’s nice to see

  5. Jack says:

    Cool post. Thanks. Looking forward to having one.

  6. Would be helpful if there was a meatier example of an editor adornment. Is there a way to conveniently work with the code model of the C# source file being edited, and get ranges from that, instead of just analysing the plain text? Do we just use the existing DTE API, and if so, how do we get to it from the interfaces to the Wpf editor?

  7. Software Development Tools TestDriven.Net 2.22: Support for Visual Studio 2010 Beta 1 Typemock Isolator 5.3.1 is Out! NDepend: Product Review Free Web Hosting to try ASP.NET 4 Beta1, VS2010 Beta 1, and MS Web Deployment Tool RC1 Microsoft Web Platform

  8. developer says:

    new eye candy. nothing new. cashing cow.

  9. Lots of good stuff this week – not one, not two, but three posts worthy of ‘Pick of the week’ treatment! Picks of the Week I Hardly Recognize You Fighting Technical Debt with the Wall of Pain A Different Shade of Rose, or “How to…actually, I’m not up