Agenda

  • Extending Visual Studio
  • VS 2010 Extensibility

Extend your Development Experience

Find Tools

  • Visual Studio Gallery
  • VS 2010 download manager
  • CodePlex

Customize Tools

  • Existing Customizations
  • Start page

Build Tools

  • Add-ins
  • Packages
  • Designers
  • DSLs
  • Editor Components

Find extensions in the gallery

  • 100s of Extensions
  • Demo of "Power Commands"

Creation of Custom Tool Window

  • Content is a XAML viewer
  • DTE Actions
  • Use SDK sample browser to initiate
  • Visual 2010 changes: WPF Shell

Side note: The SDK Samples look pretty complete.  Looking forward to playing with that

Still a lot of work to hook Tool windows into VS.  Lots of hWnd magic, wrapper to managed code stuff

  • Only in VS 2008!
  • All the VS2010 stuff will be all WPF

Currently there are a lot of MsVsShell attributes to wire packages into VS.

  • Apparently there are lots of changes in VS 2010 to make this simpler

DTE

  • Development Tools Extensibility
  • High level apis
  • Used by macros and addins, but useful for packages as well

Isolated Shell

Visual Studio 10 Extensibility Offerings

Customizing the start page

  • The start page is just XAML

I think I might make a TFS start page explorer type thing.  It strikes me as an interesting project

  • You can do whatever you want as far as DTE commands

New managed extensibility mechanism designed from the groupd up

All managed (NO COM!!!)

Used for emerging Visual Studio architecture

Appears first in the editor

Characterized by ease of construction and deployment

Self describing payloads, "xcopy" semantics

DILU (drop in, light up) deployment

*Not* focused on hot deploy in first release

  • Stop and restart is required (Not a big deal in my opinion.)

Things you can do

Rich text formatting

Rich reading experience

multiple fonts

Font styles and effects

Opacity

Higher performance

Composable

  • 3rd party mixins
  • Per-line transforms

Adornments

Any WPF visual

  • Drawn on one of several planes

Two tracking modes

  • Associate with text
  • Associate with screen

Animation and behavior

  • If you can do it in WPF you can do it in the editor

Margin and scrollbar control

Replace or customize existing margins and scrollbar

define new margins

  • All four sides

Support for spatial mapping

Intellisense and Smart Tags

Any3rd party (not just language services)

  • Contribute to Completion
  • Override the presentation of Parameter Help or Quick Info
  • Add menu items to Smart Tags

Demo of a word tracking highlighting

  • Just need to use standard MEF attributes to wire up new components
  • Attribute ContentType constrains the providers to specific content types (text, csharp, vb)
  • There are services in place to simplify UI updating race conditions.
  • The WPF editor components are almost 100% production ready

Managing your extensions

  • What if you could dicover and search for extensions within the IDE
  • What if you could install, manage and update extensions there as well?
  • What if we could make publishing IDE extensions (of all flavors) easy, fast, and fun?

Side note: That would be cool if they could do that, but I don't think there will be 100s of free hobbist addins

Extension manager

  • "In Situ" experience for extensions
  • Simplified packaging and deployment