{"id":226615,"date":"2019-10-08T08:00:35","date_gmt":"2019-10-08T15:00:35","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/visualstudio\/?p=226615"},"modified":"2019-10-08T10:12:28","modified_gmt":"2019-10-08T17:12:28","slug":"visual-studio-extensibility-is-better-with-intellicode","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/visualstudio\/visual-studio-extensibility-is-better-with-intellicode\/","title":{"rendered":"Visual Studio extensibility is better with IntelliCode"},"content":{"rendered":"<p>Installing the <em>Visual Studio extension development<\/em> workload presents you with a choice of optional components. And looking at the component list might leave you rather confused. Because how are various C++ components and the Class Designer especially relevant to writing extension? And where is <a href=\"https:\/\/visualstudio.microsoft.com\/services\/intellicode\/\">IntelliCode<\/a>?<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-226616\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2019\/10\/component-list.png\" alt=\"\" width=\"1277\" height=\"734\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2019\/10\/component-list.png 1277w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2019\/10\/component-list-300x172.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2019\/10\/component-list-768x441.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2019\/10\/component-list-1024x589.png 1024w\" sizes=\"(max-width: 1277px) 100vw, 1277px\" \/><\/p>\n<p>Taking a deeper look at the list we could sensibly remove some components that most extenders are not going to use. We could also add the IntelliCode component which was missing. So, we did in the Visual Studio 2019 v16.3 update, and the result looks like this:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-226617\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2019\/10\/component-list-new.png\" alt=\"\" width=\"349\" height=\"275\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2019\/10\/component-list-new.png 349w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2019\/10\/component-list-new-300x236.png 300w\" sizes=\"(max-width: 349px) 100vw, 349px\" \/><\/p>\n<h2>Let&#8217;s add IntelliCode<\/h2>\n<p>It\u2019s now a much cleaner list and it includes IntelliCode as an optional, but recommended component. So why is it recommended you ask? Let\u2019s first look at what IntelliCode provides us when working with types from the Visual Studio SDK:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-226618\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2019\/10\/IntelliCode2.gif\" alt=\"\" width=\"800\" height=\"424\" \/><\/p>\n<p>Notice how the IntelliSense items starting with a \u2605 help write the code. That\u2019s IntelliCode providing the guidance when I\u2019m using the Visual Studio SDK. Since the SDK is so huge, it can really make exploring the APIs and choosing the right methods and properties much easier to do by popping the most relevant items to the top of my suggestion list. It has helped me on numerous occasions, so I\u2019m a big fan.<\/p>\n<p>To make IntelliCode aware of the usage patterns of Visual Studio SDK, we trained its machine learning model on a lot of GitHub repositories containing extension code. The result is great guidance from types used from MEF such as <a href=\"https:\/\/docs.microsoft.com\/dotnet\/api\/microsoft.visualstudio.text.editor.iwpftextview\">IWpfTextView<\/a>, <a href=\"https:\/\/docs.microsoft.com\/dotnet\/api\/envdte\">EnvDTE<\/a>, and many others.<\/p>\n<p>So, if you are an extension author, do yourself a favor and give IntelliCode a try and let us know how it went in the comments below.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Installing the Visual Studio extension development workload presents you with a choice of optional components. Looking at the list might leave you rather confused, because how are various C++ components and the Class Designer especially relevant to writing extension? And where is IntelliCode?<\/p>\n","protected":false},"author":642,"featured_media":226618,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1388,155],"tags":[294,12],"class_list":["post-226615","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-extensibility","category-visual-studio","tag-extensions","tag-visual-studio"],"acf":[],"blog_post_summary":"<p>Installing the Visual Studio extension development workload presents you with a choice of optional components. Looking at the list might leave you rather confused, because how are various C++ components and the Class Designer especially relevant to writing extension? And where is IntelliCode?<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/226615","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=226615"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/226615\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media\/226618"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media?parent=226615"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/categories?post=226615"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/tags?post=226615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}