{"id":1443,"date":"2011-10-03T01:20:00","date_gmt":"2011-10-03T01:20:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/visualstudio\/2011\/10\/03\/private-extension-galleries-for-the-enterprise\/"},"modified":"2022-02-22T06:02:04","modified_gmt":"2022-02-22T14:02:04","slug":"private-extension-galleries-for-the-enterprise","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/visualstudio\/private-extension-galleries-for-the-enterprise\/","title":{"rendered":"Private Extension Galleries for the Enterprise"},"content":{"rendered":"<p>In Visual Studio 2010, we introduced a feature called the Extension Manager &ndash; a new dialog that connects to the Microsoft <a href=\"http:\/\/visualstudiogallery.msdn.microsoft.com\/\">Visual Studio Gallery<\/a> to help a customer easily select and install extensions to Visual Studio from right inside the IDE.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/10\/8787.image_thumb_0CF7299B.png\"><img decoding=\"async\" style=\"border-width: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/10\/8787.image_thumb_0CF7299B.png\" width=\"756\" height=\"524\" \/><\/a>&nbsp;<\/p>\n<p>Since then, enterprise customers have frequently asked us to provide a way for Visual Studio to connect to a customer-managed website that contains a private collection of Visual Studio extensions. Today I&rsquo;m excited to announce a new feature available in the Developer Preview version of VS that does just that, and offers you the same smooth, simple download, install, and update experience that you&rsquo;ve seen when connected to the public Visual Studio Gallery.&nbsp;<\/p>\n<h2><\/h2>\n<h2><\/h2>\n<h2>Configuring a private gallery<\/h2>\n<p>In the Extension Manager panel of the Tools\/Options page, you can now add a URL to the Extension Repositories list that points to the server where your private gallery lives. Visual Studio expects to find an atom feed at this endpoint that describes the extensions available on your gallery.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/10\/7723.image_thumb_5A93561B.png\"><img decoding=\"async\" style=\"padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/10\/7723.image_thumb_5A93561B.png\" width=\"722\" height=\"420\" \/><\/a><\/p>\n<h2>Using your gallery<\/h2>\n<p>The next time you open the Extension Manager Online panel, you&rsquo;ll see your gallery listed after the two public ones (Visual Studio Gallery and Samples Gallery).<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/10\/3326.image_thumb_6550AD70.png\"><img decoding=\"async\" style=\"padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/10\/3326.image_thumb_6550AD70.png\" width=\"872\" height=\"604\" \/><\/a><\/p>\n<h2><\/h2>\n<p>Install looks exactly like it does for the public galleries:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/10\/5076.image_thumb_32ECD9F1.png\"><img decoding=\"async\" style=\"padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/10\/5076.image_thumb_32ECD9F1.png\" width=\"446\" height=\"361\" \/><\/a><\/p>\n<h2>Creating the gallery<\/h2>\n<p>On a web server, or on your local or remote file system, create a root directory for your gallery, and add sub-directories for each category in your collection. (In the illustration below, there are two categories: Project X and Project W.)<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/10\/6560.image_thumb_399FE374.png\"><img decoding=\"async\" style=\"padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/10\/6560.image_thumb_399FE374.png\" width=\"569\" height=\"214\" \/><\/a><\/p>\n<p>Place each VSIX file in the folder that corresponds to its category. Then it&rsquo;s time to create the atom feed.<\/p>\n<p>For this preview version, you&rsquo;ll create the feed by hand. We&rsquo;ll make some tools available to automate that process soon. Here is a sample feed, with the element values you&rsquo;ll need to edit highlighted:<\/p>\n<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt; <br \/>&lt;feed xmlns=&#8221;<a href=\"http:\/\/www.w3.org\/2005\/Atom&quot;\">http:\/\/www.w3.org\/2005\/Atom&#8221;<\/a>&gt; <br \/>&nbsp; &lt;title type=&#8221;text&#8221;&gt;&lt;\/title&gt; <br \/>&nbsp; &lt;id&gt;uuid:874a62b3-c36c-4443-aeb9-498e4c6e589d;id=1&lt;\/id&gt; <br \/>&nbsp; &lt;updated&gt;2011-09-02T01:58:50Z&lt;\/updated&gt; <br \/>&nbsp; &lt;entry&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;id&gt;<span style=\"background-color: #ffff00\">MessageInspector.Acme Corp..6b64a54c-93b9-4f0c-a962-71ba1c23c1d8<\/span>&lt;\/id&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;title type=&#8221;text&#8221;&gt;<span style=\"background-color: #ffff00\">MessageInspector<\/span>&lt;\/title&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;summary type=&#8221;text&#8221;&gt;<span style=\"background-color: #ffff00\">Visualizes message exchanges for Project W<\/span>&lt;\/summary&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;published&gt;2011-09-01T18:51:00-07:00&lt;\/published&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;updated&gt;2011-09-01T18:57:18-07:00&lt;\/updated&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;author&gt; <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;<span style=\"background-color: #ffff00\">Acme Corp.<\/span>&lt;\/name&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;\/author&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;category term=&#8221;<span style=\"background-color: #00ff00\">ProjectW Tools<\/span>&#8221; \/&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;content type=&#8221;application\/octet-stream&#8221; src=&#8221;<span style=\"background-color: #00ff00\">ProjectW Tools\/MessageInspector.vsix<\/span>&#8221; \/&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;Vsix xmlns:xsi=&#8221;<a href=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\">http:\/\/www.w3.org\/2001\/XMLSchema-instance&#8221;<\/a> xmlns:xsd=&#8221;<a href=\"http:\/\/www.w3.org\/2001\/XMLSchema&quot;\">http:\/\/www.w3.org\/2001\/XMLSchema&#8221;<\/a> xmlns=&#8221;<a href=\"http:\/\/schemas.microsoft.com\/developer\/vsx-syndication-schema\/2010&quot;\">http:\/\/schemas.microsoft.com\/developer\/vsx-syndication-schema\/2010&#8243;<\/a>&gt; <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Id&gt;<span style=\"background-color: #ffff00\">MessageInspector.Acme Corp..6b64a54c-93b9-4f0c-a962-71ba1c23c1d8<\/span>&lt;\/Id&gt; <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Version&gt;<span style=\"background-color: #ffff00\">1.0<\/span>&lt;\/Version&gt; <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;References \/&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;\/Vsix&gt; <br \/>&nbsp; &lt;\/entry&gt; <br \/>&nbsp; &lt;entry&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;id&gt;<span style=\"background-color: #ffff00\">DataWarehousingTools.Acme Corp..496be56f-595e-4a50-b02f-5d3da630b7b6<\/span>&lt;\/id&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;title type=&#8221;text&#8221;&gt;<span style=\"background-color: #ffff00\">DataWarehousingTools<\/span>&lt;\/title&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;summary type=&#8221;text&#8221;&gt;<span style=\"background-color: #ffff00\">Data warehousing tools for Project X. (Internal use only.)<\/span>&lt;\/summary&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;published&gt;2011-09-01T18:51:28-07:00&lt;\/published&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;updated&gt;2011-09-01T18:57:27-07:00&lt;\/updated&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;author&gt; <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;<span style=\"background-color: #ffff00\">Acme Corp.<\/span>&lt;\/name&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;\/author&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;category term=&#8221;<span style=\"background-color: #00ff00\">ProjectX Tools<\/span>&#8221; \/&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;content type=&#8221;application\/octet-stream&#8221; src=&#8221;<span style=\"background-color: #00ff00\">ProjectX Tools\/DataWarehousingTools.vsix<\/span>&#8221; \/&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;Vsix xmlns:xsi=&#8221;<a href=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\">http:\/\/www.w3.org\/2001\/XMLSchema-instance&#8221;<\/a> xmlns:xsd=&#8221;<a href=\"http:\/\/www.w3.org\/2001\/XMLSchema&quot;\">http:\/\/www.w3.org\/2001\/XMLSchema&#8221;<\/a> xmlns=&#8221;<a href=\"http:\/\/schemas.microsoft.com\/developer\/vsx-syndication-schema\/2010&quot;\">http:\/\/schemas.microsoft.com\/developer\/vsx-syndication-schema\/2010&#8243;<\/a>&gt; <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Id&gt;<span style=\"background-color: #ffff00\">DataWarehousingTools.Acme Corp..496be56f-595e-4a50-b02f-5d3da630b7b6<\/span>&lt;\/Id&gt; <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Version&gt;<span style=\"background-color: #ffff00\">1.0<\/span>&lt;\/Version&gt; <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;References \/&gt; <br \/>&nbsp;&nbsp;&nbsp; &lt;\/Vsix&gt; <br \/>&nbsp; &lt;\/entry&gt; <br \/>&lt;\/feed&gt;<\/p>\n<p>Values highlighted in <span style=\"background-color: #ffff00\">yellow<\/span> are taken right from the VSIX Manifest. Those highlighted in <span style=\"background-color: #00ff00\">green<\/span> describe how they appear in your gallery:<\/p>\n<ul>\n<li>The term= attribute contains the category name as it will appear in Extension Manager.<\/li>\n<li>The src= attribute contains the path to the VSIX file from the gallery root.<\/li>\n<\/ul>\n<h2>Updating<\/h2>\n<p>To publish an update, all you need to do is replace the old VSIX file with the new one, and put the Version value from the new VSIX manifest in the corresponding &lt;Version&gt; element in the feed.<\/p>\n<p><code>&lt;Id&gt;<span style=\"background-color: #ffffff\">DataWarehousingTools.Acme Corp..496be56f-595e-4a50-b02f-5d3da630b7b6<\/span>&lt;\/Id&gt; <br \/>&lt;Version&gt;<span style=\"background-color: #ffff00\">1.1<\/span>&lt;\/Version&gt; <\/code><\/p>\n<p>Then when your users open Extension Manager they&rsquo;ll see the new version in the Update panel.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/10\/2043.image_thumb_445D3AC9.png\"><img decoding=\"async\" style=\"padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/10\/2043.image_thumb_445D3AC9.png\" width=\"774\" height=\"537\" \/><\/a><\/p>\n<p>I&rsquo;ll be blogging about tools to automate the feed generation as soon as we can make them available. In the meantime, try out the feature in the Visual Studio 11 Developer Preview and let us know what you think!<\/p>\n<p>Gary Horen <br \/>Program Manager <br \/>Visual Studio Platform<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Visual Studio 2010, we introduced a feature called the Extension Manager &ndash; a new dialog that connects to the Microsoft Visual Studio Gallery to help a customer easily select and install extensions to Visual Studio from right inside the IDE. &nbsp; Since then, enterprise customers have frequently asked us to provide a way for [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":255385,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[155],"tags":[],"class_list":["post-1443","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-visual-studio"],"acf":[],"blog_post_summary":"<p>In Visual Studio 2010, we introduced a feature called the Extension Manager &ndash; a new dialog that connects to the Microsoft Visual Studio Gallery to help a customer easily select and install extensions to Visual Studio from right inside the IDE. &nbsp; Since then, enterprise customers have frequently asked us to provide a way for [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/1443","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\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/comments?post=1443"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/1443\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media\/255385"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media?parent=1443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/categories?post=1443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/tags?post=1443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}