{"id":250567,"date":"2024-09-12T03:00:43","date_gmt":"2024-09-12T10:00:43","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/visualstudio\/?p=250567"},"modified":"2024-09-12T08:10:41","modified_gmt":"2024-09-12T15:10:41","slug":"visualstudio-extensibility-17-11-settings-and-more-remote-ui-support","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/visualstudio\/visualstudio-extensibility-17-11-settings-and-more-remote-ui-support\/","title":{"rendered":"VisualStudio.Extensibility 17.11: Settings and more Remote UI support"},"content":{"rendered":"<p>We continue to invest in the VisualStudio.Extensibility SDK to allow users like you to create extensions that run faster and smoother than ever before! VisualStudio.Extensibility helps you build extensions that run outside the main Visual Studio IDE process for improved performance and reliability. Additional benefits include a sleek and intuitive .NET 8-based API and comprehensive, well-maintained documentation to help you develop amazing extensions faster than ever before.<\/p>\n<p>This 17.11 release builds on our\u00a0<a href=\"https:\/\/aka.ms\/VisualStudio.Extensibility\/Blog\/17.10\">previous<\/a>\u00a0releases, bringing support for defining user-configurable settings for your extensions to allow your users to customize their experience along with even more enhancements to remote UI features. We\u2019ve also made substantial updates to our project query API documentation.<\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\" https:\/\/aka.ms\/VisualStudio.Extensibility\/\" target=\"_blank\">Get started with VisualStudio.Extensibility<\/a><\/div><\/p>\n<p>For the latest up-to-date docs and installation instructions, visit <a href=\"https:\/\/aka.ms\/VisualStudio.Extensibility\" target=\"_blank\" rel=\"noopener\">https:\/\/aka.ms\/VisualStudio.Extensibility<\/a>. We encourage you to report bugs and suggest features via the <a href=\"https:\/\/aka.ms\/VisualStudio.Extensibility\/Issues\" target=\"_blank\" rel=\"noopener\">issue tracker<\/a> on our <a href=\"https:\/\/aka.ms\/VisualStudio.Extensibility\/Repo\" target=\"_blank\" rel=\"noopener\">GitHub repo<\/a>, where you can also find extension <a href=\"https:\/\/aka.ms\/VisualStudio.Extensibility\/Samples\" target=\"_blank\" rel=\"noopener\">samples<\/a> to help you get started.<\/p>\n<h2>What\u2019s new for VisualStudio.Extensibility?<\/h2>\n<p>Our 17.11 release of VisualStudio.Extensibility includes the following features:<\/p>\n<ul>\n<li>Customize your extensions further with settings support<\/li>\n<li>Show images and use context menus in Remote UI<\/li>\n<li>Enhance your tool windows with toolbars<\/li>\n<\/ul>\n<p>We\u2019ve also refreshed and updated the project query API documentation based on feedback from extension developers like you!<\/p>\n<h2>Customize your extensions further with settings support<\/h2>\n<p>With this release of VisualStudio.Extensibility, we\u2019ve enabled a handful of APIs that allow you to define settings for your extensions. This allows your end users to alter the behavior of the extension by adjusting values you\u2019ve elected to define as settings.<\/p>\n<p>In order to support this scenario, you\u2019ll now find APIs specific to defining, accessing, and writing settings in your extension. To add settings to your extension, first add a definition for your setting in a class in the extension.<\/p>\n<p>If you&#8217;d like to learn more about how to define and leverage settings in your apps, refer to the <a href=\"https:\/\/learn.microsoft.com\/visualstudio\/extensibility\/visualstudio.extensibility\/settings\/settings\">VisualStudio.Extensibility settings article<\/a>. You\u2019ll find more details along with samples to get you coding quickly!<\/p>\n<p>Note that the settings API, like VisualStudio.Extensibility, supports Hot Loading of settings. This allows your extension\u2019s settings to be discovered without requiring your users to restart Visual Studio.<\/p>\n<h2>Show images and use context menus in Remote UI<\/h2>\n<p>As the VisualStudio.Extensibility model prioritizes extensions running outside of the Visual Studio process, it introduces a challenge when adding UI support to extensions as most UI frameworks are in-process. To get around this, there is a set of classes called Remote UI that allow you to define WPF controls in an out-of-process extension and then show them as part of the Visual Studio UI.<\/p>\n<p>With this release, you can now add a context menu to a Remote UI control from XAML, a familiar experience if you\u2019ve ever added a context menu in standard WPF. You\u2019ll also be able to use Remote UI XAML to show either custom images or images that already exist in the Visual Studio catalog. This gives you additional options for providing users with useful information in a visual format and can help you increase your extension\u2019s UI appeal!<\/p>\n<p>Visit the <a href=\"https:\/\/learn.microsoft.com\/visualstudio\/extensibility\/visualstudio.extensibility\/inside-the-sdk\/other-remote-ui\">Other Remote UI concepts documentation<\/a> for code samples and more information.<\/p>\n<h2>Enhance your tool windows with toolbars<\/h2>\n<p>You can now use VisualStudio.Extensibility to add toolbars to your extension\u2019s tool windows to give your users a quick and easy way to access or leverage features in your extension.<\/p>\n<p>See the <a href=\"https:\/\/learn.microsoft.com\/visualstudio\/extensibility\/visualstudio.extensibility\/tool-window\/tool-window#add-a-toolbar-to-a-tool-window\">Add a toolbar to a tool window section<\/a> in the tool window overview doc to learn more about creating, adding content to, showing, and controlling the visibility of tool windows \u2013 and of course to learn more about adding toolbars to those tool windows.<\/p>\n<h2>Project Query API documentation updates<\/h2>\n<p>In response to your valuable feedback, we have revamped our documentation to better serve your needs. As we transition to a new model, our project query documentation is evolving to leverage VisualStudio.Extensibility project query wrappers for accessing and modifying solutions\/projects. To explore the updated documentation, please refer to <a href=\"https:\/\/learn.microsoft.com\/visualstudio\/extensibility\/visualstudio.extensibility\/project\/project?view=vs-2022\">Query the Project API (VisualStudio.Extensibility)<\/a>. For details specific to project query using Visual Studio SDK, you can visit <a href=\"https:\/\/learn.microsoft.com\/visualstudio\/extensibility\/project-visual-studio-sdk?view=vs-2022\">Query the Project API (Visual Studio SDK)<\/a>.<\/p>\n<h2>About experimental APIs, breaking changes, and how we make decisions about VisualStudio.Extensibility<\/h2>\n<p>In reviewing feedback from our <a href=\"https:\/\/github.com\/microsoft\/VSExtensibility\/issues\">issue tracker<\/a>, we realized it would be useful to outline information about some of the decisions we\u2019ve made around VisualStudio.Extensibility. With this new extensibility model, we carefully consider exactly what should and should not be supported based on two major criteria: your feedback and the design goals of the project. One recent example: we decided not to support the ability to programmatically invoke VSCT (Visual Studio Command Table)-based commands via VisualStudio.Extensibility. This decision aligned with established principles for VisualStudio.Extensibility for a few reasons:<\/p>\n<ul>\n<li>VSCT based commands are synchronous. VisualStudio.Extensibility extensions operate asynchronously in a separate process.<\/li>\n<li>As there\u2019s no guarantee that UI state will remain coherent due to the asynchronous nature of the invocation from another process or thread, allowing invocation could lead to unpredictable user experiences.<\/li>\n<li>VSCT-based commands allow input and output of any type. VisualStudio.Extensibility extensions can run out of process. This imposes limitations around the types of input and output data that can be serialized.<\/li>\n<li>Direct command invocation breaks our commitment to having consistent, easy-to-use APIs as it would essentially introduce another set of APIs that are more macro\/script-like.<\/li>\n<\/ul>\n<p>As we continue increasing the surface area of the VisualStudio.Extensibility SDK, we\u2019ll rely on this framework to inform decisions on API coverage and availability. The API is growing and changing. We aim to minimize breaking changes and ensure stability and a consistent experience for you, our extension developers. When we make changes because of customer feedback or internal changes, we&#8217;ll communicate it formally with plenty of notice on the <a href=\"https:\/\/github.com\/microsoft\/VSExtensibility\/blob\/main\/docs\/breaking_changes.md\">VisualStudio.Extensibility breaking changes page<\/a>. We\u2019ll use the following guidelines for breaking changes to experimental APIs:<\/p>\n<ul>\n<li>Breaking changes can be made as part of LTSC minor version releases of Visual Studio.\n<ul>\n<li>A list of breaking changes for the release will be shared by Preview 2 of that release.<\/li>\n<li>The list will be shared in the breaking changes doc linked above.<\/li>\n<\/ul>\n<\/li>\n<li>Removal of APIs may be formally deprecated by marking the type or by using the [Obsolete] attribute.\n<ul>\n<li>This will also happen by Preview 2 of the release in which they\u2019ll be removed.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Most APIs in VisualStudio.Extensibility are stable, which means we do not plan to make any breaking changes to them. For these, we want to replicate the stability expectations associated with the existing VS SDK:<\/p>\n<ul>\n<li>Breaking changes to VisualStudio.Extensibility APIs or RPC contracts will only happen as part of a major version release of Visual Studio.\n<ul>\n<li>The list of breaking changes will be available by Preview 1 of the release.<\/li>\n<\/ul>\n<\/li>\n<li>Any API removal will happen formally by marking the type or by using the [Obsolete] attribute.<\/li>\n<li>Demotion of stable APIs to experimental is considered a breaking change and will be formally announced.<\/li>\n<\/ul>\n<h2>We can\u2019t do this without you!<\/h2>\n<p>The time and effort you\u2019ve spent reporting issues and sharing suggestions so far has been instrumental in shaping VisualStudio.Extensibility. We need your help as we continue to develop VisualStudio.Extensibility! Please try out this preview release and let us know what you think. Check out the <a href=\"https:\/\/aka.ms\/VisualStudio.Extensibility\">docs<\/a>, browse the <a href=\"https:\/\/aka.ms\/VisualStudio.Extensibility\/Samples\">code samples<\/a>, and build your <a href=\"https:\/\/aka.ms\/VisualStudio.Extensibility\/FirstExtension\">first extension<\/a>. You can send feedback and report issues through our <a href=\"https:\/\/github.com\/microsoft\/VSExtensibility\/issues\">issue tracker<\/a>.<\/p>\n<p>To request features, look at <a href=\"https:\/\/developercommunity.visualstudio.com\/VisualStudio?q=%5BVisualStudio.Extensibility%5D&amp;ftype=idea\">Developer Community<\/a> to see if someone else made a similar request first. Create a new one if you can&#8217;t find a similar request. By checking for similar requests and upvoting and commenting on them, you help us better prioritize requests. Give VisualStudio.Extensibility a try today and share your thoughts with us!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We continue to invest in the VisualStudio.Extensibility SDK to allow users like you to create extensions that run faster and smoother than ever before! VisualStudio.Extensibility helps you build extensions that run outside the main Visual Studio IDE process for improved performance and reliability. Additional benefits include a sleek and intuitive .NET 8-based API and comprehensive, [&hellip;]<\/p>\n","protected":false},"author":649,"featured_media":250580,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1388,155],"tags":[294],"class_list":["post-250567","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-extensibility","category-visual-studio","tag-extensions"],"acf":[],"blog_post_summary":"<p>We continue to invest in the VisualStudio.Extensibility SDK to allow users like you to create extensions that run faster and smoother than ever before! VisualStudio.Extensibility helps you build extensions that run outside the main Visual Studio IDE process for improved performance and reliability. Additional benefits include a sleek and intuitive .NET 8-based API and comprehensive, [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/250567","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\/649"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/comments?post=250567"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/250567\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media\/250580"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media?parent=250567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/categories?post=250567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/tags?post=250567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}