 Hi, my name is Will Smith and I'm a Program Manager at Microsoft. I'm responsible for extensibility and integration for Visual Studio Online and Team Foundation Server. In this video, I'm going to show you the new Visual Studio Marketplace, talk about extensions and how users can discover them, and how you as an extension developer can actually publish an extension to the Marketplace. The Visual Studio Marketplace is a one-stop shop for tools, extensions, and services that help users make the most of Visual Studio, Visual Studio Online, and Visual Studio Code. Teams of every size and developers can find the tools they need to create any type of app, and creating experiences perfectly tailored for them in the way that they work. On the Marketplace, users can find top extensions for Visual Studio from the Visual Studio Gallery, Visual Studio Online, and Visual Studio Code. Users can discover services and other tools to integrate with BSO and TFS as well. So now I want to focus on a new capability that we're launching, Extensions for Visual Studio Online. An extension for Visual Studio Online is very similar to an extension for Visual Studio. Extensions provide new capabilities for users directly within the experience that Microsoft has provided. Extensions can contribute all across Visual Studio Online, and more and more contribution points are lighting up every day. So as an extension developer, you can contribute all across Visual Studio Online. You can contribute new actions to toolbars and menus, you can contribute new hubs that light up right next to the Microsoft provided hubs, you can contribute new build and release tasks. You can also now contribute new dashboard widgets. The work item form is one of the most popular places in Visual Studio Online. You as an extension developer can customize it with new capabilities like toolbar actions, groups, and tabs, and extending the work item form starts with the technologies you already know and love. So extensions are developed with whatever IDE you want, Visual Studio, Visual Studio Code, IntelliJ, Eclipse, it doesn't matter, and extensions are built using all your favorite web technologies like JavaScript, HTML, CSS. As you're developing your extension, you can develop and test it right from within Visual Studio Online by first publishing it to the marketplace. Once your extension is public, users can find it both from within the product or from the web via the marketplace. Let's go ahead and see publishing and developing an extension in action. Okay. So let's start by looking at an extension manifest. An extension manifest describes the extension. It describes things like the ID, the unique identifier of the extension, the version, the name, the description, and other properties. It's also where an extension declares all the things that it wants to contribute into the system. So for example, this DSO team calendar extension that we're looking at is contributing things like new hubs. So it's contributing a calendar hub that's going to light up basically at our project level in our home hub. It's also contributing things like event sources. So the team calendar is an extension that actually accepts contributions from other extensions as well as it has its own contributions. So let's do this. Let's go ahead and make a quick change here. Double-check that our publisher is correct. We'll smite. We're going to go ahead and package this using the vSet packaging tool. What this is going to do, it's going to take our extension manifest and other files related to our extension, like any HTML, JavaScript files, and it's going to package it into a .v6 file. This v6 file is what we'll end up publishing out to the marketplace. So you can see we ran vSet package, our extension package got created. We'll now go ahead and flip over to the marketplace. So I've already signed into the marketplace. I'm in the management experience. I've already selected my publisher. This matches the publisher ID that was in our extension manifest file. I'll now click Upload, and we'll go browse to and find our v6 file. Here it is. So essentially, we're uploading our extension to the marketplace. We haven't made the extension public, so it's only going to be visible to accounts that we decide to share it with. So the UI is basically telling us, hey, it's not shared with anything. Go ahead and pick an account that you want to share it with. So as an extension developer, you'll probably go ahead and put in your development account or one of your personal accounts that you want to actually try your extension on as you're developing it. So I'll go ahead and put in an account, one of mine. Hit OK. So we now have our extension published. We've shared it with an account. It's still private. It's not visible on the marketplace. I can now go in and actually install this extension into this account so I can actually see it. So this all starts basically from the extension detail page in the marketplace. We're able to see this page because we have the permission to this extension and it was shared with an account that we have access to. So one thing that I didn't show in the extension manifest file was things like the category and the screenshots and images. Those are all included or referenced by the extension manifest and included in our V6 package. It's what allows users to actually go find your extension, learn about it, discover it, see pictures of it, and decide that they want to install it. Okay. So we'll go ahead and continue on. We'll click install. We've only shared it with one account, so that's the account I'm going to go ahead and choose to install it into. The install wizard is asking me to basically accept the permissions that are required by this extension. Again, it was something else that was specified in the extension manifest. This one's going to need access to my work items. Great. Go ahead and click confirm. Now our extension is installed into this account. So let's go ahead and see it. Before we jump into it, let's go and check and make sure it's listed as one of our installed extensions. So if we go into our collection admin page, go into the extensions tab, we go under installed, we should see our extension that we just installed. So we can see that our team calendar extension is installed into this account. We'll now go pick one of our projects, and you'll see we now have a calendar hub that's showing up under home, just like the contribution that we saw indicated. You can see now we have our team calendar extension installed and running. As a developer, I can now go in, I can test my extension, I can go back, make code changes. For example, if I needed to change something about the extension the way it's rendering, a JavaScript error, I can come in here, it's my code, make changes, repackage, re-upload, refresh, and I'm going to immediately see those changes reflected in the running version of our extension. From this point, we can now share it with other accounts, we can maybe share it with some of our friends, let them try it on their accounts, and at some point, if I'm ready, I as an extension developer can make my extension public, which means that anybody discovering extensions in the marketplace will see it and can install it into their account. That was extensions in action. To get started building your own extension, check out aka.ms slash BSO extensions. There you're going to find all sorts of resources and samples to help you get started. Thanks for watching and happy coding.