{"id":222660,"date":"2018-12-20T08:30:16","date_gmt":"2018-12-20T16:30:16","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/visualstudio\/?p=20635"},"modified":"2019-02-14T15:23:14","modified_gmt":"2019-02-14T23:23:14","slug":"build-visual-studio-extensions-using-visual-studio-extensions-2","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/visualstudio\/build-visual-studio-extensions-using-visual-studio-extensions-2\/","title":{"rendered":"Build Visual Studio extensions using Visual Studio extensions"},"content":{"rendered":"<p>What if the community of extension authors banded together to add powerful features to Visual Studio that made it easier to create extensions? What if those features could be delivered in individually released extensions, but joined by a single installation experience that allows the user to choose which of the features to install? That\u2019s the idea behind <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=MadsKristensen.ExtensibilityEssentials2019\" target=\"_blank\" rel=\"noopener\">Extensibility Essentials<\/a> \u2013 an extension pack that ships community-recommended extensions for extension authors.<\/p>\n<p><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=MadsKristensen.ExtensibilityEssentials2019\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"alignnone wp-image-20665 \" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/4\/2019\/06\/marketplace.png\" alt=\"\" width=\"600\" height=\"156\" \/><\/a><\/p>\n<p>Extension authors are usually interested in improving their own tooling in Visual Studio \u2013 either by installing extensions created by others or by building some themselves. By banding together, we can create the best and most comprehensive tooling experience for extension authoring. So, let\u2019s test that theory by creating a range of extensions published to the Marketplace under our own accounts, and reference them in Extensibility Essentials to provide a unified and simple installation experience.<\/p>\n<p><strong>The individual extensions<\/strong> can and probably should be single purpose in nature. This prevents feature-creep where additional features are added that may or may not be useful for extension authors. If additional features are not closely related to the extension, then simply create a new extension for them. That way it is up to the individual extension author to decide if they wish to install it. It is also crucial that the extensions follow all the <a href=\"http:\/\/aka.ms\/vssdk-checklist\" target=\"_blank\" rel=\"noopener\">best practices<\/a>.<\/p>\n<p>Once the individual extension is stable, it can be added to Extensibility Essentials.<\/p>\n<p><strong>The extension pack<\/strong> <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=MadsKristensen.ExtensibilityEssentials2019\" target=\"_blank\" rel=\"noopener\">Extensibility Essentials<\/a> doesn\u2019t do anything by itself. It is a barebone extension pack that just references the individual extensions. When installing the extension pack, the user can choose which of the referenced extensions to install. At the time of this writing, there are 9 individual extensions.<\/p>\n<p><figure id=\"attachment_20645\" aria-labelledby=\"figcaption_attachment_20645\" class=\"wp-caption alignnone\" ><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/4\/2019\/06\/extensions-and-updates.png\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"wp-image-20645 size-full\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/4\/2019\/06\/extensions-and-updates.png\" alt=\"\" width=\"1413\" height=\"651\" \/><\/a><figcaption id=\"figcaption_attachment_20645\" class=\"wp-caption-text\">How the individual extensions are listed before installing<\/figcaption><\/figure><\/p>\n<p><strong>Ideas for new extensions<\/strong> can be centralized to the <a href=\"https:\/\/github.com\/madskristensen\/ExtensibilityEssentials\/issues\" target=\"_blank\" rel=\"noopener\">GitHub issue tracker<\/a>. By collecting ideas in a central location, it provides a single location to comment on and potentially design features ahead of implementation.<\/p>\n<p><figure id=\"attachment_20655\" aria-labelledby=\"figcaption_attachment_20655\" class=\"wp-caption alignnone\" ><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/4\/2019\/06\/github.png\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"wp-image-20655 \" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/4\/2019\/06\/github.png\" alt=\"\" width=\"601\" height=\"172\" \/><\/a><figcaption id=\"figcaption_attachment_20655\" class=\"wp-caption-text\">The issue tracker is for both bugs and suggested features<\/figcaption><\/figure><\/p>\n<h2>It would be cool if\u2026<\/h2>\n<p>So next time you\u2019re sitting in Visual Studio working on an extension, think about what feature you\u2019d like that would make you more productive. If you can\u2019t think of a feature, but feel there is a scenario that is particularly problematic, then open a bug on the <a href=\"https:\/\/github.com\/madskristensen\/ExtensibilityEssentials\/issues\" target=\"_blank\" rel=\"noopener\">GitHub issue tracker<\/a> and let other people try to figure out how an extension could perhaps solve the issue.<\/p>\n<p>Thinking \u201cit would be cool if\u2026\u201d is the first step to make it possible and with the Extensibility Essentials, it might be closer to becoming reality than imagined.<\/p>\n<p>Does this idea resonate with you? Let me know in the comments.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What if the community of extension authors banded together to add powerful features to Visual Studio that made it easier to create extensions? That\u2019s the idea behind Extensibility Essentials \u2013 an extension pack that ships community-recommended extensions for extension authors.<\/p>\n","protected":false},"author":642,"featured_media":222760,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1388,155],"tags":[294,287],"class_list":["post-222660","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-extensibility","category-visual-studio","tag-extensions","tag-tips-and-tricks"],"acf":[],"blog_post_summary":"<p>What if the community of extension authors banded together to add powerful features to Visual Studio that made it easier to create extensions? That\u2019s the idea behind Extensibility Essentials \u2013 an extension pack that ships community-recommended extensions for extension authors.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/222660","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/users\/642"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/comments?post=222660"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/222660\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media\/222760"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media?parent=222660"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/categories?post=222660"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/tags?post=222660"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}