45
Microsoft Visual Studio: Customizing And Extending Your Development Environment Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Embed Size (px)

Citation preview

Page 1: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Microsoft Visual Studio: Customizing And Extending Your Development Environment

Tim WagnerVisual Studio Platform Dev ManagerMicrosoft Corporation

TL32

Page 2: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Extending Visual Studio Finding extensions on VS Gallery Using the SDK to create packages Creating branded, standalone apps

Visual Studio 10 Extensibility Customizing the start page Building “drop in” components with MEF Extending the VS 10 editor Managing extensions and downloads

Agenda

Page 3: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Extend Your Development Experience

Find Tools• Online Gallery• CodePlex• New Visual Studio 10

download manager

Customize Tools• Templates• Code Snippets• Macros• Start Page• Debugger visualizations

Build Tools• Add-ins• Packages• Designers• DSLs• Editor components

Page 4: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Find Extensions In The Gallery

Page 5: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Power Commands

demo

Page 6: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Create custom tool window

Content XAML viewer DTE actions

Use SDK sample browser to initiate

Visual Studio 10 changes WPF shell

Custom Package: Tool Window

Page 7: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Development Tools Extensibility High-level APIs for controlling Visual Studio:

Drive the UI Create and manage projects Open, edit, save files Invoke commands

Used by macros and addins, but useful for packages as well

Our tool window will hook up a WPF button to a DTE command

Aside: "DTE"

Page 8: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

XAML Tool Window

demo

Page 9: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Visual Studio Shell

Page 10: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Deployment Options

VS Extension

• Empty IDE• Free

redistribution• Great foundation

for standalone tools

Page 11: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Steps To Build And Deploy

VS Extensions• Packages• Content• Help

Custom Shell (optional)• Branding• Customizations

Setup Program• PLKs & SLKs**• Optionally chain in

Shell runtime

Page 12: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

How Does it Work?

What? How?Create stub EXE Comes with default project

Apply custom branding Replace icons and splash screen;add your own “Help About” box

Customize menus and commands Uncomment tags in <AppName>.vsct file

Customize package registration Change <AppName>.pkgundef fileCustomize tool window registration Change <AppName>.pkgundef file

Add your own packages Add projects into solution and change Shell Dependencies

Add your own template Add template into shared template location and run /setup

Create setup for your shell product Use “Setup” project

Page 13: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Join Us At The VS Extensibility Center

Page 14: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Resources

VSX Developer Centerhttp://msdn.com/vsx

VSX Forums on MSDNhttp://social.msdn.microsoft.com/forums/en-US/vsx/threads

VSX Team Bloghttp://blogs.msdn.com/vsxteam

Visual Studio Galleryhttp://visualstudiogallery.com/

Page 15: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

What's new?

Page 16: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Extending Visual Studio Finding extensions on VS Gallery Using the SDK to create packages Creating branded, standalone apps

Visual Studio 10 Extensibility Offerings Customizing the start page Building “drop in” components with MEF Extending the VS 10 editor Managing extensions and downloads

Agenda

Page 17: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Customizing the New Start Page

Page 18: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Customizing The New Start Page

Page 19: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Custom Start Page (XAML)

demo

Page 20: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Coming Up: Components!

New managed extensibility mechanism designed from the ground up All managed – no COM artifacts Component and contract based 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

Page 21: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Component Model

I need "Foo"

I provide "Foo"

I need "Foo"

Part A

Part B Part C

Page 22: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

MEF Example: Host and Contract

static void Main(string[] args) { var container = new CompositionContainer();  var consoleWriter = new ConsoleWriter();  container.AddPart(consoleWriter);  container.AddPart(new DateOutputFormatter());  container.Compose();  consoleWriter.Write("Hello MEF, my first MEF app");  Console.ReadLine();}

public interface IOutputFormatter { string Format(string message);}

Page 23: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

MEF Example: Provide/Consume

[Export(typeof(IOutputFormatter))]public class DateOutputFormatter : IOutputFormatter { public string Format(string message) {  return string.Format("{0}: {1}", DateTime.Now, message);  }}

public class ConsoleWriter { [Import]  public IOutputFormatter Formatter { get; set; }   public void Write(string message) {   Console.WriteLine(Formatter.Format(message));  }}

Page 24: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Catalog Catalog

Catalogs Discover Parts

Container

Page 25: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

MEF In The Visual Studio Editor

The new editor is built entirely from MEF components

Extending or modifying the editor amounts to providing your own components

Many extensibility points designed to capture common paradigms…

Page 26: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Allows Us To Go From This…

Page 27: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

To This!

Page 28: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Classification: Rich Text Formatting

Rich reading experience Multiple fonts Font styles and effects Opacity Higher performance

Fewer coloring requests to language services

Composable 3rd party “mixins”

easily supported Per-line transforms

Page 29: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Adornments: Powerful Graphics

Any WPF visual Drawn on one of several

planes Two tracking modes

Associate with text Associate with screen

Animation and behavior

Page 30: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Margin And Scrollbar Control

Replace or customize existing margins and scrollbar

Define new margins All four sides

Support for spatial mapping

Page 31: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Intellisense And Smart Tags

Any 3rd party (not just language services) can: Contribute to Completion Override the presentation of Parameter Help or

Quick Info Add menu items to Smart Tags

Page 32: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Editor Components – Highlight Word

demo

Page 33: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Managing Your Extensions

What if you could discover 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?

Page 34: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Extension Manager

New “in situ” experience for extensions… Discover (via VS Gallery) Download/install/manage Update

Simplified packaging and deployment Same DILU semantics, but for both existing and

new extensibility mechanisms Xcopy deploy; no magic, no hidden state

Think unzip and a manifest in XML VS SDK will deliver simplified authoring and

“one step” publication story Used by Visual Studio and 3rd parties

Page 35: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32
Page 36: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32
Page 37: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32
Page 38: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32
Page 39: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Tools -> Extension Manager

Page 40: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

[Dis]Able, Uninstall, Update

Page 41: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Extending Visual Studio Finding extensions on VS Gallery Using the SDK to create packages Creating branded, standalone apps

Visual Studio 10 Extensibility Customizing the start page Building “drop in” components with MEF Extending the VS 10 editor Managing extensions and downloads

Your turn! Download the 2008 SDK and try the 2010 CTP

Agenda

Page 42: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Microsoft Visual Studio: Customizing and Extending Your Development Environment

Q&A

Page 43: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

Evals & Recordings

Please fill

out your

evaluation for

this session at:

This session will be available as a recording at:

www.microsoftpdc.com

Page 44: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32

© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market

conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Page 45: Tim Wagner Visual Studio Platform Dev Manager Microsoft Corporation TL32