Visual Studio: Extending Visual Studio With Add-ins And Packages. Philip Taylor ptaylor@microsoft.com TLN404 Program Manager, Visual Studio 2005 SDK Microsoft Corporation. Why Come To This Session?. Visual Studio Extensibility lets you write and add custom tools like
01 / 75Visual Studio: Extending Visual Studio With Add-ins And Packages
1 / 17
Télécharger la présentation
Visual Studio: Extending Visual Studio With Add-ins And Packages
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
Why Come To This Session? • Visual Studio Extensibility lets you write and add custom tools like • Custom help systems • New languages • New editors • Tool windows • Extensibility fits the tool to the process and not the other way around • Upon completing this session, attendees will have followed the steps for a complete tool window package that extends Visual Studio
Pre-Requirements • Must code • Be familiar with • General use of Visual Studio • COM and C++, or .NET Framework • Automation models in general • Nice to understand • Visual Studio automation model
Agenda • Extensibility Overview • Demo:Writing a ToolWindow • Visual Studio 2005 SDK
Packages Cost of integration Level of integration Add-Ins Macros VS User Customization Visual Studio ExtensibilityOptions for Extending Visual Studio Developer Reach
Macros • The Visual Studio automation object model contains >140 objects, allowing control of the IDE from a solution level all the way to a single parameter of a single function • Macros can leverage nearly all of the features of the .NET Framework, as well as most of the automation model • Macros accessed via Tools|Macros • Macros have some limitations • Macros can only be written in the Visual Basic language • Macros cannot be used to implement new tool windows, commands, Tools Options pages
Add-ins • Customize, automate, and extend VS • Provide new VS features • User manageable • Simple to build • Add-in creation wizard • Build in any language which supports COM • Leverage rich Visual Studio object model • Available to all Visual Studio.NET developers • Extensive coverage of VS features
Add-in Features And Limitations • Simple registration using XML ( no more COM registration ) • Unlike macros, Add-ins can implement new tool windows, commands, Tools Options pages • However, Add-ins cannot implement new document types, new project types, new debug engines, etc. which require a package
ToolWindow Add-in Craig Skibo Software Design Engineer Visual Studio
Packages • Deepest possible integration with VS • Add functionality seamlessly with VS integration packages • Rich access to common shell features • Plus full access to the automation model • Add new features to Visual Studio for • IDE, Debugger, Source Control, Data Sources, etc
Programs And Tools For Package Development • Visual Studio Industry Partner ( VSIP ) program to provide marketing and business support • 1 Free level: Affiliate • 2 Paid levels: Alliance and Premier • Visual Studio 2005 SDK to provide developer tool for package development • Downloads free after brief registration process
Package Extensibility Points • IDE • Project systems, Languages, Editors, ToolWindows, • .NET Designers, Menus and Commands, Toolbox Integration, Tools Options Page, Property Browser • Help Integration, Setup and Deployment • Debugger • Custom Debug Engine • Expression Evaluators • Type Visualizers • Source Control • Project systems enabled to participate in source control • Source Control Provider ( Plug-in or Package ) • Data Sources • Design-time Data Source Drag-n-Drop • Data Source Provider • And More
Package Architecture • Visual Studio 2005 is the platform • Native Interfaces provide extensibility points • Interop Assemblies enable managed code access Your Native Package Your Managed Package or MPF 8.0 Interop Assemblies Native Interfaces Visual Studio 2005 • SDK Provides • Native Interface IDLs • Interop Assemblies • Samples, Doc, templates, etc • Package Wizard
Programming Model • Features added to IDE via VsPackage interface • Logical unit of extensibility consisting of • CoCreate-able COM object - IVsPackage;Initial object created and sited by IDE • Other supporting COM objects • Interactions between IDE and Packages abstracted via COM interfaces • Same architecture is used for MS built features as well as 3rd party extensions! • Package development only available with Visual Studio 2005 SDK installs
Delayed Loading • Fundamental principle • Delay loading code until functionality is needed • Package exposes registry info about functionality so IDE knows when to load it • Registry info enables features to be exposed in UI without loading Package code • Local registry enables multiple SxS versions HKLM/Software/Microsoft/Visual Studio/7.0 ( Visual Studio 2002 ) HKLM/Software/Microsoft/Visual Studio/7.1 ( Visual Studio 2003 ) HKLM/Software/Microsoft/Visual Studio/8.0 ( Visual Studio 2005 ) We call this a “registry hive” • Delayed Loading also helps Visual Studio load performance
IDE Services • Interface contract implemented by a single COM object • Functionality built into the IDE is exposed through Services • Packages can expose new services • Packages can consume functionality from others via Services
Demo DetailsToolWindow with custom Todo List • All 10 Steps, as separate solutions, available at • On Conference DVD • On MSDN dev center http://msdn.microsoft.com/vstudio/extend/ • Custom “todo list” ToolWindow originally published at • http://dotnet.sys-con.com/read/105646_1.htm • Available as article+code • Future article will enhance sample to participate in Visual Studio task list
Demo DetailsToolWindow with custom Todo List • 10 Steps ( 0-9 ) • 0:Run Wizard • 1:Update Wizard Files • 2:Add Todo List UI • 3:Add EventHandler • 4:Add Toolbar • CTC • Resource IDs • Toolbar constructor • 5:Add AddTask dialog form • Add Winform • Set Form properties • 6:Wire up properties in AddTask dialog • 7:Wire up Toolbar button and AddTask method • 8:Static accessor and save package instance • 9:Add delegate+event, EventArgs subclass, event handler, and update AddTask method
ToolWindow Package Philip Taylor Program Manager, VS Extensibility Visual Studio
Visual Studio 2005 SDK • Key Concepts • Development Plan • Release Plan • Community Plan
Key Concepts • Experimental Hive • The SDK creates the separate registry hive to do prototyping work • Samples auto-register in Experimental Hive • The new SDK enables a “reset all” for the experimental hive • DLK and PLK • Developers use the Developer License Key, provided with the SDK • Shipping requires Package Load Key • available from http://www.vsipdev.com/plkregister.aspx • Setup and Deployment • Final product needs to author a setup and deployment project that handles: • Presenting your company EULA • Install • Registration
SDK RTM Features • Reorganized SDK layout and samples • 8 New Reference Implementations • Package, Service, Menu and Commands, ToolWindow • Both Managed and Native versions • Updated Debugger sample • Managed Resources enabled for Managed Packages • CTC file colorizing • Updated Wizard • Using Reference Implementations as basis • Significantly updated Help Documentation • 1st public viewing in Sept preview
SDK Release Plan • Goal is Trimester releases • With monthly previews • July and August already available: http://www.vsipdev.com/downloads • On target for Nov 2005 RTM with Visual Studio 2005 • Release schedule possible with Agile methodology
SDK Community Plan • Available Now • Re-vamped download page • New VS SDK Previews as well as “Archive” VSIP SDK • Monthly sprint backlogs and monthly reviews • Transparency into SDK planning process • See: http://www.vsipdev.com/downloads • In Process • Web site for Community developed sample content • MVPs for forums and newsgroups • Post long-term backlog and enable community feedback • The community feedback will be incorporated as part of the weighting used by the SDK team to decide priorities
Community Resources • At PDC • For more information, go see • Labs: TLNHOL16 Visual Studio Add-ins • Labs: TLNHOL01 Visual Studio Packages • Labs: TLNHOL14 Customizing Templates and Starter Kits • Tools and Languages Track lounge: Team will be there • After PDC • If you missed this related session, watch it on the DVD • TLN404: Visual Studio Extensibility • MSDN dev center: http://msdn.microsoft.com/vstudio/extend/ • MSDN Forum: http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=57 • Downloads: http://www.vsipdev.com/downloads
Call To Action • Explore Extensibility Hands-on Labs • Labs: TLNHOL16 Visual Studio Add-ins • Labs: TLNHOL01 Visual Studio Packages • Labs: TLNHOL14 Customizing Templates and Starter Kits • Work thru the sample Code for demo • Build your own extensibility solutions • Give us feedback on the new SDK!
Demo Details:ToolWindow with custom Todo List • All 10 Steps, as separate solutions, available at: • On Conference DVD • on MSDN dev center: http://msdn.microsoft.com/vstudio/extend/ • Custom “todo list” ToolWindow originally published at: • http://dotnet.sys-con.com/read/105646_1.htm • Available as article+code • Future article will enhance sample to participate in Visual Studio task list
Step 1:Update Wizard FilesRename files • Rename • Vspkg.cs to PDCToolWindowPackage.cs • My tool window.cs to PDCToolWindow.cs • Mycontrol.cs to PDCToolWindowClientarea.cs
Step 1:Update Wizard Files Solution Files • Solution: Tasklist Sample • Project: Tasklist SampleGuids.cs - Contains a list of all GUIDs you generate.Key.snk ` - The key file for signing your assembly.My Tool Window.cs - Subclass of ToolWindowPane. Provides your Tool Window.MyControl.cs - Contains the UI for your Tool Window.PkgCmdID.cs - Contains a list of all Command IDs you generate.ResourcesId.cs - Contains a list of Resource IDs you generate.VsPkg.cs - This is your Package for Visual Studio. This is the heart of your code. Project: Tasklist SampleUIGuids.h - Native equivalent of Guids.cs.PkgCmdID.h - Native equivalent of PkgCmdID.cs.Resource.h - Native equivalent of ResourcesId.cs.Images_24bit.bmp - Provides 24-bit images (true color, with one color used to specify transparency) for use as your tool window icon, and other purposes.Images_32bit.bmp - Provides 32-bit images (true color, with an 8-bit alpha channel) for use in your menu item and in the tool bar we'll add to your tool window.Package.ico - Branding for use in the Help.About dialog.PkgCmd.ctc - Your CommandTable Compiler file. This specifies all of the commands you'll use, and where they appear. We'll go over this soon.Tasklist SampleUI.rc - Native resource file used for specifying your package's icon, output from the CTC compiler, bitmaps, and so forth.