Search Wiki:

LearnVSXNow: Take a dive with me under the surface of Visual Studio Extensibility!

I am a fan of Visual Studio. Several times I flirted with the idea to create a VS packages for some development utilities. I always wanted to convince my colleagues to implement their utilities as VS packages. However, when they asked me how to start, I always pointed to the VS SDK and its documentation. I do not think that the VS SDK reference documentation is the best way of learning VSX from scratch.
As an MVP I decided to change the world a bit around the Visual Studio 2008 SDK and VS packages. I am one of those guys who feel themselves at home in .NET programming and in using Visual Studio, but who are not so self-confident when it is about VS SDK. I decided to learn many aspects of the VS extensibility and publish my way of learning it. My aim is to give starting points to others helping to understand and use VSX while explaining the most important things to demystify the whole VSX programming. I am focusing on developers who are new to VSX, and so the code name of my project is “LearnVSXNow!”.
I hope, you will find the information here useful. Please share your opinion and recommendations with me!

Coming soon: Part 24: Thinking about a new MPF next part

Recently published:

LVN! Sidebar #5: Deep Dives on MSDN Code Gallery

Part 23: Coping with GUIDs

In my last post I promised to show a few patterns demonstrating how a new Managed Package Framework could be improved by means of usability, less coding for a task, etc. In this article I show you a few patterns to be used to improve the perception of using GUIDs.

Part 22: Thinking about a new MPF

I suppose, not I am the only one who can imagine a VS SDK and MPF that can be used better than the one we have today. In this post I share my thoughts about this topic. Please, share your imaginations, comments, additions and opinion with me!

Part 21: PowerCommands Deep Dive — Analyzing Commands

I go deep into the code of the following commands: Clear All Panes, Clear Recent Project and File List, Close All, Undo Close.

Part 20: PowerCommands Deep Dive — Commands and UI

In this part I dive into details about PowerCommands UI. We look how option pages are created, integrated into the Options dialog and how related settings are persisted. We also examine the Model-View-Presenter pattern used to implement a few UI with WPF.

Part 19: PowerCommands Deep Dive — Command Architecture

In this post we take a look at the architecture of the free PowerCommands tool package and go into details on how commands are defined and executed.

Introducing LVN! Sidebars

When writing LearnVSXNow articles and working on projects I have collected many “how-to-dos”, created small but useful code artifacts, found irritating bugs, etc. I decided to create a separate thread within the LearnVSXNow series not tied to the main stream just for publishing these small “knowledge elements”. I named this thread LVN! Sidebar. You can read the first blog posts:

LVN! Sidebar #4: Command handlers

LVN! Sidebar #3: Simplifying tool window declaration

LVN! Sidebar #2: Resolving string resources

LVN! Sidebar #1: Automatically loading packages

Mainstream posts

Part 18: Advanced VSCT concepts

In this post I treat a few advanced .vsct concept like, submenus, toolbars, menu controllers, key bindings and visibility contexts.

Part 17: Creating a simple custom editor — under pressure

In the previous articles we treated all components of a custom editor exceptthe editor pane. In this article we look whats behind the SimpleEditorPane<,> class.

Part 16: Creating a simple custom editor — the first ten meter

We look into the details of the main components of the sample: the editor factory, the UI, the data and the surface of the EditorPane code.

Part 15: Creating a simple custom editor — the basics

In this article I show you what are custom editors (designers) in VS and what is the architecture behind them. I created a BlogItemEditor example, in this article I show you its basic design.

Part 14: Basics of the .vsct file

In this part I give you an overview about the .vsct file. Instead of treating its schema just like in reference documentation, I will deep into details. To understand how .vsct works I show you a few examples. This article does not cover everithing about .vsct, I am going to show you more details in future articles.

Part 13: Menus and comands in VS IDE

In this article I deal with the concepts behind the menus, toolbars and command execution. The article introduces the most important entities we are going to use in the future parts where menu and command implementation details are treated with code.

Archived articles (Part 1-12)
Last edited Jun 29 at 6:27 AM  by INovak, version 47
Comments
archamba wrote  May 2 at 3:36 AM  
I need to write a custom designer for visual studio 2008. Is it the same thing as writing an editor ?

davera wrote  Jun 12 at 5:32 PM  
I have started using your example of command handlers for my custom designer and it works nicely. But, the command handlers for this designer need some context information - when there are multiple instances of the designer. I started this with a simplistic way by instantiating the command handlers in the EditorPane and passing the EditorPane instance as a parameter. However this technique gets me an error message "There is already a command handler for guid:id". If I instantiate the command handlers in the designer package instead of the Editor pane, is there a way for them to discover which editor instance is active (has focus)?

Vin wrote  Jun 21 at 2:57 PM  
How about "Automatic updates" to my VS packages deployed on users machines, using Clickonce deployment? So everytime they load up my VS package, if I've published an update, they get a 'FireFox' style automatic update, finish the installation and restart visual studio. Any instance this has been done anywhere already?

Updating...