1 visual studio: extending visual studio with add-ins and packages philip taylor...
TRANSCRIPT
![Page 1: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/1.jpg)
1
Visual Studio: Extending Visual Visual Studio: Extending Visual Studio With Add-ins And Studio With Add-ins And PackagesPackages
Philip Taylor Philip Taylor [email protected]@microsoft.comTLN404TLN404Program Manager, Visual Studio 2005 SDKProgram Manager, Visual Studio 2005 SDKMicrosoft CorporationMicrosoft Corporation
![Page 2: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/2.jpg)
2
Why Come To This Why Come To This Session?Session?
Visual Studio Extensibility lets you Visual Studio Extensibility lets you write and add custom tools like write and add custom tools like
Custom help systems Custom help systems New languages New languages New editors New editors Tool windowsTool windows
Extensibility fits the tool to the Extensibility fits the tool to the process and not the other way process and not the other way aroundaroundUpon completing this session, Upon completing this session, attendees will have followed the attendees will have followed the steps for a complete tool window steps for a complete tool window package that extends Visual Studiopackage that extends Visual Studio
![Page 3: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/3.jpg)
3
Pre-RequirementsPre-Requirements
Must codeMust code
Be familiar withBe familiar withGeneral use of Visual StudioGeneral use of Visual Studio
COMCOM and C++, or .NET Frameworkand C++, or .NET Framework
Automation models in generalAutomation models in general
Nice to understandNice to understandVisual Studio automation modelVisual Studio automation model
![Page 4: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/4.jpg)
4
AgendaAgenda
Extensibility OverviewExtensibility Overview
Demo:Writing a ToolWindowDemo:Writing a ToolWindow
Visual Studio 2005 SDKVisual Studio 2005 SDK
![Page 5: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/5.jpg)
5
Visual Studio ExtensibilityVisual Studio ExtensibilityOptions for Extending Visual StudioOptions for Extending Visual Studio
VS User CustomizationVS User Customization
MacrosMacros
Add-InsAdd-Ins
PackagesPackages
Developer Developer ReachReach
Level of
Level of
inte
gra
tion
inte
gra
tion
Cost
of
Cost
of
inte
gra
tion
inte
gra
tion
![Page 6: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/6.jpg)
6
Extensibility MapExtensibility MapHow to ChooseHow to ChooseTypeType BenefitsBenefits LimitationsLimitationsCustomizatiCustomizationon
SimpleSimple Cannot control IDE, Cannot control IDE, can only customizecan only customize
MacrosMacros Full control of IDEFull control of IDE Cannot add featuresCannot add featuresProvided in sourceProvided in source
Add-insAdd-ins Full control of IDE Full control of IDE Compiled for performance Compiled for performance and protection of sourceand protection of sourceCan implement :Can implement :
new tool windows, new tool windows, commands, commands, Tools Options pagesTools Options pages
Cannot implement:Cannot implement:new document new document
types, types, new project types, new project types, new debug new debug
engines, engines, etcetc
PackagesPackages Full control of IDEFull control of IDECompiled for performance Compiled for performance and protection of sourceand protection of sourceFull ability to add new Full ability to add new featuresfeatures
Complex Complex development modeldevelopment model
![Page 7: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/7.jpg)
7
MacrosMacros
The Visual Studio automation object model The Visual Studio automation object model contains >140 objects, allowing control of contains >140 objects, allowing control of the IDE from a solution level all the way to the IDE from a solution level all the way to a single parameter of a single functiona single parameter of a single function
Macros can leverage nearly all of the Macros can leverage nearly all of the features of the .NET Framework, as well as features of the .NET Framework, as well as most of the automation modelmost of the automation model
Macros accessed via Tools|MacrosMacros accessed via Tools|Macros
Macros have some limitationsMacros have some limitationsMacros can only be written in the Visual Basic language Macros can only be written in the Visual Basic language
Macros cannot be used to implement new tool windows, Macros cannot be used to implement new tool windows, commands, Tools Options pagescommands, Tools Options pages
![Page 8: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/8.jpg)
8
Add-insAdd-ins
Customize, automate, and extend VSCustomize, automate, and extend VS
Provide new VS featuresProvide new VS featuresUser manageableUser manageable
Simple to buildSimple to buildAdd-in creation wizardAdd-in creation wizard
Build in any language which supports Build in any language which supports COMCOM
Leverage rich Visual Studio object Leverage rich Visual Studio object modelmodel
Available to all Visual Studio.NET Available to all Visual Studio.NET developers developers
Extensive coverage of VS featuresExtensive coverage of VS features
![Page 9: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/9.jpg)
9
Add-in Features And Add-in Features And LimitationsLimitations
Simple registration using XML ( no Simple registration using XML ( no more COM registration )more COM registration )
Unlike macros, Add-ins Unlike macros, Add-ins cancan implement new tool windows, implement new tool windows, commands, Tools Options pagescommands, Tools Options pages
However, Add-ins cannot implement However, Add-ins cannot implement new document types, new project new document types, new project types, new debug engines, etc. types, new debug engines, etc. which require a packagewhich require a package
![Page 10: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/10.jpg)
10
ToolWindow Demo:ToolWindow Demo:Visual Studio UI ElementsVisual Studio UI Elements
![Page 11: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/11.jpg)
11
ToolWindow Add-inToolWindow Add-in
Craig SkiboCraig SkiboSoftware Design EngineerSoftware Design EngineerVisual StudioVisual Studio
![Page 12: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/12.jpg)
12
Deepest possible integration with VSDeepest possible integration with VS
Add functionality seamlessly with VS Add functionality seamlessly with VS integration packagesintegration packages
Rich access to common shell featuresRich access to common shell features
Plus full access to the automation modelPlus full access to the automation model
Add new features to Visual Studio forAdd new features to Visual Studio for
IDE, Debugger, Source Control, Data Sources, etcIDE, Debugger, Source Control, Data Sources, etc
PackagesPackages
![Page 13: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/13.jpg)
13
Visual Studio Industry Partner ( VSIP ) Visual Studio Industry Partner ( VSIP ) program to provide marketing and business program to provide marketing and business supportsupport
1 Free level: Affiliate1 Free level: Affiliate
2 Paid levels: Alliance and Premier2 Paid levels: Alliance and Premier
Visual Studio 2005 SDK to provide Visual Studio 2005 SDK to provide developer tool for package developmentdeveloper tool for package development
Downloads free after brief registration processDownloads free after brief registration process
Programs And Tools For Programs And Tools For Package DevelopmentPackage Development
![Page 14: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/14.jpg)
14
Package Extensibility Package Extensibility PointsPoints
IDEIDEProject systems, Languages, Editors, ToolWindows,Project systems, Languages, Editors, ToolWindows,.NET Designers, Menus and Commands, Toolbox .NET Designers, Menus and Commands, Toolbox Integration, Tools Options Page, Property BrowserIntegration, Tools Options Page, Property BrowserHelp Integration, Setup and DeploymentHelp Integration, Setup and Deployment
DebuggerDebuggerCustom Debug EngineCustom Debug EngineExpression EvaluatorsExpression EvaluatorsType VisualizersType Visualizers
Source ControlSource ControlProject systems enabled to participate in source controlProject systems enabled to participate in source controlSource Control Provider ( Plug-in or Package )Source Control Provider ( Plug-in or Package )
Data SourcesData SourcesDesign-time Data Source Drag-n-DropDesign-time Data Source Drag-n-DropData Source ProviderData Source Provider
And MoreAnd More
![Page 15: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/15.jpg)
15
Your Managed Package
Package ArchitecturePackage Architecture
Visual Studio 2005 is the Visual Studio 2005 is the platformplatformNative Interfaces Native Interfaces provide extensibility provide extensibility pointspointsInterop Assemblies Interop Assemblies enable managed code enable managed code accessaccess
Visual Studio 2005
Native Interfaces
MPF 8.0
SDK ProvidesSDK ProvidesNative Interface IDLsNative Interface IDLsInterop AssembliesInterop AssembliesSamples, Doc, Samples, Doc, templates, etctemplates, etcPackage WizardPackage Wizard
Interop Assemblies
Your Native Packageoror
![Page 16: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/16.jpg)
16
Programming ModelProgramming Model
Features added to IDE via VsPackage Features added to IDE via VsPackage interfaceinterfaceLogical unit of extensibility consisting ofLogical unit of extensibility consisting of
CoCreate-able COM object - CoCreate-able COM object - IVsPackageIVsPackage;;Initial object created and sited by IDE Initial object created and sited by IDE Other supporting COM objectsOther supporting COM objects
Interactions between IDE and Packages Interactions between IDE and Packages abstracted via COM interfaces abstracted via COM interfaces Same architecture is used for MS built Same architecture is used for MS built features as well as 3features as well as 3rdrd party extensions! party extensions!Package development only available with Package development only available with Visual Studio 2005 SDK installsVisual Studio 2005 SDK installs
![Page 17: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/17.jpg)
17
Delayed LoadingDelayed Loading
Fundamental principleFundamental principleDelay loading code until functionality is neededDelay loading code until functionality is needed
Package exposes registry info about functionality Package exposes registry info about functionality so IDE knows when to load it so IDE knows when to load it
Registry info enables features to be exposed in UI Registry info enables features to be exposed in UI without loading Package codewithout loading Package code
Local registry enables multiple SxS versionsLocal registry enables multiple SxS versionsHKLM/Software/Microsoft/Visual Studio/7.0 ( Visual Studio 2002 )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/7.1 ( Visual Studio 2003 )
HKLM/Software/Microsoft/Visual Studio/8.0 ( Visual Studio 2005 )HKLM/Software/Microsoft/Visual Studio/8.0 ( Visual Studio 2005 )
We call this a “registry hive” We call this a “registry hive”
Delayed Loading also helps Visual Studio load Delayed Loading also helps Visual Studio load performanceperformance
![Page 18: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/18.jpg)
18
IDE ServicesIDE Services
Interface contract implemented by a Interface contract implemented by a single COM objectsingle COM object
Functionality built into the IDE is Functionality built into the IDE is exposed through Servicesexposed through Services
Packages can expose new servicesPackages can expose new services
Packages can consume functionality Packages can consume functionality from others via Servicesfrom others via Services
![Page 19: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/19.jpg)
19
IDE ServicesIDE Services
![Page 20: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/20.jpg)
20
Demo DetailsDemo DetailsToolWindow with custom Todo ListToolWindow with custom Todo List
All 10 Steps, as separate solutions, All 10 Steps, as separate solutions, available atavailable at
On Conference DVDOn Conference DVDOn MSDN dev centerOn MSDN dev center
http://http://msdn.microsoft.com/vstudio/extendmsdn.microsoft.com/vstudio/extend//
Custom “todo list” ToolWindow originally Custom “todo list” ToolWindow originally published atpublished at
http://dotnet.sys-con.com/read/105646_1.htmhttp://dotnet.sys-con.com/read/105646_1.htmAvailable as article+codeAvailable as article+code
Future article will enhance sample to Future article will enhance sample to participate in Visual Studio task listparticipate in Visual Studio task list
![Page 21: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/21.jpg)
21
Demo DetailsDemo DetailsToolWindow with custom Todo ListToolWindow with custom Todo List
10 Steps ( 0-9 ) 10 Steps ( 0-9 ) 0:Run Wizard0:Run Wizard1:Update Wizard Files1:Update Wizard Files2:Add Todo List UI2:Add Todo List UI3:Add EventHandler3:Add EventHandler4:Add Toolbar4:Add Toolbar
CTCCTCResource IDsResource IDsToolbar constructorToolbar constructor
5:Add AddTask dialog form5:Add AddTask dialog formAdd WinformAdd WinformSet Form propertiesSet Form properties
6:Wire up properties in AddTask dialog6:Wire up properties in AddTask dialog7:Wire up Toolbar button and AddTask method7:Wire up Toolbar button and AddTask method8:Static accessor and save package instance8:Static accessor and save package instance9:Add delegate+event, EventArgs subclass, event handler, and 9:Add delegate+event, EventArgs subclass, event handler, and update AddTask methodupdate AddTask method
![Page 22: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/22.jpg)
22
ToolWindow PackageToolWindow Package
Philip TaylorPhilip TaylorProgram Manager, VS ExtensibilityProgram Manager, VS ExtensibilityVisual StudioVisual Studio
![Page 23: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/23.jpg)
23
Visual Studio 2005 SDKVisual Studio 2005 SDK
Key ConceptsKey Concepts
Development PlanDevelopment Plan
Release PlanRelease Plan
Community PlanCommunity Plan
![Page 24: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/24.jpg)
24
Key ConceptsKey Concepts
Experimental HiveExperimental HiveThe SDK creates the separate registry hive to do The SDK creates the separate registry hive to do prototyping workprototyping workSamples auto-register in Experimental HiveSamples auto-register in Experimental HiveThe new SDK enables a “reset all” for the experimental The new SDK enables a “reset all” for the experimental hivehive
DLK and PLKDLK and PLKDevelopers use the Developer License Key, provided with Developers use the Developer License Key, provided with the SDKthe SDKShipping requires Package Load KeyShipping requires Package Load Key
available from http://www.vsipdev.com/plkregister.aspxavailable from http://www.vsipdev.com/plkregister.aspx
Setup and DeploymentSetup and DeploymentFinal product needs to author a setup and deployment Final product needs to author a setup and deployment project that handles:project that handles:
Presenting your company EULAPresenting your company EULAInstallInstallRegistrationRegistration
![Page 25: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/25.jpg)
25
SDK RTM FeaturesSDK RTM Features
Reorganized SDK layout and samplesReorganized SDK layout and samples8 New Reference Implementations8 New Reference Implementations
Package, Service, Menu and Commands, Package, Service, Menu and Commands, ToolWindowToolWindow
Both Managed and Native versionsBoth Managed and Native versions
Updated Debugger sampleUpdated Debugger sampleManaged Resources enabled for Managed Managed Resources enabled for Managed PackagesPackagesCTC file colorizingCTC file colorizingUpdated WizardUpdated Wizard
Using Reference Implementations as basisUsing Reference Implementations as basis
Significantly updated Help DocumentationSignificantly updated Help Documentation11stst public viewing in Sept preview public viewing in Sept preview
![Page 26: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/26.jpg)
26
Package Sample SourcePackage Sample Source
![Page 27: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/27.jpg)
27
Sample CTC FilesSample CTC Files
![Page 28: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/28.jpg)
28
SDK Release PlanSDK Release Plan
Goal is Trimester releasesGoal is Trimester releasesWith monthly previewsWith monthly previews
July and August already available: July and August already available: http://www.vsipdev.com/downloadshttp://www.vsipdev.com/downloads
On target for Nov 2005 RTM with On target for Nov 2005 RTM with Visual Studio 2005Visual Studio 2005
Release schedule possible with Agile Release schedule possible with Agile methodologymethodology
![Page 29: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/29.jpg)
29
SDK Community PlanSDK Community Plan
Available NowAvailable NowRe-vamped download pageRe-vamped download page
New VS SDK Previews as well as “Archive” VSIP New VS SDK Previews as well as “Archive” VSIP SDKSDK
Monthly sprint backlogs and monthly reviewsMonthly sprint backlogs and monthly reviewsTransparency into SDK planning processTransparency into SDK planning process
See: http://www.vsipdev.com/downloads See: http://www.vsipdev.com/downloads
• In ProcessIn ProcessWeb site for Community developed sample Web site for Community developed sample contentcontent
MVPs for forums and newsgroupsMVPs for forums and newsgroups
Post long-term backlog and enable community Post long-term backlog and enable community feedbackfeedback
The community feedback will be incorporated as part The community feedback will be incorporated as part of the weighting used by the SDK team to decide of the weighting used by the SDK team to decide prioritiespriorities
![Page 30: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/30.jpg)
30
Community ResourcesCommunity ResourcesAt PDCAt PDC
For more information, go seeFor more information, go seeLabs: TLNHOL16 Visual Studio Add-insLabs: TLNHOL16 Visual Studio Add-insLabs: TLNHOL01 Visual Studio PackagesLabs: TLNHOL01 Visual Studio PackagesLabs: TLNHOL14 Customizing Templates and Starter KitsLabs: TLNHOL14 Customizing Templates and Starter KitsTools and Languages Track lounge: Team will be thereTools and Languages Track lounge: Team will be there
After PDCAfter PDCIf you missed this related session, watch it on the DVDIf you missed this related session, watch it on the DVD
TLN404: Visual Studio ExtensibilityTLN404: Visual Studio Extensibility
MSDN dev center: MSDN dev center: http://msdn.microsoft.com/vstudio/extend/http://msdn.microsoft.com/vstudio/extend/MSDN Forum: MSDN Forum: http://forums.microsoft.com/msdn/ShowForum.aspx?http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=57 ForumID=57 Downloads: http://www.vsipdev.com/downloadsDownloads: http://www.vsipdev.com/downloads
![Page 31: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/31.jpg)
31
Call To ActionCall To Action
Explore Extensibility Hands-on LabsExplore Extensibility Hands-on LabsLabs: TLNHOL16 Visual Studio Add-insLabs: TLNHOL16 Visual Studio Add-ins
Labs: TLNHOL01 Visual Studio PackagesLabs: TLNHOL01 Visual Studio Packages
Labs: TLNHOL14 Customizing Templates Labs: TLNHOL14 Customizing Templates and Starter Kitsand Starter Kits
Work thru the sample Code for demoWork thru the sample Code for demo
Build your own extensibility solutionsBuild your own extensibility solutions
Give us feedback on the new SDK!Give us feedback on the new SDK!
![Page 32: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/32.jpg)
32
Q&AQ&A
??
![Page 33: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/33.jpg)
33
© 2005 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
![Page 34: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/34.jpg)
34
AppendixAppendix
![Page 35: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/35.jpg)
35
Demo Details:Demo Details:ToolWindow with custom Todo ListToolWindow with custom Todo List
All 10 Steps, as separate solutions, All 10 Steps, as separate solutions, available at:available at:
On Conference DVDOn Conference DVDon MSDN dev center:on MSDN dev center:
http://http://msdn.microsoft.com/vstudio/extendmsdn.microsoft.com/vstudio/extend//
Custom “todo list” ToolWindow Custom “todo list” ToolWindow originally published at:originally published at:
http://dotnet.sys-con.com/read/105646_http://dotnet.sys-con.com/read/105646_1.htm1.htmAvailable as article+codeAvailable as article+code
Future article will enhance sample to Future article will enhance sample to participate in Visual Studio task listparticipate in Visual Studio task list
![Page 36: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/36.jpg)
36
Step 0:Generate the Step 0:Generate the ProjectProjectRun the wizardRun the wizardUpdate Wizard SettingsUpdate Wizard Settings
Pick toolwindow onlyPick toolwindow only
Name PDCToolWindowName PDCToolWindow
cmdidPDCToolWindowcmdidPDCToolWindow
![Page 37: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/37.jpg)
37
Step 0:Generate the Step 0:Generate the Project Project Run the wizardRun the wizard
![Page 38: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/38.jpg)
38
Step 1:Update Wizard Step 1:Update Wizard FilesFilesRename filesRename filesRenameRename
Vspkg.cs to PDCToolWindowPackage.csVspkg.cs to PDCToolWindowPackage.cs
My tool window.cs to PDCToolWindow.csMy tool window.cs to PDCToolWindow.cs
Mycontrol.cs to Mycontrol.cs to PDCToolWindowClientarea.csPDCToolWindowClientarea.cs
![Page 39: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/39.jpg)
39
Step 1:Update Wizard Step 1:Update Wizard Files Files Solution FilesSolution FilesSolution: Tasklist SampleSolution: Tasklist Sample
Project: Tasklist SampleProject: Tasklist SampleGuids.csGuids.cs - Contains a list of all GUIDs you - Contains a list of all GUIDs you generate.generate.Key.snkKey.snk ` - The key file for signing your ` - The key file for signing your assembly.assembly.My Tool Window.csMy Tool Window.cs - Subclass of ToolWindowPane. Provides - Subclass of ToolWindowPane. Provides your Tool Window.your Tool Window.MyControl.csMyControl.cs - Contains the UI for your Tool Window. - Contains the UI for your Tool Window.PkgCmdID.csPkgCmdID.cs - Contains a list of all Command IDs you - Contains a list of all Command IDs you generate.generate.ResourcesId.csResourcesId.cs - Contains a list of Resource IDs you - Contains a list of Resource IDs you generate.generate.VsPkg.csVsPkg.cs - This is your Package for Visual Studio. This - This is your Package for Visual Studio. This is the heart of your code.is the heart of your code.
Project: Tasklist SampleUIProject: Tasklist SampleUIGuids.hGuids.h - Native equivalent of Guids.cs. - Native equivalent of Guids.cs.PkgCmdID.hPkgCmdID.h - Native equivalent of PkgCmdID.cs. - Native equivalent of PkgCmdID.cs.Resource.hResource.h - Native equivalent of ResourcesId.cs. - Native equivalent of ResourcesId.cs.Images_24bit.bmpImages_24bit.bmp - Provides 24-bit images (true color, with - Provides 24-bit images (true color, with one color used to specify transparency) for use as your tool one color used to specify transparency) for use as your tool window icon, and other purposes.window icon, and other purposes.Images_32bit.bmpImages_32bit.bmp - Provides 32-bit images (true color, with an - Provides 32-bit images (true color, with an 8-bit alpha channel) for use in your menu item and in the tool 8-bit alpha channel) for use in your menu item and in the tool bar we'll add to your tool window.bar we'll add to your tool window.Package.icoPackage.ico - Branding for use in the Help.About dialog. - Branding for use in the Help.About dialog.PkgCmd.ctcPkgCmd.ctc - Your CommandTable Compiler file. This - Your CommandTable Compiler file. This specifies all of the commands you'll use, and where they specifies all of the commands you'll use, and where they appear. We'll go over this soon.appear. We'll go over this soon.Tasklist SampleUI.rcTasklist SampleUI.rc - Native resource file used for specifying - Native resource file used for specifying your package's icon, output from the CTC compiler, bitmaps, your package's icon, output from the CTC compiler, bitmaps, and so forth. and so forth.
![Page 40: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/40.jpg)
40
Step 1:Update Wizard Step 1:Update Wizard Files Files Solution rename screenshotSolution rename screenshot
![Page 41: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/41.jpg)
41
Step 2:Add ToolWindow UIStep 2:Add ToolWindow UIAdd the TaskList UI ControlsAdd the TaskList UI Controls
Open PDCToolWindowClientarea.csOpen PDCToolWindowClientarea.csDelete the buttonDelete the buttonAdd the layout panel ( update properties )Add the layout panel ( update properties )
Columncount=1Columncount=1Dock=fillDock=fill
Add the text box ( update properties )Add the text box ( update properties )Name=txtNewTaskName=txtNewTaskAnchor=top,left,rightAnchor=top,left,rightMargin=0,0,0,0Margin=0,0,0,0
Add listview ( update properties )Add listview ( update properties )Name=lvwTasksName=lvwTasksAnchor=t,b,l,rAnchor=t,b,l,rCheckboxes=trueCheckboxes=trueColumnsColumns
Name=chDescriptinName=chDescriptinText=Description Text=Description Name = chPriorityName = chPriorityText = PriorityText = Priority
Fullrowselect=trueFullrowselect=trueGroups, header name=User TasksGroups, header name=User TasksShow groups=trueShow groups=trueView=detailsView=details
![Page 42: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/42.jpg)
42
Step 2:Add ToolWindow UI Step 2:Add ToolWindow UI
TaskList UI InTaskList UI In DesignerDesigner
![Page 43: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/43.jpg)
43
Step 3:Text Entry Step 3:Text Entry HandlingHandlingAdd the event handlerAdd the event handlerOpen PDCToolWindowClientarea.cs and view codeOpen PDCToolWindowClientarea.cs and view code
To txtNewTask, using flash button, for KeyDown eventTo txtNewTask, using flash button, for KeyDown eventAddAdd
private void txtNewTask_KeyDown(object sender, KeyEventArgs e) private void txtNewTask_KeyDown(object sender, KeyEventArgs e) { {
if (e.KeyCode == Keys.Enter) if (e.KeyCode == Keys.Enter) { {
string newItem = txtNewTask.Text.Trim(); string newItem = txtNewTask.Text.Trim(); if (newItem == string.Empty) return; if (newItem == string.Empty) return; AddTask(newItem); AddTask(newItem); txtNewTask.Text = string.Empty; txtNewTask.Text = string.Empty; e.Handled = true; e.Handled = true;
}} } } private void AddTask(string text) private void AddTask(string text) {{ ListViewItem item = new ListViewItem(text); ListViewItem item = new ListViewItem(text); item.Group = lvwTasks.Groups[0]; item.Group = lvwTasks.Groups[0]; lvwTasks.Items.Add(item);lvwTasks.Items.Add(item); } }
![Page 44: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/44.jpg)
44
Step 3:Text Entry Step 3:Text Entry HandlingHandlingAdd the Event HandlerAdd the Event Handler
![Page 45: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/45.jpg)
45
Step 4:Add Menus and Step 4:Add Menus and ButtonsButtonsAdd toolbar to ctc fileAdd toolbar to ctc fileOpen PkgCmd.ctc fileOpen PkgCmd.ctc file
AddAdd
MENUS_BEGIN MENUS_BEGIN guidguidPDCToolWindowPDCToolWindowCmdSet:ToolbarMenu,/* == Menu */CmdSet:ToolbarMenu,/* == Menu */guidguidPDCToolWindowPDCToolWindowCmdSet:ToolbarMenu,/* == Relative to Group*/ CmdSet:ToolbarMenu,/* == Relative to Group*/ 0x0100,/* == Priority */0x0100,/* == Priority */TOOLWINDOWTOOLBAR, /* == Menu Type*/ TOOLWINDOWTOOLBAR, /* == Menu Type*/ "Toolbar"; /* == Text*/ "Toolbar"; /* == Text*/ MENUS_END MENUS_END
NEWGROUPS_BEGIN NEWGROUPS_BEGIN guidguidPDCToolWindowPDCToolWindowCmdSet:ToolbarMenuGroup, /* == New Group */CmdSet:ToolbarMenuGroup, /* == New Group */guidguidPDCToolWindowPDCToolWindowCmdSet:ToolbarMenu, /* == Parent Group*/ CmdSet:ToolbarMenu, /* == Parent Group*/ 0x0100; /* == Priority */ 0x0100; /* == Priority */ NEWGROUPS_END NEWGROUPS_END
BUTTONS_BEGIN BUTTONS_BEGIN guidguidPDCToolWindowPDCToolWindowCmdSet:cmdidAddTask, /* == Command */CmdSet:cmdidAddTask, /* == Command */guidguidPDCToolWindowPDCToolWindowCmdSet:ToolbarMenuGroup, /* == Parent Group */ CmdSet:ToolbarMenuGroup, /* == Parent Group */ 0x0100, /* == Priority */ 0x0100, /* == Priority */ guidguidPDCToolWindowPDCToolWindowCmdSet:bmpPic2, /* == Image */ CmdSet:bmpPic2, /* == Image */ BUTTON, /* == Button Type */ BUTTON, /* == Button Type */ , /* == Visibility */ , /* == Visibility */ "Add Task"; /* == Text */"Add Task"; /* == Text */BUTTONS_ENDBUTTONS_END
![Page 46: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/46.jpg)
46
Step 4:Add Menus and Step 4:Add Menus and Buttons Buttons Add toolbar to ctc fileAdd toolbar to ctc file
![Page 47: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/47.jpg)
47
Step 4:Menus and Buttons Step 4:Menus and Buttons
Add toolbar, PkgCmd-ID.h fileAdd toolbar, PkgCmd-ID.h fileAddAdd
#define ToolbarMenu 0x1000#define ToolbarMenu 0x1000
#define ToolbarMenuGroup 0x1100#define ToolbarMenuGroup 0x1100
#define cmdidAddTask 0x110 #define cmdidAddTask 0x110
![Page 48: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/48.jpg)
48
Step 4:Add Menus and Step 4:Add Menus and Buttons Buttons Add toolbar, PkgCmdID.h fileAdd toolbar, PkgCmdID.h file
![Page 49: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/49.jpg)
49
Step 4:Menus and Buttons Step 4:Menus and Buttons
Add toolbar, PkgCmdID.cs fileAdd toolbar, PkgCmdID.cs fileAddAdd
public const int cmdidAddTask = public const int cmdidAddTask = 0x110;0x110;
public const int ToolbarMenu = 0x1000;public const int ToolbarMenu = 0x1000;
public const int ToolbarMenuGroup = public const int ToolbarMenuGroup = 0x1100; 0x1100;
![Page 50: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/50.jpg)
50
Step 4:Add Menus and Step 4:Add Menus and Buttons Buttons Add toolbar, PkgCmdID.cs fileAdd toolbar, PkgCmdID.cs file
![Page 51: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/51.jpg)
51
Step 4:Add Menus and Step 4:Add Menus and Buttons Buttons Add toolbar creation to Add toolbar creation to pdcToolWindow.cspdcToolWindow.cs
Add to constructorAdd to constructor
this.ToolBar = new this.ToolBar = new System.ComponentModel.Design.CommandID(System.ComponentModel.Design.CommandID( GuidList.guid GuidList.guidPDCToolWindowPDCToolWindowCmdSet,CmdSet,
PkgCmdIDList.ToolbarMenu);PkgCmdIDList.ToolbarMenu);
![Page 52: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/52.jpg)
52
Step 4:Add Menus and Step 4:Add Menus and Buttons Buttons Add toolbar creation to Add toolbar creation to pdcToolWindow.cspdcToolWindow.cs
![Page 53: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/53.jpg)
53
Step 5:Add Task-Priority Step 5:Add Task-Priority FormFormAdd Form Controls and PropertiesAdd Form Controls and PropertiesAdd a new form AddTaskDialog.csAdd a new form AddTaskDialog.cs
Add labelAdd labelText property &DescriptionText property &Description
Add multiline textbox (need to set Add multiline textbox (need to set property)property)
Name=txtDescriptionName=txtDescriptionAdd a labelAdd a label
Text property &PriorityText property &PriorityAdd a comboboxAdd a combobox
Name=cmbPriorityName=cmbPriorityItems ( High, Medium, Low )Items ( High, Medium, Low )
Add 2 ButtonsAdd 2 ButtonsName=btnOk Name=btnOk Name=btnCancelName=btnCancel
![Page 54: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/54.jpg)
54
Step 5:Add Task-Priority Step 5:Add Task-Priority Form Form Set Form propertiesSet Form properties
BtnOk, btnCancelBtnOk, btnCancelSet accept button to btnOkSet accept button to btnOk
Button Property:Set DialogResult to OKButton Property:Set DialogResult to OKSet cancel button to bntCancelSet cancel button to bntCancel
Form border styleForm border styleFixed dialogFixed dialog
Maximize boxMaximize boxFalseFalse
Minimize boxMinimize boxFalseFalse
ShowInTaskBarShowInTaskBarFalseFalse
ShowIconShowIconfalsefalse
StartPositionStartPositioncenterParentcenterParent
TextTextAdd TaskAdd Task
![Page 55: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/55.jpg)
55
Step 5:Add Task-Priority Step 5:Add Task-Priority Form Form UI layoutUI layoutEnsure Tab Order matches UI Ensure Tab Order matches UI
GuidelinesGuidelinesArticle adds cancel firstArticle adds cancel first
Simply by adding Ok first avoids having Simply by adding Ok first avoids having to diddle with tab orderto diddle with tab order
![Page 56: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/56.jpg)
56
Step 5:Add Task-Priority Step 5:Add Task-Priority Form Form Set form propertiesSet form properties
![Page 57: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/57.jpg)
57
Step 6:Retrieve User Data Step 6:Retrieve User Data Wire up properties in AddTaskDialogWire up properties in AddTaskDialog
View codeView codeAdd:Add:
public string Descriptionpublic string Description{{
getget{{
return txtDescription.Text;return txtDescription.Text;}}setset{{
ttxtDescription.Text = value;xtDescription.Text = value;}}
}}
![Page 58: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/58.jpg)
58
Step 6:Retrieve User Data Step 6:Retrieve User Data Wire up properties in AddTaskDialogWire up properties in AddTaskDialog
View codeView codeAdd:Add:
public string Prioritypublic string Priority{{
getget{{
return cmbPriority.SelectedText;return cmbPriority.SelectedText;}}setset{{
cmbPriority.SelectedText = value; cmbPriority.SelectedText = value; //this could cause problems if a funky //this could cause problems if a funky gets gets value value
passed in.passed in.}}
}}
![Page 59: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/59.jpg)
59
Step 6:Retrieve User Data Step 6:Retrieve User Data Wire up properties in AddTaskDialogWire up properties in AddTaskDialog
![Page 60: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/60.jpg)
60
Step 7:Enable Toolbar Step 7:Enable Toolbar ButtonsButtonsWire up the toolbar buttonWire up the toolbar buttonIn PDCToolWindowPackage.cs, In PDCToolWindowPackage.cs, in Initialize and after existing tool window in Initialize and after existing tool window commandcommandAddAdd
CommandID addTaskCommandIDCommandID addTaskCommandID;;MenuCommand addTaskMenuCmdMenuCommand addTaskMenuCmd;;
// // CommandID to match CTC commandCommandID to match CTC commandaddTaskCommandID = new CommandID(addTaskCommandID = new CommandID( GuidList.guidPDCToolWindowCmdSet,GuidList.guidPDCToolWindowCmdSet,
(int)PkgCmdIDList.cmdidAddTask);(int)PkgCmdIDList.cmdidAddTask);
//construct MenuCommand that combines eventHandler with CommandID//construct MenuCommand that combines eventHandler with CommandIDaddTaskMenuCmd = new MenuCommand(new EventHandler(AddTask),addTaskMenuCmd = new MenuCommand(new EventHandler(AddTask),
addTaskCommandID);addTaskCommandID);
// pass to VS IDE// pass to VS IDEmcs.AddCommand(addTaskMenuCmd);mcs.AddCommand(addTaskMenuCmd);
![Page 61: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/61.jpg)
61
Step 7:Enable Toolbar Step 7:Enable Toolbar Buttons Buttons AddTask methodAddTask methodOpen PDCToolWindowPackage.csOpen PDCToolWindowPackage.cs
After ShowToolWindowAfter ShowToolWindow
Add:Add:
private void AddTask(object private void AddTask(object sender,EventArgs e)sender,EventArgs e)
{{
AddTaskDialog atd = new AddTaskDialog atd = new AddTaskDialog();AddTaskDialog();
atd.ShowDialog()atd.ShowDialog();;
}}
![Page 62: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/62.jpg)
62
Step 7:Enable Toolbar Step 7:Enable Toolbar Buttons Buttons Wire up Toolbar and addTask CommandWire up Toolbar and addTask Command
![Page 63: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/63.jpg)
63
Step 8:Data Forwarding Step 8:Data Forwarding Static Accessor for event subscribingStatic Accessor for event subscribing
Open PDCToolWindowPackage.csOpen PDCToolWindowPackage.csAfter DisposeAfter DisposeAdd:Add:
private static PDCToolWindow staticPackage = null;private static PDCToolWindow staticPackage = null;public static PDCToolWindowpublic static PDCToolWindow
PDCToolWindowSingletonPDCToolWindowSingleton{{
getget{{
return staticPackage;return staticPackage;}}
}}
![Page 64: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/64.jpg)
64
Step 8:Data Forwarding Step 8:Data Forwarding Save package instanceSave package instance
Open PDCToolWindowPackge.csOpen PDCToolWindowPackge.cs
In constructor, add last:In constructor, add last:
PDCToolWindow.staticPackage = PDCToolWindow.staticPackage = this;this;
![Page 65: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/65.jpg)
65
Step 8:Data Forwarding Step 8:Data Forwarding Static Accessor and Save package Static Accessor and Save package instanceinstance
![Page 66: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/66.jpg)
66
Step 9:Data Forwarding Step 9:Data Forwarding Add delegate and eventAdd delegate and event
Open PDCToolWindowPackage.csOpen PDCToolWindowPackage.cs
Add, before constructor:Add, before constructor:
public delegate void TaskCreated(object public delegate void TaskCreated(object sender, sender, TaskCreatedEventArgs e);TaskCreatedEventArgs e);
public event TaskCreated OnTaskCreated; public event TaskCreated OnTaskCreated;
![Page 67: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/67.jpg)
67
Step 9:Data Forwarding Step 9:Data Forwarding Add EventArgs subclass to matchAdd EventArgs subclass to match
Open PDCToolWindowPackage.csOpen PDCToolWindowPackage.csAdd at the endAdd at the end
public class TaskCreatedEventArgs : EventArgspublic class TaskCreatedEventArgs : EventArgs{{
private string m_description;private string m_description;private string m_priority;private string m_priority;
public TaskCreatedEventArgs(string desc, string pri)public TaskCreatedEventArgs(string desc, string pri){{
m_description = desc;m_description = desc;m_priority = pri;m_priority = pri;
}}public string Descriptionpublic string Description{{
get { return m_description; }get { return m_description; }}}public string Prioritypublic string Priority{{
get { return m_priority; }get { return m_priority; }}}
}}
![Page 68: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/68.jpg)
68
Step 9:Data Forwarding Step 9:Data Forwarding Add delegate,event,and Eventargs Add delegate,event,and Eventargs subclassssubclasss
![Page 69: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/69.jpg)
69
Step 9:Data ForwardingStep 9:Data ForwardingAdd event handler for EventArgs Add event handler for EventArgs subclasssubclassOpen PDCToolWindowClientarea.csOpen PDCToolWindowClientarea.cs
Add to constructor:Add to constructor:
PDCToolWindow.PDCToolWindowSingleton.OnTaskCreated += PDCToolWindow.PDCToolWindowSingleton.OnTaskCreated += new PDCToolWindow.TaskCreated(TaskWasCreated); new PDCToolWindow.TaskCreated(TaskWasCreated);
And add method:And add method:
private void TaskWasCreated(object sender, private void TaskWasCreated(object sender, TaskCreatedEventArgs e)TaskCreatedEventArgs e)
{{
AddTask(e.Description);AddTask(e.Description);
}}
![Page 70: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/70.jpg)
70
Step 9:Data Forwarding Step 9:Data Forwarding Add event handler for event argsAdd event handler for event args
![Page 71: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/71.jpg)
71
Step 9:Data ForwardingStep 9:Data ForwardingUpdate AddTaskUpdate AddTask
Open PDCToolWindowPackage.csOpen PDCToolWindowPackage.csUpdate AddTask method:Update AddTask method:
private void AddTask(object sender, EventArgs e)private void AddTask(object sender, EventArgs e){{
AddTaskDialog atd = new AddTaskDialog();AddTaskDialog atd = new AddTaskDialog();if (atd.ShowDialog() == if (atd.ShowDialog() == System.Windows.Forms.DialogResult.OK)System.Windows.Forms.DialogResult.OK){{
string description = atd.Description;string description = atd.Description;string priority = atd.Priority;string priority = atd.Priority;
if (OnTaskCreated != null)if (OnTaskCreated != null) OnTaskCreated(this, OnTaskCreated(this,
new TaskCreatedEventArgs(description,new TaskCreatedEventArgs(description, priority)); //add thispriority)); //add this}}
} }
![Page 72: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/72.jpg)
72
Step 9:Data Forwarding Step 9:Data Forwarding Update AddTaskUpdate AddTask
![Page 73: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/73.jpg)
73
Step 10:Done Step 10:Done TestTest
Test in Experimental HiveTest in Experimental Hive
See View Menu->Other WindowsSee View Menu->Other Windows
See Toolbar->Other WindowsSee Toolbar->Other Windows
![Page 74: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/74.jpg)
74
Test:View MenuTest:View Menu
![Page 75: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft](https://reader036.vdocuments.us/reader036/viewer/2022081516/56649eb65503460f94bbf2ac/html5/thumbnails/75.jpg)
75
Test:ToolbarTest:Toolbar