Extending Visual Studio 2015, VS SDK NuGet and the CPS
Today we revisit the Visual Studio 2015 Extensibility story that was started covering in The Future of Visual Studio Extensions is Bright (and easier :), talking about more of the extension goodness that's available and then about the new Common Project System.
First Heather Brown, Principal Program Manager, Visual Studio Platform Team just posted more about the coming changes in the VS 2015. From my seat, the best news is that the Visual Studio SDK reference assemblies will be officially available via NuGet. That and the mentioned streamlining of getting the full SDK will make Extension Dev's lives so much easier... :)
When we decided to expand Visual Studio 2015 in the hopes of making it *the* premier platform for cross-platform development, we acknowledged that the ability for our customers to extend, customize, and generally make it their own was absolutely, critically important. It is a win-win: make an extension and you get a product or tailored experience for your specific scenario, and we – Microsoft – see Visual Studio’s potential audience get a little bit bigger and a little bit happier.
Starting with Visual Studio 2013 Community, and continuing with Visual Studio 2015 Community, you can create and use Extensions in a free version of our IDE. Get started today by directly downloading the Visual Studio Extensibility Tools or checkout the Visual Studio 2015 RC Downloads page. Now let’s look at all the new ways in which you can make Visual Studio your own!
Item templates: the convenient way to create basic extensions!
In Visual Studio 2015, it is exceptionally easy to add new functionality to your extension. In earlier versions of VS, you depended on project templates and “merge projects” to get more functionality. Now, all of your favorite extensibility templates are available to use as item templates, which means adding a new menu command or editor feature is as easy as adding an item to an existing extensibility project. If you would like to see any other item templates, request them here. To get started with item templates, check out Creating Templates for Projects and Items in Visual Studio, Starting to Develop Visual Studio Extensions, and Creating an Extension with an Editor Item Template.
Getting the VSSDK Just Got Easier
In the past, when you opened an extensibility project in Visual Studio without having the VSSDK,you would get a cryptic error message in a big, confusing dialog box. Now, you can simply open the project directly – no fuss.
If you don’t have the VS SDK installed, Visual Studio 2015 asks you to install it when you want to do things such as add an item template.
To get started, download the VS SDK directly or check out the Visual Studio 2015 RC download page, under Additional Tools, to learn more about the SDK. In the final release of Visual Studio 2015, you the VS SDK is part of your initial setup.
Visual Studio SDK reference assemblies via NuGet
For increased portability, and sharing of extension projects, you can use the NuGet versions of the VSSDK Reference Assemblies. This makes it so you have access to everything you need for an extensibility project on any connected machine. No need to spend time downloading the SDK, and then adding the references into your project. When you author your extension project with the NuGet-based reference assemblies, it pulls everything you need directly into your project.
New and improved docs
We’ve overhauled the documentation to help you better discover the best walkthroughs and reduce the headache of finding the best APIs for the job. Get started with our up-to-date Visual Studio SDK walkthroughs.
Write Your Own Tools for Visual Studio
Visual Studio is a fully extensibility development platform. In addition to all of the powerful tools that it provides, you can also use tools written by the community as well as create your own tools. Visual Studio Extensions empower you to extend almost every part of Visual Studio:
- Add menu items and toolbars items that activate functionality you build
- Create tool windows that offer entirely new functionality
- Provide IntelliSense for emerging programming languages
- Offer light bulbs that help developers write better code
- Integrate new project types into Visual Studio
Visual Studio Gallery
Once you've built your extension, share it! The Visual Studio Gallery makes your extensions available to thousands of Visual Studio users. Contribute to the Visual Studio community and show off your dev skills.
There are many ways to contribute to Extensibility
- Submit bugs through Connect
- Write your own extensions and share them on GitHub
- Engage with other Visual Studio Extension users and developers on StackOverflow with the tag Visual-Studio-Extensions.
- Join the free Visual Studio Partner Program
Since Visual Studio 2008, developers have been able to extend Visual Studio to add new capabilities to the IDE. With the new Community edition, any developer can use those extensions as well. Extend the same platform APIs as the product team to build productivity tools like the thousands of extensions on the Visual Studio Gallery, or add new capabilities to Visual Studio like our partners do today. Add new UI such as menu items and tool windows that expose useful productivity tools.
Visual Studio was built for extensibility to expand the functionality of the IDE. Here are some examples of how you can extend the Visual Studio IDE.
- Add new UI such as menu items and tool windows to add your own tools.
- Extend the editor and our compilers to analyze and understand your code.
- Extend Visual Studio Online and Team Foundation Server to analyze information, manage the development workflow, or integrate external development services.
- Integrate a new compiler and project type into Visual Studio to bring new assets into your solution.
- Distribute your tool with the Visual Studio shell even if your users don’t have Visual Studio.
- Reach millions of Visual Studio developers by publishing extensions on the Gallery, for free.
Get started by downloading the Visual Studio SDK. The Visual Studio SDK provides the libraries, tools, and project templates for creating a variety of different extensions.
These tutorials take you step by step through creating your first extensions and learning about what’s possible in the IDE.
- Hello World...
- Menu and Commands...
- Tool Windows...
- Editor Extensions...
- .NET Compiler Platform (“Roslyn”) Extensions...
- New Project Templates...
- Deploy your extension...
- Learn more ...
The Visual Studio Project System Extensibility SDK simplifies the development of new project types for Visual Studio. The SDK contains a variety of project and item templates that streamline extending Visual Studio with new project types. The SDK also ships with a number of analyzers to ensure extensions follow best practices and will always be responsive. For more information, see the SDK documentation at https://aka.ms/vsprojectsystemexsdkdocs.
Visual Studio Project System Extensibility Documentation
Visual Studio can be extended in many ways, including adding new types of projects and augmenting existing ones. This repository contains the documentation and best practices for creating extensions that add new project types to Visual Studio. We welcome community input if you wish to contribute new topics or find any issues.
The Visual Studio Common Project System (CPS) is a unified, extensible, scalable, performant project system that ships in the box with Visual Studio and is also rehostable to other hosts such as console apps and Azure web applications. It provides a rich, managed API that offers clients the ability to query and manipulate project data, as well as project type authors an extensible framework for customizing project behavior to suit their needs.
Every language in VS has at least one project system behind it, and sometimes more. Each language also has many "flavors" that ship in the box. More languages and more flavors also ship as extensions to VS. Each of these comes with large source code bases and binary images that must be loaded in memory. Inconsistent behaviors between project system implementations make writing a component that interacts with more than one type of project very difficult. Documentation on expected behavior is sparse and often ambiguous.
CPS targets replacing all the project systems Microsoft ships, and allowing 3rd parties to also replace their own, with just one Common project system implementation that can be extended on a per-project basis to provide the unique experiences a type of project may require, but with very consistent behaviors everywhere else.
CPS has been designed with modern requirements in mind, so rebasing a project system on CPS automatically gives it the promise of rehostability (Monaco, Azure), scalability and performance that customers demand for their large solutions.
Is CPS right for me?
We hope so. Some project systems may be recreateable on CPS in just a few engineering weeks. More complex ones can obviously take much longer. One design principle behind CPS though is that when you build on CPS you focus on what makes your projects unique rather than spending 95% of your time implementing the same behaviors every other project system has....