PDC 2008: Microsoft Visual Studio: Customizing and Extending the Development Experience

  • 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