Those are pretty incredible tools, right?
Ever thought about developing an extensions for yourself and your team? Maybe a little something that edits the very difficult configuration files your company invented?
Or how about an extensions that automatically performs a localization merge?
There are a lot of advantages to in-house VS extensions and some big companies even have a dedicated team to work on in-house VS extensions. Extensions development is a very useful skill to have in your toolbox.
Working on OzCode, an awesome extension that helps debugging, I discovered a new world of knowledge. I’m going to write a series of blog posts introducing the wonderful world of VS extensibility.
So what can a VS extension do?
If you used Resharper or any other mentioned extension, you know the extension can do almost anything. Here are some examples:
Add commands to VS Menu.
Analyze code files with Roslyn.
Change code files and projects.
Highlight / Underline / Change code format in any way.
Add whatever adorners imaginable to code editor area. For example, place a sticky post-it note cards. (We’ll do that ourselves)
Show popups and Windows
Add “Margins” to code editor area from left, top, right and bottom. For example line numbers on the left of your code is a margin.
Create refactoring suggestions with Ctrl + “.”
It’s harder to think of things you can’t do really.
How to create a Visual Studio extension?
An extension is a regular .NET project. It compiles into a .vsix file, which can be installed and uploaded to Visual Studio’s extension marketplace.
To create an extension, go to File -> New Project and choose VSIX project
This is going to create an empty .NET project with 2 additions.
- A vsixmanifest file. This contains all the information you’ll need to fill when placing the extension on the marketplace (like Product Name).
- Clicking on project properties -> Debug, you’ll see that running the project with F5 will launch a new instance of Visual Studio experimental instance. The experimental instance has different settings than the regular VS. Which means you have different extensions installed on a regular instance of VS and on an experimental instance. Basically this means you can easily develop and debug your extension.
I’m going to introduce a new part of VSIX development in each tutorial blog post. To demonstrate all the features, I’ll show a simple extension to document code called CodyDocs.
CodyDocs will save the code documentation in a separate file, not in the code itself (.cs.cdocs). The extension will take care to show the documentation content in a heads up display in the code editor.
In each post I’ll go over a different part of extensions development, which will eventually become a fully working documentation extension with the source code on GitHub.
Tutorial Table of Contents:
Part 1: Introduction to VS extensibility (You are here)
Part 2: Add Menu Item
Part 3: Add command to context menu and get selected code Part 4: Show a popup Window Part 5: Highlight code in Editor part 6: Follow a span of code with TrackingSpan Part 7: Insert buttons between text characters with Adornments
Part 8: Add UI in the indicator margin with Glyphs