1 # Visual Studio Extensibility Samples
3 [![Join the chat at https://gitter.im/Microsoft/extendvs](https://badges.gitter.im/Join%20Chat.svg)](http://aka.ms/dyofat)
4 [![Build status](https://ci.appveyor.com/api/projects/status/7gjewm7eiwoa2ees?svg=true)](https://ci.appveyor.com/project/AlexEyler/vssdk-extensibility-samples)
6 These samples demonstrate how to customize the appearance and behavior of the
7 Visual Studio IDE and editor.
8 The following are some of the ways in which you can extend Visual Studio:
10 * Add commands, buttons, menus, and other UI elements to the IDE
11 * Add tool windows for new functionality
12 * Add support in Visual Studio for new programming languages
13 * Add refactoring or language analyzers to fix and improve code
14 * Add a custom project type or new project or item templates
15 * Enable high-DPI/high resolutuion, theme-aware, and high contrast images and icons in your UI
16 * For Visual Studio 2013, only high-DPI images/icons are supported; use the below sample High-DPI_Images_Icons
17 * For Visual Studio 2015, samples that demonstrate using the Image Service/Catalog (for high-DPI, theme-aware,
18 and high contrast support) are denoted below with * and docs can be found [here] (http://aka.ms/VSImageService)
20 If you've never written a Visual Studio extension before, you can find out how to get started at [VisualStudio.com/integrate](http://aka.ms/pyigr3).
24 1. Clone the repo to download all samples ([How to](https://git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository#Cloning-an-Existing-Repository))
26 `git clone https://github.com/Microsoft/VSSDK-Extensibility-Samples.git`
27 2. Find samples in the table below
28 3. Read the readme included with each sample and try it in Visual Studio
31 For more details see the readme included with each sample.
33 | Sample Name | Description |
34 | ---------------------------------------- | ------------------------------------------------------------------------------------------ |
35 | [Basic_Source_Control_Provider*](Basic_Source_Control_Provider/) | Shows how to add hooks for a simple source code provider |
36 | [Build_Progress_Bar*](Build_Progress_Bar/) | Displays a tool window written in WPF showing build progress |
37 | [Caret_Fish_Eye](Caret_Fish_Eye/) | Uses line transformation API to zoom lines in proportion to cursor distance |
38 | [Code_Sweep](Code_Sweep/) | Searches for words matching terms in an XML schema across a solution |
39 | [Combo_Box](Combo_Box/) | Place combo boxes in a Visual Studio toolbar |
40 | [CommandTargetRGB](CommandTargetRGB/) | Shows how to create a multi-instance tool window |
41 | [Completion_Tooltip_Customization](Completion_Tooltip_Customization/) | Replaces the completion tooltip UI |
42 | [Diff_Classifier](Diff_Classifier/) | Classifier with color highlighting |
43 | [Editor_With_Toolbox](Editor_With_Toolbox/) | Creates a custom toolbox associated with a specific file extension |
44 | [High-DPI_Images_Icons](High-DPI_Images_Icons/) | Use these helpers to make your images/icons in *VS 2013 only* scale on high dense displays |
45 | [Highlight_Word](Highlight_Word/) | Highlight any words that match the word currently under the text cursor |
46 | [Intra-text_Adornment](Intra-text_Adornment/) | Text adornment that replaces hexadecimal color values with color swatches |
47 | [LightBulb*](LightBulb/) | Creates a custom lightbulb to set text case in text files |
48 | [MSDNSearch](MSDNSearch/) | Implements MSDN search functionality directly into Quick Search |
49 | [Menu_And_Commands*](Menu_And_Commands/) | Demonstrates how to add commands to various places in the IDE |
50 | [Ook_Language_Integration](Ook_Language_Integration/) | Implements language support for a simple programming language |
51 | [Options_Page*](Options_Page/) | Shows how to add custom pages to the Tools / Options dialog |
52 | [Reference_Package](Reference_Package/) | Boilerplate containing minimum requirements for a functional extension |
53 | [Reference_Services](Reference_Services/) | Shows how to create and consume services as a service provider |
54 | [RunningDocumentTable(RDT)_Event_Explorer](RunningDocumentTable%28RDT%29_Event_Explorer/) | Creates an explorer grid to log events in a tool window |
55 | [Single_File_Generator](Single_File_Generator/) | Creates a file generator that uses XML as basis for creating a new C# file |
56 | [Source_Code_Control_Provider*](Source_Code_Control_Provider/) | More complex example of a source code provider |
57 | [Source_Control_Provider_Status_Bar_Integration](Source_Control_Provider_Status_Bar_Integration/) | Display source control information in the Status Bar. |
58 | [Todo_Classification](Todo_Classification/) | Classifier that highlights TODO comments and displays a matching glyph |
59 | [Typing_Speed_Meter](Typing_Speed_Meter/) | Displays an adornment with a typing speed indicator in the Text Editor |
60 | [WPFDesigner_XML](WPFDesigner_XML/) | WPF-based visual designer for editing .vstemplate XML files |
61 | [WPF_Toolwindow*](WPF_Toolwindow/) | Provides a sample toolwindow that can host a WPF or WinForms control |
62 | [Windows_Forms_Controls_Installer](Windows_Forms_Controls_Installer/) | Loads custom Windows Forms controls inside the toolbox |
64 <!-- | IronPython_Integrated_Shell |Demonstrates how to create an integrated shell for IronPython
65 | IronPython_Integration | Demonstrates a custom project type and WinForms designer for IronPython
66 | IronPython_Studio_VS_Shell_Isolated | Example of using the isolated shell to host a language service -->
68 ## Other useful resources
70 * For details on how to create user experiences that are seamless and consistent within the IDE, visit
71 the [Visual Studio User Experience Guidelines](http://aka.ms/o111mv). You will also find information
72 about the common user models and interaction patterns that are used and how you can utilize them as well.
74 * You can publish your completed extension to the
75 [Visual Studio Gallery](http://aka.ms/g4brw3).
77 * Writing an extension for Visual Studio Team Services? Check out the
78 [VSO extension samples](http://aka.ms/ph0rr5) at
79 the dedicated repository.
81 This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
83 Thank you for your support for Visual Studio - we're excited to see what extensions