Pretty much every reference out there to VS Extensibility begins with an explanation of the various ways you can extend Visual Studio, and this blog will be no exception to that tradition. :-) What you really need to ask yourself before you dive into extending VS is “what do I want to add to the IDE”? Hopefully, your great new idea for turning VS .NET 2003 into your ideal development environment falls into one of the following scenarios:

  1. I do this same task over and over again and VS doesn't have any shortcuts to do this (or this series) of tasks.
  2. I want to programmatically control the IDE or access various functions/settings behind the scenes in my code.
  3. I want to create my own wizard to set up projects or perform tasks for me in the IDE
  4. I want to add my own language, project system, and/or editor to the IDE.

If you answered 1 or 2 above, you can probably look into writing Macros for accomplishing your task. Depending on exactly what you require, an add-in might be more appropriate with choice 2 since they are easier to distribute if you want to hide your source code. If you answered choice 3, add-ins are the way to go since they allow you to create a custom wizard. (If the above options didn’t help you decide, also be sure to check this page out.) For more information on Automation (Macros) and Add-ins, I would suggest some of the following resources:

  • Inside Visual Studio .NET 2003
    • This book is the bible on writing macros and add-ins for Visual Studio. If you plan on doing any of the macros/add-ins oriented tasks above, this book is well worth your investment.
  • Craig Skibo’s Weblog
    • One of the authors of the above mentioned book, Craig is a very knowledgeable developer here at Microsoft, especially when it comes to all things VS.
  • Visual Studio .NET 2003 Automation Samples
    • A great collection of free macros, add-ins, and wizards to help you learn the DTE and what you can do with Visual Studio Extensibility.

If you answered choice 4, welcome to the wonderful world of VSIP! I’ll be posting more in the future on getting started with VSIP and hopefully answer some of the questions you may have with writing your own packages.