<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>VSIX Best Practices</title><link>http://blogs.msdn.com/b/visualstudio/archive/2010/06/09/vsix-best-practices.aspx</link><description>This post is about a new way to install extensions to Visual Studio, introduced in VS 2010, called the VSIX file. The information it contains will be of most interest to readers who develop Visual Studio extensions, but I encourage users who download</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>re: VSIX Best Practices</title><link>http://blogs.msdn.com/b/visualstudio/archive/2010/06/09/vsix-best-practices.aspx#10385369</link><pubDate>Wed, 16 Jan 2013 01:53:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10385369</guid><dc:creator>fourpastmidnight</dc:creator><description>&lt;p&gt;Actually, I just figured this out today. It is not necessary to run devenv /setup anymore. In fact, this &amp;nbsp;wasn&amp;#39;t even necessary on Visual Studio 2010. I did not have a reference to Visual Studio MPF in the VSIX manifest (I&amp;#39;m not sure if this is strictly required, but it&amp;#39;s part of the default VSIX template that ships with the VSSDK). Of more importance, however, is the fact that the sub-extensions that have *.pkgdef files did not have a VsPackage element in the Content element whose inner text is the name of the *.pkgdef file. In Visual Studio 2010, apparently this was not required in order for the *.pkgdef file to be processed. It appears that this is now required for Visual Studio 2012 to process the *.pkgdef file.&lt;/p&gt;
&lt;p&gt;Thanks for the suggestion, however.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10385369" width="1" height="1"&gt;</description></item><item><title>re: VSIX Best Practices</title><link>http://blogs.msdn.com/b/visualstudio/archive/2010/06/09/vsix-best-practices.aspx#10384978</link><pubDate>Tue, 15 Jan 2013 01:57:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10384978</guid><dc:creator>matt kaufman[MSFT]</dc:creator><description>&lt;p&gt;@fourpastmidnight:&lt;/p&gt;
&lt;p&gt;Please run devenv /setup after your extension install. That should instantiate the entries in HKCU&lt;/p&gt;
&lt;p&gt;Matt Kaufman&lt;/p&gt;
&lt;p&gt;Visual Studio IDE Services Program Management&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10384978" width="1" height="1"&gt;</description></item><item><title>re: VSIX Best Practices</title><link>http://blogs.msdn.com/b/visualstudio/archive/2010/06/09/vsix-best-practices.aspx#10384506</link><pubDate>Sun, 13 Jan 2013 04:31:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10384506</guid><dc:creator>fourpastmidnight</dc:creator><description>&lt;p&gt;Quick update: I tried installing the single VSIX extension in question (in this case, SettingsStore.dll -- again, shortened DLL name) that contains the *.pgkdef file with the specification of a binding path.&lt;/p&gt;
&lt;p&gt;VSIXInstaller reported that the extension installed successfully into Visual Studio 2012 Pro, but again, no registry entry was made under HKCU\Software\Microsoft\Visual Studio\11.0_Config\BindingPaths despite the presence of the pkgdef file (after having restarted Visual Studio 2012).&lt;/p&gt;
&lt;p&gt;Any ideas?&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10384506" width="1" height="1"&gt;</description></item><item><title>re: VSIX Best Practices</title><link>http://blogs.msdn.com/b/visualstudio/archive/2010/06/09/vsix-best-practices.aspx#10384505</link><pubDate>Sun, 13 Jan 2013 04:20:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10384505</guid><dc:creator>fourpastmidnight</dc:creator><description>&lt;p&gt;I couldn&amp;#39;t find a more appropriate place for this question. I actually obtained the source code for the AllMargins extension (posted somewhere on one of MS&amp;#39;s old code sharing sites)--which I LOVE! I&amp;#39;m in the process of converting it so that it will work with VS2012. The conversion has gone well except for one last thing and I&amp;#39;m hoping that someone can point me in the right direction.&lt;/p&gt;
&lt;p&gt;This extension (written by a MS employee) violates the &amp;quot;best practices&amp;quot; spelled out here, as mentioned by @efalsken by nesting multiple VSIX packages. This extension has a somewhat deep hierarchy of packages, each package having a hierarchy of assembly reference dependencies. For example: CaretMargin.dll -&amp;gt; OverviewMarginImpl.dll -&amp;gt; OverviewMargin.dll -&amp;gt; SettingsStoreImp.dll -&amp;gt; SettingStore.dll (I&amp;#39;ve shortened the DLL names).&lt;/p&gt;
&lt;p&gt;The crucial part is that the SettingsStore.dll project contains a SettingsStore.pkgdef file that contains the following:&lt;/p&gt;
&lt;p&gt;[$RootKey$\BindingPaths\{GUID}]&lt;/p&gt;
&lt;p&gt;&amp;quot;$ProjectPath$&amp;quot;=&amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;When the extension is loaded (say by VS 2010), a registry entry is made under HKCU\Software\Microsoft\Visual Studio\10.0_Config\BindingPaths: a key of {GUID} is created and a string value of the expansion of $ProjectPath$ is also created. However, after modifying the extension manifests appropriately, Visual Studio 2012 successfully installs the extension, but the BindingPaths are not created as they were in Visual Studio 2010. In fact, no binding paths at all are created.&lt;/p&gt;
&lt;p&gt;Is there any reason why this behavior is occurring? How can I track down what&amp;#39;s preventing these registry entries from being created when the extension is installed (or after VS starts and loads the extension)? All I get right now is that, for example, FileNotFoundException, probing failed for SettingsStore.dll (shortened DLL name, but I think you get the picture). Probing failed because no binding paths are specified and VS2012 can&amp;#39;t find the assembly.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10384505" width="1" height="1"&gt;</description></item><item><title>re: VSIX Best Practices</title><link>http://blogs.msdn.com/b/visualstudio/archive/2010/06/09/vsix-best-practices.aspx#10122303</link><pubDate>Mon, 31 Jan 2011 13:23:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10122303</guid><dc:creator>lbp</dc:creator><description>&lt;p&gt;I agree with efalsken. If the user can&amp;#39;t understand how dependencies work then what are they doing installing extensions in a product like visual studio? &lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10122303" width="1" height="1"&gt;</description></item><item><title>re: VSIX Best Practices</title><link>http://blogs.msdn.com/b/visualstudio/archive/2010/06/09/vsix-best-practices.aspx#10025526</link><pubDate>Wed, 16 Jun 2010 01:10:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10025526</guid><dc:creator>Visual Studio Blog</dc:creator><description>&lt;p&gt;@efalskn --&lt;/p&gt;
&lt;p&gt;Better support for dependencies, and finer-grained control over what is and is not installed/enabled are definitely things we have in mind for future enhancements to the VSIX feature. My advice to bundle everything into one VSIX is for now, when the user experience installing dependent VSIXs is not what we&amp;#39;d like it to be. The reason I&amp;#39;m suggesting that you try to distribute a single VSIX in this release is to avoid making the user have to understand how dependencies work. I know this is not ideal. It would be great to hear more about what scenarios you think are most important, as we plan for the next version.&lt;/p&gt;
&lt;p&gt;Thanks for your feedback.&lt;/p&gt;
&lt;p&gt;-Gary Horen&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10025526" width="1" height="1"&gt;</description></item><item><title>re: VSIX Best Practices</title><link>http://blogs.msdn.com/b/visualstudio/archive/2010/06/09/vsix-best-practices.aspx#10023013</link><pubDate>Thu, 10 Jun 2010 16:03:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10023013</guid><dc:creator>efalsken</dc:creator><description>&lt;p&gt;Please, VSIX authors, please do NOT bundle many different features as a single extension. Instead, let each feature install as a separate extension and use the dependency features highlighted above so that users can turn one features on and off as separate extensions. The AllMargins extension is a great example of this. The various &amp;quot;Power Commands&amp;quot; and &amp;quot;Pro Power Tools&amp;quot; (unfortunately from Microsoft) extensions are horrible examples.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10023013" width="1" height="1"&gt;</description></item></channel></rss>