<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.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>Carlos Quintero (Microsoft MVP) blog</title><link>http://msmvps.com/blogs/carlosq/default.aspx</link><description>Visual Studio Extensibility with Add-ins</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Not too much to blog about VS 2010 these weeks...</title><link>http://msmvps.com/blogs/carlosq/archive/2010/01/21/not-too-much-to-blog-about-vs-2010-these-weeks.aspx</link><pubDate>Thu, 21 Jan 2010 09:36:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1752875</guid><dc:creator>carlosq</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1752875</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1752875</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2010/01/21/not-too-much-to-blog-about-vs-2010-these-weeks.aspx#comments</comments><description>&lt;p&gt;You may have noticed that I am not blogging too much these weeks. The reason is that I have been working on the next version of MZ-Tools (and it is too early to comment about it) and testing the VS 2010 Super-Limited-CTPs that Microsoft provide to some people to test their extensions (add-ins, packages, etc.). These SLCTPs are under Non-Disclosure-Agreement (NDA) so the bug reports are private and I can&amp;#39;t comment what is fixed or it is still wrong. I am looking forward to the public VS 2010 Release Candidate to provide more information in the add-ins area.&lt;/p&gt;
&lt;p&gt;On a separate thing, I have finished watching the videos of the Visual Studio Extensibility (VSX) Developer Conference October 2009 that were of my interest. I have updated the &lt;a href="http://www.mztools.com/resources_vsnet_addins.aspx"&gt;Resources page on my web site to list all the videos&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;The first thing that strikes me is that none of the 20+ sessions is devoted to add-ins, and none was devoted in the 2008 conference too. Add-ins is an area of extensibility that is basically dead for Microsoft, only maintained due to the number of add-ins out there. While not as easy as they should be, historically add-ins have been the easiest way to extend Visual Studio, and originally in VS.NET 2002, the only way to do it providing a user interface (macros don&amp;#39;t provide user interface, the VS SDK was not introduced until VS 2005 and the former VSIP SDK was introduced in VS.NET 2003). The EnvDTE API is not certainly elegant and it suffers lots of inconsistencies and drawbacks that I have blogged about extensively all since I started this blog back in November 2006 (it turned 3 years recently), but it worked for most of us, specially because it was powerful enough for most purposes and the alternative (the SDK) was even worse until recently. If I had to start today building a VS extension, the SDK would be the way to go, but when you have an 8-years old add-in with tons of lines of code, it is difficult to think about migrating it knowing that it will provide no added value to the end users once migrated and tested completely. &lt;/p&gt;
&lt;p&gt;The second thing that strikes me is that there are no progress in the extensibility of ASP.NET Webforms or the new WPF / Silverlight forms for add-ins (or may even for packages, I don&amp;#39;t know). If your extension wants to manipulate programmatically those forms or usercontrols, it&amp;#39;s going to be a difficult time. The Window.Object may return something for ASP.NET forms, but nothing for WPF / Silverlight forms. AFAIK, the designer of WPF is even a separate process and when they talk about &lt;a href="http://msdn.microsoft.com/en-us/library/bb546938.aspx"&gt;WPF Designer Extensibility&lt;/a&gt;, they mean extensibility for developers of WPF controls to provide editors, adorners, custom actions or menus, etc. It seems that all emphasis about VS extensions is about to explore or manipulate code, and never to explore or manipulate forms/usercontrols.&lt;/p&gt;
&lt;p&gt;The last striking thing, on the positive side, is that Visual Studio has got so much extensibility in several areas to deserve an annual conference with lots of sessions. That&amp;#39;s certainly great.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1752875" width="1" height="1"&gt;</description></item><item><title>Happy New Year 2010 and MVP again!</title><link>http://msmvps.com/blogs/carlosq/archive/2010/01/01/happy-new-year-2010-and-mvp-again.aspx</link><pubDate>Fri, 01 Jan 2010 15:55:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1748845</guid><dc:creator>carlosq</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1748845</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1748845</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2010/01/01/happy-new-year-2010-and-mvp-again.aspx#comments</comments><description>&lt;p&gt;Happy New Year!&lt;/p&gt;
&lt;p&gt;I have just received the Most Valuable Professional (MVP) award&amp;nbsp;again, the 7th one that I receive from Microsoft. As always, I am very grateful for this award :-)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1748845" width="1" height="1"&gt;</description></item><item><title>VS 2010 Release Candidate announced</title><link>http://msmvps.com/blogs/carlosq/archive/2009/12/18/vs-2010-release-candidate-announced.aspx</link><pubDate>Fri, 18 Dec 2009 20:13:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1746479</guid><dc:creator>carlosq</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1746479</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1746479</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/12/18/vs-2010-release-candidate-announced.aspx#comments</comments><description>&lt;p&gt;Finally, &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/12/10/brian-harry-s-comments-about-my-post-quot-no-public-vs-2010-beta-3-or-release-quot.aspx"&gt;on the contrary to what I posted some days ago&lt;/a&gt;, Microsoft announced yesterday that &lt;a href="http://blogs.msdn.com/bharry/archive/2009/12/17/vs-2010-net-4-public-release-candidate-planned.aspx"&gt;there will be a public VS 2010 Release Candidate&lt;/a&gt;, and that &amp;quot;the planned final launch date is moved back a few weeks&amp;quot;.&lt;/p&gt;
&lt;p&gt;This is good news for developers of add-ins, because: &lt;/p&gt;
&lt;p&gt;1) That release will be the first one where the automation model of the WPF-based commandbars will work without the &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/10/24/frustrating-new-bugs-in-commandbars-of-vs-2010-beta-2.aspx"&gt;many&lt;/a&gt; &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/10/25/another-critical-vs-2010-beta-2-bug-in-commandbars-this-one-causes-vs-to-evaporate-without-warning-nothing-less.aspx"&gt;critical&lt;/a&gt; &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/10/26/yet-another-critical-vs-2010-beta-2-bug-in-commandbars-this-one-causes-vs-to-hang-nothing-less.aspx"&gt;bugs&lt;/a&gt; &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/11/02/another-critical-vs-2010-beta-2-bug-that-causes-the-ide-to-hang.aspx"&gt;of&lt;/a&gt; &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/12/04/microsoft-fixing-vs-2010-beta-2-bug-envdte-windowevents-windowactivated-event-not-fired-for-window-getting-the-focus-after-closing-other-window.aspx"&gt;Beta&lt;/a&gt; 2.&lt;/p&gt;
&lt;p&gt;2) Developers will be able to release add-ins compatible with VS 2010 RC for the end users to test them.&lt;/p&gt;
&lt;p&gt;That said, there will be minor bugs that finally won&amp;#39;t be fixed
even in RTM because the bar to get them fixed is very high already today, but I
think there will be workarounds. I will post about them when the RC is released.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1746479" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/carlosq/archive/tags/VS+2010/default.aspx">VS 2010</category></item><item><title>Developer Tools Ecosystem Summit Videos now available</title><link>http://msmvps.com/blogs/carlosq/archive/2009/12/14/developer-tools-ecosystem-summit-videos-now-available.aspx</link><pubDate>Mon, 14 Dec 2009 13:25:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1745518</guid><dc:creator>carlosq</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1745518</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1745518</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/12/14/developer-tools-ecosystem-summit-videos-now-available.aspx#comments</comments><description>&lt;p&gt;Channel 9 has now the video recordings of the talks that were given at the 2009 Developer Tools Ecosystem Summit:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://channel9.msdn.com/tags/Development-Tools-Ecosystem-Summit/"&gt;http://channel9.msdn.com/tags/Development-Tools-Ecosystem-Summit/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;d suggest to start with the keynote:&lt;/p&gt;
&lt;p&gt;VSX100: Visual Studio Extensibility Keynote: Past Present and Future&lt;br /&gt;&lt;a href="http://channel9.msdn.com/posts/VSIPMarketing/VSX100-Visual-Studio-Extensibility-Keynote-Past-Present-and-Future/"&gt;http://channel9.msdn.com/posts/VSIPMarketing/VSX100-Visual-Studio-Extensibility-Keynote-Past-Present-and-Future/&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1745518" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/carlosq/archive/tags/VS+2010/default.aspx">VS 2010</category></item><item><title>Brian Harry's comments about my post "No public VS 2010 Beta 3 or release"</title><link>http://msmvps.com/blogs/carlosq/archive/2009/12/10/brian-harry-s-comments-about-my-post-quot-no-public-vs-2010-beta-3-or-release-quot.aspx</link><pubDate>Thu, 10 Dec 2009 23:10:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1744732</guid><dc:creator>carlosq</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1744732</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1744732</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/12/10/brian-harry-s-comments-about-my-post-quot-no-public-vs-2010-beta-3-or-release-quot.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/bharry/"&gt;Brian Harry&lt;/a&gt;, Microsoft Technical Fellow and Product Unit Manager for Team Foundation Server (TFS) &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/12/07/no-public-vs-2010-beta-3-or-release-candidate.aspx#comments"&gt;has commented about my last post &amp;quot;No public VS 2010 Beta 3 or release&amp;quot;&lt;/a&gt;. (Brian is making a huge effort in transparency about the performance problems of VS 2010 Beta 2 and the work to get them fixed for RTM)&lt;/p&gt;
&lt;p&gt;I reproduce his comments here:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;i&gt;&amp;quot;I don&amp;#39;t know Quan but I can say definitively that this is not an
official Microsoft communication. &amp;nbsp;I&amp;#39;ve remarked before (on my blog)
that when you have an organization of 2,000 - 3,000 people, you have to
assume random stuff happens. &amp;nbsp;Said another way &amp;quot;Don&amp;#39;t believe
everything you read&amp;quot; :)&lt;/i&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;i&gt;1) We&amp;#39;ve had an RC on the books from the beginning. &amp;nbsp;We are
investigating the possibility of making it a public release. &amp;nbsp;We didn&amp;#39;t
originally for that but the Beta 2 feedback has made us rethink it. &amp;nbsp;We
will ensure that there is time to incorporate customer feedback. Quan
wrote this a while ago and, to be honest, I&amp;#39;m not sure we had reached
that conclusion yet.&lt;/i&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;i&gt;2) We haven&amp;#39;t decided what we are going to call the public release
yet. &amp;nbsp;We&amp;#39;ve discussed both &amp;quot;Release Candidate&amp;quot; and &amp;quot;Beta 3&amp;quot;. &amp;nbsp;I
responded to one comment on this post: &lt;a href="http://blogs.msdn.com/bharry/archive/2009/12/05/anatomy-of-a-performance-problem.aspx"&gt;http://blogs.msdn.com/bharry/archive/2009/12/05/anatomy-of-a-performance-problem.aspx&lt;/a&gt;
with some thoughts on this. Regardless of what we call it, we will be
looking for customer feedback/validation and will allot time to get it
before releasing.&lt;/i&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;i&gt;3) March 22 is NOT the release date. It never was. March 22 is the
marketing launch date. We generally don&amp;#39;t announce RTM dates ahead of
time but we do communicate launch dates. &amp;nbsp;Sometimes RTM happens before
the launch, sometimes after. &amp;nbsp;I think it&amp;#39;s fair to say that we are
targeting an RTM in the general timeframe or we wouldn&amp;#39;t have set the
launch date there but there are many considerations that go into launch
dates - lining up with other events, hollidays, venue availability, ...
&amp;nbsp;Further, it would make no sense for us to have set a final RTM date
before getting Beta 2 feedback. &amp;nbsp;We always say &amp;quot;we&amp;#39;ll ship the product
when it&amp;#39;s ready&amp;quot;.&lt;/i&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;i&gt;Am I the official Microsoft spokesman on this topic, well, um, no.
&amp;nbsp;However, I will say that I&amp;#39;m in all of the discussions about when
we&amp;#39;ll ship, how do we know, what prereleases will we do, etc, etc. &amp;nbsp;And
those who do actually own the &amp;quot;official responsibility&amp;quot; know I&amp;#39;m
writing about it and are keeping quiet. &amp;nbsp;Maintaining plausable
deniability, I think :)&lt;/i&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;i&gt;If you want to learn more, please visit my blog at &lt;a rel="nofollow" target="_new" href="http://blogs.msdn.com/bharry"&gt;http://blogs.msdn.com/bharry&lt;/a&gt;.
&amp;nbsp;I&amp;#39;m passionate about shipping a great developer tool and partnering
with all of you to accomplish it. &amp;nbsp;I&amp;#39;m always listening and open for
feedback. &amp;nbsp;Nothing I like more than a productive debate.&lt;/i&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;i&gt;Thanks for listening,&lt;/i&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;i&gt;Brian&amp;quot;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#39;s great that Microsoft is considering another public release before RTM. I know it would be to validate the performance fixes after Beta 2, not because add-ins are broken in the current Beta 2. I am fortunate enough to get the private &lt;a href="http://blogs.msdn.com/bharry/archive/2009/12/10/status-update-on-post-beta-2-performance-work.aspx"&gt;Limited CTPs (LCTPs) after Beta 2&lt;/a&gt; but I am under a Non-Disclosure Agreement (NDA) so I can&amp;#39;t blog about their fixes, workarounds or new problems as I did with the public Beta 1 and Beta 2 in the last months to help others, and my new &lt;a href="https://connect.microsoft.com/VisualStudio"&gt;Microsoft Connect&lt;/a&gt; bug reports are now private to Microsoft too. But other developers of add-ins would benefit from that public release, and working add-ins could finally be made available to end users for testing before VS 2010 gets RTM. I wouldn&amp;#39;t have any hope of getting fixes in the automation model between that public release and RTM, though.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1744732" width="1" height="1"&gt;</description></item><item><title>No public VS 2010 Beta 3 or Release Candidate</title><link>http://msmvps.com/blogs/carlosq/archive/2009/12/07/no-public-vs-2010-beta-3-or-release-candidate.aspx</link><pubDate>Mon, 07 Dec 2009 08:51:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1744061</guid><dc:creator>carlosq</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1744061</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1744061</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/12/07/no-public-vs-2010-beta-3-or-release-candidate.aspx#comments</comments><description>&lt;p&gt;I knew it privately but I have realized today that it is public (from a &lt;a href="http://social.msdn.microsoft.com/Profile/en-US/?user=Quan%20To"&gt;Microsoft source&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/vsxprerelease/thread/135dfbbf-6805-46bc-8b5a-1b6a3ca05473"&gt;&amp;quot;There are no plans to release a Beta 3 for Visual Studio 2010. The official release date will be March 22nd. If
you (or your company) are part of the TAP or VSIP program, a release
candidate will be available in the near future. Dates are still
tentative.&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;TAP is the &lt;a href="http://msdn.microsoft.com/en-us/isv/bb190413.aspx"&gt;Technical Adoption Program (TAP)&lt;/a&gt; and VSIP is the &lt;a href="http://msdn.microsoft.com/en-us/vsx2008/products/dd637761.aspx"&gt;Visual Studio Industry Partner Program (VSIP)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Given the &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/10/24/frustrating-new-bugs-in-commandbars-of-vs-2010-beta-2.aspx"&gt;really&lt;/a&gt; &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/10/25/another-critical-vs-2010-beta-2-bug-in-commandbars-this-one-causes-vs-to-evaporate-without-warning-nothing-less.aspx"&gt;horrible&lt;/a&gt; / &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/10/26/yet-another-critical-vs-2010-beta-2-bug-in-commandbars-this-one-causes-vs-to-hang-nothing-less.aspx"&gt;bad&lt;/a&gt; / &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/12/04/microsoft-fixing-vs-2010-beta-2-bug-envdte-windowevents-windowactivated-event-not-fired-for-window-getting-the-focus-after-closing-other-window.aspx"&gt;unusable&lt;/a&gt; / &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/11/02/another-critical-vs-2010-beta-2-bug-that-causes-the-ide-to-hang.aspx"&gt;state&lt;/a&gt; of the automation / commandbars model for add-ins in public VS 2010 Beta 2, it is a pity that there isn&amp;#39;t a public Beta 3 available to everybody so that:&lt;/p&gt;
&lt;p&gt;- &lt;i&gt;All&lt;/i&gt; developers of add-ins (not just those invited to TAP of paying the fee of VSIP) can test that the reported bugs about VS 2010 Beta 2 extensibility are fixed without &lt;i&gt;praying&lt;/i&gt; or &lt;i&gt;crossing fingers&lt;/i&gt; waiting for the RTM.&lt;/p&gt;
&lt;p&gt;- Better yet, consumers of their add-ins can test the add-ins for them also in real life. It is interesting that &lt;a href="http://blogs.msdn.com/bharry/archive/2009/12/05/anatomy-of-a-performance-problem.aspx"&gt;Microsoft itself is going to suffer the same problem of a lack of a public Beta 3 or RC to verify that their internal fixes / tests actually solve the performance problems of VS 2010 Beta 2 in real scenarios&lt;/a&gt; ...&lt;/p&gt;
&lt;p&gt;Since the bar for bugs to pass the triage and get fixed becomes higher and higher as Visual Studio reaches Release Candidate status. I don&amp;#39;t even think that a public Release Candidate would be of any benefit for developers of add-ins, since bugs discovered and reported at that point wouldn&amp;#39;t be fixed unless they are critical (that is, prevent launching the product or affect a large number of users).&lt;/p&gt;
&lt;p&gt;In general, given the &amp;quot;application monster&amp;quot; that Visual Studio is becoming (with more and more features each release) and the huge internal changes that Microsoft is doing to migrate it from a native app to a managed app, what is required IMHO is longer cycles, maybe 3 years instead of 2 (as it happens with Windows / Office / SQL Server, etc.), where the beta 2 is &amp;quot;fully feature completed&amp;quot; and then you devote several months to a beta 3 to fix all the bugs, and then you release a product that you &lt;i&gt;know&lt;/i&gt; that will work great &lt;a href="http://blogs.msdn.com/bharry/archive/2009/12/05/anatomy-of-a-performance-problem.aspx"&gt;rather than just being confident without actual external verification&lt;/a&gt;. Otherwise you end with things like Windows Vista or, to less extent, like Visual Studio 2005 (with its &lt;a href="http://channel9.msdn.com/posts/funkyonex/Performance-Improvements-in-Visual-Studio-2008/"&gt;embarrassing performance problems in real scenarios&lt;/a&gt;), products that were &lt;i&gt;fixed&lt;/i&gt; in the next releases (Windows 7, Visual Studio 2008).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1744061" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/carlosq/archive/tags/VS+2010/default.aspx">VS 2010</category></item><item><title>Microsoft fixing VS 2010 Beta 2 bug: EnvDTE.WindowEvents.WindowActivated event not fired for window getting the focus after closing other window</title><link>http://msmvps.com/blogs/carlosq/archive/2009/12/04/microsoft-fixing-vs-2010-beta-2-bug-envdte-windowevents-windowactivated-event-not-fired-for-window-getting-the-focus-after-closing-other-window.aspx</link><pubDate>Fri, 04 Dec 2009 22:28:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1743678</guid><dc:creator>carlosq</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1743678</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1743678</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/12/04/microsoft-fixing-vs-2010-beta-2-bug-envdte-windowevents-windowactivated-event-not-fired-for-window-getting-the-focus-after-closing-other-window.aspx#comments</comments><description>&lt;p&gt;While VS 2010 Beta 2 has still an undesirable number of bugs as &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/11/28/visual-studio-quot-painless-quot-releases-and-quot-painful-quot-releases-for-add-ins-vs-2010-belongs-to-the-second-group-by-far.aspx"&gt;I have blogged a lot&lt;/a&gt;, Microsoft is putting a lot of effort to fix them. This one was fixed today (for the RTM release):&lt;/p&gt;
&lt;p&gt;VS 2010 Beta 2 Bug: EnvDTE.WindowEvents.WindowActivated event not fired for window getting the focus after closing other window&lt;br /&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=515234"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=515234&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1743678" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/carlosq/archive/tags/VS+2010/default.aspx">VS 2010</category></item><item><title>VS 2010 not installing .NET Framework 2.0 / 3.0 / 3.5 by default</title><link>http://msmvps.com/blogs/carlosq/archive/2009/12/04/vs-2010-not-installing-net-framework-2-0-3-0-3-5-by-default.aspx</link><pubDate>Fri, 04 Dec 2009 21:55:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1743674</guid><dc:creator>carlosq</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1743674</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1743674</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/12/04/vs-2010-not-installing-net-framework-2-0-3-0-3-5-by-default.aspx#comments</comments><description>&lt;p&gt;More than a year ago I wrote a popular post:&lt;/p&gt;
&lt;p&gt;.NET Frameworks, CLRs and Visual Studio add-ins&lt;br /&gt;&lt;a href="http://msmvps.com/blogs/carlosq/archive/2008/11/14/net-frameworks-clrs-and-visual-studio-add-ins.aspx"&gt;http://msmvps.com/blogs/carlosq/archive/2008/11/14/net-frameworks-clrs-and-visual-studio-add-ins.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I stated that VS 2010 would install .NET Framework 2.0, 3.0 and 3.5 (all of them based on CLR 2.0) and, of course, .NET Framework 4.0 (based on CLR 4.0). You may have noticed in the betas of VS 2010 that .NET Framework 2.0, 3.0 and 3.5 are not installed by default, you have to download and install them separately for VS 2010 to use them in projects. So, I have updated the post.&lt;/p&gt;
&lt;p&gt;BTW, in the December 2009 issue of MSDN Magazine there is a good article about loading multiple CLRs in the same process&lt;/p&gt;
&lt;p&gt;In-Process Side-by-Side&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ee819091.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/ee819091.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1743674" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/carlosq/archive/tags/VS+2010/default.aspx">VS 2010</category></item><item><title>Visual Studio "painful" releases and "painless" releases for add-ins. VS 2010 belongs to the first group (by far). And maybe next ones too...</title><link>http://msmvps.com/blogs/carlosq/archive/2009/11/28/visual-studio-quot-painless-quot-releases-and-quot-painful-quot-releases-for-add-ins-vs-2010-belongs-to-the-second-group-by-far.aspx</link><pubDate>Sat, 28 Nov 2009 16:52:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1742746</guid><dc:creator>carlosq</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1742746</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1742746</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/11/28/visual-studio-quot-painless-quot-releases-and-quot-painful-quot-releases-for-add-ins-vs-2010-belongs-to-the-second-group-by-far.aspx#comments</comments><description>&lt;p&gt;There are &amp;quot;painful&amp;quot; Visual Studio releases which require you a lot of testing and changes in your add-in, a lot of time isolating bugs to reproduce them with the minimal code, and a lot of wait until they are fixed in some beta, CTP, etc:&lt;/p&gt;
&lt;p&gt;- VS.NET
2002: introduced a new automation model (EnvDTE) very different to the
one used in VB6, with commands (a new concept at that time), required
(native!) satellite DLLs, shim COM controls for toolwindows, etc.&lt;/p&gt;
&lt;p&gt;- VS 2005: introduced XML-based add-in registration, a new
Microsoft.VisualStudio.CommandBars assembly, managed (.NET) satellite
DLLs, truecolor bitmaps, a new EnvDTE80 assembly, temporary solutions, build platforms, partial classes, etc.&lt;/p&gt;
&lt;p&gt;Then there are &amp;quot;painless&amp;quot; Visual Studio releases which don&amp;#39;t introduce many changes and for the most part use the same code than the one before, so add-ins don&amp;#39;t suffer much:&lt;/p&gt;
&lt;p&gt;- VS.NET 2003: it was very similar to VS.NET 2002.&lt;/p&gt;
&lt;p&gt;- VS 2008: it is very similar to VS 2005.&lt;/p&gt;
&lt;p&gt;VS 2010 belongs to the first group. In the long journey (several releases) that Microsoft is taking to convert the COM-based original VS.NET 2002 IDE to a 100% managed (.NET) IDE, it is the one suffering the most important changes so far. Suffice to say that this is the first VS release that needs to load the .NET Framework when launched (so it loads slower), previous ones went native code all the launch code path.&lt;/p&gt;
&lt;p&gt;In this VS 2010 release the commandbars and the code editors are being changed, which causes add-ins to suffer lots of bugs, specially because Microsoft don&amp;#39;t use add-ins (but SDK packages), so bugs get unnoticed until developers of add-ins start testing extensively. I haven&amp;#39;t counted them exactly, but I&amp;#39;m quite sure I have reported more than 30 bugs in the automation model at &lt;a href="https://connect.microsoft.com/VisualStudio"&gt;Microsoft Connect&lt;/a&gt; since I started to test VS 2010 Beta 1. I don&amp;#39;t remember me reporting so many bugs in the beta period of any previous release. BTW, the bugs that I report that are still in beta 2 are prefixed with &amp;quot;VSIP: VS 2010 Beta 2&amp;quot; if you want to search them.&lt;/p&gt;
&lt;p&gt;Yesterday I finally got tired of not being able to load my &lt;a href="http://www.mztools.com"&gt;MZ-Tools&lt;/a&gt; add-in in VS 2010 Beta 2 due to its &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/10/24/frustrating-new-bugs-in-commandbars-of-vs-2010-beta-2.aspx"&gt;multiple&lt;/a&gt; &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/11/02/another-critical-vs-2010-beta-2-bug-that-causes-the-ide-to-hang.aspx"&gt;frustrating&lt;/a&gt; &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/10/25/another-critical-vs-2010-beta-2-bug-in-commandbars-this-one-causes-vs-to-evaporate-without-warning-nothing-less.aspx"&gt;critical&lt;/a&gt; &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/10/26/yet-another-critical-vs-2010-beta-2-bug-in-commandbars-this-one-causes-vs-to-hang-nothing-less.aspx"&gt;bugs&lt;/a&gt;
in the new WPF-based commandbars. So, for testing purposes, I decided to
skip the creation of toolbars, menus and commandbar popups and instead I
created by hand a custom toolbar with the commands of my add-in (through
the Tools, Customize dialog), so I could at last test the actual features. Of course, the process of creating and populating a custom toolbar couldn&amp;#39;t go without finding a new bug:&lt;/p&gt;
&lt;p&gt;VSIP: VS 2010 Beta 2 Bug: Removing last button from custom toolbar causes it to disappear temporarily from the list of commandbars&lt;br /&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=515143"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=515143&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(and another one that I was unable to reproduce)&lt;/p&gt;
&lt;p&gt;So today I have started to test some features and soon I have found a bug that didn&amp;#39;t happen in previous releases and that can break add-ins with toolwindows whose content changes with the active document window:&lt;/p&gt;
&lt;p&gt;VS 2010 Beta 2 Bug: EnvDTE.WindowEvents.WindowActivated event not fired for window getting the focus after closing other window&lt;br /&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=515234"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=515234&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Notice that the Properties window of VS 2010 is not affected by that bug and changes the content correctly as you close document windows, because it doesn&amp;#39;t use the automation model (EnvDTE.WindowEvents.WindowActivated event).&lt;/p&gt;
&lt;p&gt;Maybe I am too pessimistic, but I think this will be the outlook for add-ins in this and next releases of Visual Studio: a lot of internal changes in Visual Studio that cause bugs in the automation model for add-ins that get unnoticed until very late in the beta cycle (because early betas and CTPs are under heavy construction and are unusable for add-ins).&lt;/p&gt;
&lt;p&gt;And if you think that the next VS release (maybe VS 2012 or VS 2013) will be a &amp;quot;painless&amp;quot; one, &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/08/07/clarification-on-my-previous-post-quot-microsoft-no-longer-fixing-small-bugs-for-vs-2010-quot.aspx"&gt;Microsoft is planning to introduce a new language model (different than the code model provided by Project.CodeModel or ProjectItem.FileCodeModel)&lt;/a&gt;. Even if the current code model is preserved for backward compatibility, chances are that add-ins will want to use a better code model, given the limitations of the current one (no support for generics, no support for code inside methods, limited code generation, bugs, etc.).&lt;/p&gt;
&lt;p&gt;And if you think that the new WPF-based commandbars will be here to stay many years, I bet that sooner of later Microsoft will change them by the ribbon UI of Office 2007 and new Windows 7 applications ;-)&lt;/p&gt;
&lt;p&gt;On the positive side, I do know that Microsoft people are doing a lot of hard work to fix the bugs
and are providing the means to get fixed as many bugs as possible by the RTM release at March 2010.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1742746" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/carlosq/archive/tags/VS+2010/default.aspx">VS 2010</category></item><item><title>Importing Visual Studio settings destroys commandbars of add-ins</title><link>http://msmvps.com/blogs/carlosq/archive/2009/11/19/importing-visual-studio-settings-destroys-commandbars-of-add-ins.aspx</link><pubDate>Thu, 19 Nov 2009 15:42:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1740797</guid><dc:creator>carlosq</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1740797</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1740797</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/11/19/importing-visual-studio-settings-destroys-commandbars-of-add-ins.aspx#comments</comments><description>&lt;p&gt;There is a bug/issue that I &lt;a href="http://www.mztools.com/articles/2006/MZ2006010.aspx"&gt;reported years ago for VS 2005&lt;/a&gt; and was not even acknowledged as a bug but &amp;quot;by design&amp;quot;. VS 2010 (Beta 2) still exhibits it so I keep pushing to get if fixed (the original bug report was lost, I think it died when MSDN Product Feedback became Microsoft Connect):&lt;/p&gt;
&lt;p&gt;VS 2010 Beta2: importing settings destroys commandbars created by add-ins
&lt;br /&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=512214"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=512214&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The problem is that Visual Studio thinks that all the commandbars of the IDE belong to it, ignoring the fact that some commandbars belong to add-ins and it should ignore them when importing settings, rather than resetting them or destroying them...&lt;/p&gt;
&lt;p&gt;To complicate things, when the add-in is unloaded at some point later (by the user or closing VS), it doesn&amp;#39;t have a direct way to know if its commandbars have been destroyed by Visual Studio, so it tries to delete them and it gets a ObjectDisposedException....&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1740797" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/carlosq/archive/tags/VS+2010/default.aspx">VS 2010</category></item><item><title>Add-ins and the "Tools", "Customize" dialog, "Commands" tab of Visual Studio 2010 (Beta 2)</title><link>http://msmvps.com/blogs/carlosq/archive/2009/11/19/add-ins-and-the-quot-tools-quot-quot-customize-quot-dialog-quot-commands-quot-tab-of-visual-studio-2010-beta-2.aspx</link><pubDate>Thu, 19 Nov 2009 11:20:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1740726</guid><dc:creator>carlosq</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1740726</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1740726</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/11/19/add-ins-and-the-quot-tools-quot-quot-customize-quot-dialog-quot-commands-quot-tab-of-visual-studio-2010-beta-2.aspx#comments</comments><description>&lt;p&gt;In VS 2008 (and previous versions), when you opened the &amp;quot;Tools&amp;quot;, &amp;quot;Customize...&amp;quot; dialog, &amp;quot;Commands&amp;quot; tab, you got a list of&amp;nbsp; &amp;quot;categories&amp;quot;, and each category has a list of commands that you could drag and drop on some toolbar to create a button from that command. For commands provided by add-ins, you had the &amp;quot;Add-Ins&amp;quot; category and for commands provided by macros you had the &amp;quot;Macros&amp;quot; category. Furthermore, you had a &amp;quot;Rearrange Commands...&amp;quot; button where a new dialog allowed you to select a menu bar or a toolbar, and add/move/remove commands (buttons), etc. So far so good, except one thing that VS has never managed well which is that toolbars, menu bars, commandbar popups and buttons provided by add-ins &lt;a href="http://www.mztools.com/articles/2005/MZ2005003.aspx"&gt;can be temporary if the add-in uses that approach instead of the permanent one&lt;/a&gt;, and therefore Visual Studio should not offer the temporary UI items of add-ins for customization, since customization will be lost when the add-in is unloaded and when loaded again the add-in will recreate the UI from scratch. I discussed these issues in detail in the article:&lt;/p&gt;
&lt;p&gt;HOWTO: Handling buttons and toolbars user customizations from a Visual Studio add-in&lt;br /&gt;&lt;a href="http://www.mztools.com/articles/2008/MZ2008019.aspx"&gt;http://www.mztools.com/articles/2008/MZ2008019.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In VS 2010 (Beta 2), commandbars are WPF-based and the Customize dialog has suffered a re-design, but if it is not fixed in the RC / RTM builds things are getting worse due to these bugs (currently under evaluation, but likely closed as &amp;quot;won&amp;#39;t fix&amp;quot; in this release):&lt;/p&gt;
&lt;p&gt;VS 2010 Beta 2 Bug: wrong customization for commandbarpopup of add-ins&lt;br /&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=501255"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=501255&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;VS 2010 Beta2: Add-ins and macros commands should not appear in the
&amp;quot;Tools&amp;quot;, &amp;quot;Customize&amp;quot; dialog, &amp;quot;Commands&amp;quot; tab, &amp;quot;Menu bar&amp;quot; combobox&lt;br /&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=512141"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=512141&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Those bugs will cause confusion to users of add-ins if they try to use the Customize dialog...&lt;/p&gt;
&lt;p&gt;At least these two minor bugs were fixed after Beta 2:&lt;/p&gt;
&lt;p&gt;VS 2010 Beta 2 Bug: Command picture not shown in Tools, Customize window, Commands tab&lt;br /&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=502250"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=502250&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;VS 2010 Beta 2 Bug: Command name shown instead of caption in Tools, Customize window, Commands tab&lt;br /&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=502242"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=502242&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1740726" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/carlosq/archive/tags/VS+2010/default.aspx">VS 2010</category></item><item><title>Another critical VS 2010 Beta 2 bug that causes the IDE to hang</title><link>http://msmvps.com/blogs/carlosq/archive/2009/11/02/another-critical-vs-2010-beta-2-bug-that-causes-the-ide-to-hang.aspx</link><pubDate>Mon, 02 Nov 2009 20:12:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1737147</guid><dc:creator>carlosq</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1737147</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1737147</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/11/02/another-critical-vs-2010-beta-2-bug-that-causes-the-ide-to-hang.aspx#comments</comments><description>&lt;p&gt;This bug eluded me during several days because there was &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=503871"&gt;another bug that already caused VS 2010 Beta 2 to hang&lt;/a&gt;, but finally a couple of days ago I realized that was seeing a different issue (no commandbarbutton involved in this new bug) and I was able to isolate and report it today:&lt;/p&gt;
&lt;p&gt;VS 2010 Beta 2 Bug: adding CommandBarPopup to CommandbarPopup causes VS to hang if CommandBarPopup was added to Toolbar before&lt;/p&gt;
&lt;p&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=507650"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=507650&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As I &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/10/24/frustrating-new-bugs-in-commandbars-of-vs-2010-beta-2.aspx"&gt;expressed some days ago&lt;/a&gt;, my feeling with VS 2010 so far (after four builds) is that once you patch your add-in to (somehow) bypass a bug, the add-in finds a new one.&lt;/p&gt;
&lt;p&gt;The (VB.NET) code to reproduce it is:&lt;/p&gt;
&lt;p&gt;Imports System&lt;br /&gt;Imports Microsoft.VisualStudio.CommandBars&lt;br /&gt;Imports Extensibility&lt;br /&gt;Imports EnvDTE&lt;br /&gt;Imports EnvDTE80&lt;br /&gt;&lt;br /&gt;Public Class Connect&lt;br /&gt;&amp;nbsp;&amp;nbsp; Implements IDTExtensibility2&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Private _applicationObject As DTE2&lt;br /&gt;&amp;nbsp;&amp;nbsp; Private _addInInstance As AddIn&lt;br /&gt;&amp;nbsp;&amp;nbsp; Private _commandBarToolbar As CommandBar&lt;br /&gt;&amp;nbsp;&amp;nbsp; Private _commandBarPopupOnToolbar As CommandBarPopup&lt;br /&gt;&amp;nbsp;&amp;nbsp; Private _commandBarPopupMenu As CommandBarPopup&lt;br /&gt;&amp;nbsp;&amp;nbsp; Private _commandBarPopupOnMenu As CommandBarPopup&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Public Sub OnConnection(ByVal application As Object, ByVal connectMode As ext_ConnectMode, ByVal addInInst As Object, ByRef custom As Array) Implements IDTExtensibility2.OnConnection&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _applicationObject = CType(application, DTE2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _addInInstance = CType(addInInst, AddIn)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Select Case connectMode&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case ext_ConnectMode.ext_cm_AfterStartup&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeAddIn()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case ext_ConnectMode.ext_cm_Startup&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39; OnStartupComplete will be called&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Select&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Public Sub OnStartupComplete(ByRef custom As Array) Implements IDTExtensibility2.OnStartupComplete&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeAddIn()&lt;br /&gt;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Private Sub InitializeAddIn()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim commandBars As CommandBars&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Try&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; commandBars = CType(_applicationObject.CommandBars(), CommandBars)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If MessageBox.Show(&amp;quot;Create toolbar before menu?&amp;quot;, &amp;quot;&amp;quot;, MessageBoxButtons.YesNo) = DialogResult.Yes Then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39; This hangs VS 2010 Beta 2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CreateToolbar(commandBars)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CreateMenu(commandBars)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39; This causes nested menus but doesn&amp;#39;t hang VS 2010 Beta 2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CreateMenu(commandBars)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CreateToolbar(commandBars)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Catch ex As Exception&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Windows.Forms.MessageBox.Show(ex.ToString)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Try&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Private Sub CreateToolbar(ByVal commandBars As CommandBars)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _commandBarToolbar = commandBars.Add(Name:=&amp;quot;My toolbar&amp;quot;, Position:=MsoBarPosition.msoBarTop, Temporary:=True)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _commandBarPopupOnToolbar = AddCommandBarPopupToCommandBar(_commandBarToolbar, &amp;quot;MyPopupOnToolbar&amp;quot;, &amp;quot;My Popup On Toolbar&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _commandBarToolbar.Visible = True&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Private Sub CreateMenu(ByVal commandBars As CommandBars)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim menuCommandBar As CommandBar&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menuCommandBar = commandBars.Item(&amp;quot;MenuBar&amp;quot;)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _commandBarPopupMenu = AddCommandBarPopupToCommandBar(menuCommandBar, &amp;quot;MyPopupMenu&amp;quot;, &amp;quot;My Menu&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _commandBarPopupOnMenu = AddCommandBarPopupToCommandBar(_commandBarPopupMenu.CommandBar, &amp;quot;MyPopupOnMenu&amp;quot;, &amp;quot;My Popup On Menu&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _commandBarPopupMenu.Visible = True&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Public Sub OnDisconnection(ByVal disconnectMode As ext_DisconnectMode, ByRef custom As Array) Implements IDTExtensibility2.OnDisconnection&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Try&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not _commandBarPopupOnMenu Is Nothing Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _commandBarPopupOnMenu.Delete()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not _commandBarPopupOnToolbar Is Nothing Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _commandBarPopupOnToolbar.Delete()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not _commandBarPopupMenu Is Nothing Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _commandBarPopupMenu.Delete()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not _commandBarToolbar Is Nothing Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _commandBarToolbar.Delete()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Catch ex As Exception&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Windows.Forms.MessageBox.Show(ex.ToString)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Try&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Public Sub OnAddInsUpdate(ByRef custom As Array) Implements IDTExtensibility2.OnAddInsUpdate&lt;br /&gt;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Public Sub OnBeginShutdown(ByRef custom As Array) Implements IDTExtensibility2.OnBeginShutdown&lt;br /&gt;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Friend Shared Function AddCommandBarPopupToCommandBar(ByVal objParentCommandBar As CommandBar, _&lt;br /&gt;&amp;nbsp;ByVal sCommandBarName As String, ByVal sCaption As String) As CommandBarPopup&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim objCommandBarPopup As CommandBarPopup = Nothing&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim objCommandBar As CommandBar&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim objCommandBarControl As CommandBarControl&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim iPosition As Integer&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not (objParentCommandBar Is Nothing) Then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iPosition = objParentCommandBar.Controls.Count + 1&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objCommandBarControl = objParentCommandBar.Controls.Add(Type:=MsoControlType.msoControlPopup, Before:=iPosition)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objCommandBarPopup = CType(objCommandBarControl, CommandBarPopup)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objCommandBar = objCommandBarPopup.CommandBar&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not (objCommandBar Is Nothing) Then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objCommandBar.Name = sCommandBarName&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objCommandBarPopup.Caption = sCaption&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return objCommandBarPopup&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; End Function&lt;br /&gt;&lt;br /&gt;End Class&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1737147" width="1" height="1"&gt;</description></item><item><title>More on CommandBarButton.Mask property deprecated in VS 2010</title><link>http://msmvps.com/blogs/carlosq/archive/2009/11/01/more-on-commandbarbutton-mask-property-deprecated-in-vs-2010.aspx</link><pubDate>Sun, 01 Nov 2009 16:40:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1736810</guid><dc:creator>carlosq</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1736810</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1736810</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/11/01/more-on-commandbarbutton-mask-property-deprecated-in-vs-2010.aspx#comments</comments><description>&lt;p&gt;In the post &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/10/07/commandbarbutton-mask-property-deprecated-in-vs-2010.aspx"&gt;CommandBarButton.Mask property deprecated in VS 2010&lt;/a&gt; I mentioned that VS 2010 will deprecate the Mask property of CommandBarButton to specify bitmap transparency, accepting 32-bit bitmaps with transparency in the alpha channel in the CommandBarButton.Picture property instead.&lt;/p&gt;
&lt;p&gt;The VS team told me some weeks ago that the CommandBarButton.Picture would accept also in next VS 2010 builds 24-bit bitmaps with RGB=0,254,0 (almost pure green) as transparent color (as VS has always accepted for commands). I have verified this week that VS 2010 Beta 2 accepts that possibility correctly.&lt;/p&gt;
&lt;p&gt;Bottom line: VS 2010 will accept &lt;b&gt;both&lt;/b&gt; in Commands (AddNamedCommand) &lt;b&gt;and &lt;/b&gt;CommandBarButton.Picture:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;32-bit bitmaps with transparency in the alpha channel&lt;/li&gt;
&lt;li&gt;24-bit bitmaps with RGB=0,254,0 (almost pure green) as transparent color&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1736810" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/carlosq/archive/tags/VS+2010/default.aspx">VS 2010</category></item><item><title>Workaround for VS 2010 Beta 2 Bug: CommandBarButton.Style not honored, always Icon + Caption</title><link>http://msmvps.com/blogs/carlosq/archive/2009/10/26/workaround-for-vs-2010-beta-2-bug-commandbarbutton-style-not-honored-always-icon-caption.aspx</link><pubDate>Mon, 26 Oct 2009 20:01:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1735472</guid><dc:creator>carlosq</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1735472</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1735472</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/10/26/workaround-for-vs-2010-beta-2-bug-commandbarbutton-style-not-honored-always-icon-caption.aspx#comments</comments><description>&lt;p&gt;Back in VS.NET 2002/2003 the only way to change the style (Icon only, or Icon + Caption) of a CommandBarButton created from a Command was to cast the CommandBarControl returned by Command.AddControl to CommandBarButton and use the CommandBarButton.Style property.&lt;/p&gt;
&lt;p&gt;If you use that approach in VS 2010 Beta 2 you will find this bug that I already mentioned:&lt;/p&gt;
&lt;p&gt;VS 2010 Beta 2 Bug: CommandBarButton.Style not honored, always Icon + Caption&lt;br /&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=500403"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=500403&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That means that if the toolbar of your add-in has 30 buttons which should be shown as &amp;quot;only icon&amp;quot;, due to this bug they will shown as &amp;quot;icon + caption&amp;quot; and you hardly will see 7 of them...&lt;/p&gt;
&lt;p&gt;Fortunately there is a workaround thanks to the EnvDTE80.Commands2.AddNamedCommand2 method that was introduced in VS 2005. So you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cast the EnvDTE.DTE.Commands (or EnvDTE80.DTE2.Commands) property to EnvDTE80.Commands2&lt;/li&gt;
&lt;li&gt;Call the Commands2.AddNamedCommand2 method passing in the CommandStyleFlags parameter the EnvDTE80.vsCommandStyle.vsCommandStylePict value&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I hope this helps.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1735472" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/carlosq/archive/tags/VS+2010/default.aspx">VS 2010</category></item><item><title>Yet another critical VS 2010 Beta 2 bug in CommandBars: this one causes VS to hang, nothing less</title><link>http://msmvps.com/blogs/carlosq/archive/2009/10/26/yet-another-critical-vs-2010-beta-2-bug-in-commandbars-this-one-causes-vs-to-hang-nothing-less.aspx</link><pubDate>Mon, 26 Oct 2009 19:32:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1735449</guid><dc:creator>carlosq</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1735449</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1735449</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/10/26/yet-another-critical-vs-2010-beta-2-bug-in-commandbars-this-one-causes-vs-to-hang-nothing-less.aspx#comments</comments><description>&lt;p&gt;This one happens when an add-in:&lt;/p&gt;
&lt;p&gt;- Creates a temporary toolbar using CommandBars.Add&lt;/p&gt;
&lt;p&gt;- Creates a temporary CommandBarPopup on that toolbar&lt;/p&gt;
&lt;p&gt;- Creates a command and tries to add a CommandBarButton from that command to that CommandBarPopup using Command.Add(CommandBarPopup.CommandBar)&lt;/p&gt;
&lt;p&gt;The bug report is here:&lt;/p&gt;
&lt;p&gt;VS 2010 Beta 2 Bug: adding CommandBarButton from Command to CommandbarPopup on Toolbar causes VS to hang&lt;/p&gt;
&lt;p&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=503871"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=503871&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The (VB.NET) code to reproduce the problem is:&lt;/p&gt;
&lt;p&gt;Imports System&lt;br /&gt;Imports Microsoft.VisualStudio.CommandBars&lt;br /&gt;Imports Extensibility&lt;br /&gt;Imports EnvDTE&lt;br /&gt;Imports EnvDTE80&lt;br /&gt;&lt;br /&gt;Public Class Connect&lt;br /&gt;&amp;nbsp;&amp;nbsp; Implements IDTExtensibility2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; Private _applicationObject As DTE2&lt;br /&gt;&amp;nbsp;&amp;nbsp; Private _addInInstance As AddIn&lt;br /&gt;&amp;nbsp;&amp;nbsp; Private _myCommandBarToolbar As CommandBar&lt;br /&gt;&amp;nbsp;&amp;nbsp; Private _myCommandBarPopup As CommandBarPopup&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Public Sub OnConnection(ByVal application As Object, ByVal connectMode As ext_ConnectMode, ByVal addInInst As Object, ByRef custom As Array) Implements IDTExtensibility2.OnConnection&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _applicationObject = CType(application, DTE2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _addInInstance = CType(addInInst, AddIn)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Select Case connectMode&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case ext_ConnectMode.ext_cm_AfterStartup&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeAddIn()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case ext_ConnectMode.ext_cm_Startup&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39; OnStartupComplete will be called&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Select&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Public Sub OnStartupComplete(ByRef custom As Array) Implements IDTExtensibility2.OnStartupComplete&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeAddIn()&lt;br /&gt;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Private Sub InitializeAddIn()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Const MY_COMMAND_NAME As String = &amp;quot;MyCommand&amp;quot;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim command As Command = Nothing&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim commandBars As CommandBars&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim commandBarControlObject As Object&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Try&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; commandBars = CType(_applicationObject.CommandBars(), CommandBars)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _myCommandBarToolbar = commandBars.Add(Name:=&amp;quot;My toolbar&amp;quot;, Position:=MsoBarPosition.msoBarTop)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39; Create a commandbar popup&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _myCommandBarPopup = CType(_myCommandBarToolbar.Controls.Add(Type:=MsoControlType.msoControlPopup), CommandBarPopup)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _myCommandBarPopup.Caption = &amp;quot;My CommandBarPopup&amp;quot;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39; Try to retrieve existing command&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = _applicationObject.Commands.Item(_addInInstance.ProgID &amp;amp; &amp;quot;.&amp;quot; &amp;amp; MY_COMMAND_NAME)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Catch ex As Exception&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Try&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39; Create command&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If command Is Nothing Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = _applicationObject.Commands.AddNamedCommand(_addInInstance, MY_COMMAND_NAME, &amp;quot;My command&amp;quot;, &amp;quot;My tooltip&amp;quot;, True, 59)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39; This line hangs VS 2010 Beta 2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; commandBarControlObject = command.AddControl(_myCommandBarPopup.CommandBar)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Catch ex As Exception&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Windows.Forms.MessageBox.Show(ex.ToString)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Try&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Public Sub OnDisconnection(ByVal disconnectMode As ext_DisconnectMode, ByRef custom As Array) Implements IDTExtensibility2.OnDisconnection&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Try&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not _myCommandBarPopup Is Nothing Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _myCommandBarPopup.Delete()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not _myCommandBarToolbar Is Nothing Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _myCommandBarToolbar.Delete()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Catch ex As Exception&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Windows.Forms.MessageBox.Show(ex.ToString)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Try&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Public Sub OnAddInsUpdate(ByRef custom As Array) Implements IDTExtensibility2.OnAddInsUpdate&lt;br /&gt;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Public Sub OnBeginShutdown(ByRef custom As Array) Implements IDTExtensibility2.OnBeginShutdown&lt;br /&gt;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;End Class&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1735449" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/carlosq/archive/tags/VS+2010/default.aspx">VS 2010</category></item><item><title>Another critical VS 2010 Beta 2 bug in CommandBars: this one causes VS to evaporate without warning, nothing less</title><link>http://msmvps.com/blogs/carlosq/archive/2009/10/25/another-critical-vs-2010-beta-2-bug-in-commandbars-this-one-causes-vs-to-evaporate-without-warning-nothing-less.aspx</link><pubDate>Sun, 25 Oct 2009 20:48:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1735137</guid><dc:creator>carlosq</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1735137</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1735137</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/10/25/another-critical-vs-2010-beta-2-bug-in-commandbars-this-one-causes-vs-to-evaporate-without-warning-nothing-less.aspx#comments</comments><description>&lt;p&gt;After 3 hours isolating this to the minimal expression (which is tedious if your add-in is has lots of user interface items and debugging a VS 2010 add-in on a virtual machine is painfully slow), here it is:&lt;/p&gt;
&lt;p&gt;VS 2010 Beta 2 Bug: deleting a CommandbarPopup unloading add-in causes VS to disappear&lt;br /&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=503093"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=503093&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(the problem happens if the add-in creates two (not just one) CommandBarPopups on a parent CommandBarPopup and tries to delete them when unloaded)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1735137" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/carlosq/archive/tags/VS+2010/default.aspx">VS 2010</category></item><item><title>Frustrating new bugs in commandbars of VS 2010 Beta 2</title><link>http://msmvps.com/blogs/carlosq/archive/2009/10/24/frustrating-new-bugs-in-commandbars-of-vs-2010-beta-2.aspx</link><pubDate>Sat, 24 Oct 2009 23:26:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1734903</guid><dc:creator>carlosq</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1734903</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1734903</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/10/24/frustrating-new-bugs-in-commandbars-of-vs-2010-beta-2.aspx#comments</comments><description>&lt;p&gt;I can&amp;#39;t express how disappointed, frustrated (and more things!) I am with VS 2010 Beta 2 regarding correct behavior of commandbars for add-ins. It seems that once a bug is fixed in a VS 2010 build and an add-in can pass that point, new bugs surface that prevent its correct loading (and I have tested several builds since Beta 1).&lt;/p&gt;
&lt;p&gt;Suffice to make you aware of these bugs:&lt;/p&gt;
&lt;p&gt;VS 2010 Beta 2 Bug: CommandBarButton of add-in duplicated in new commandbar when already created in another commandbar&lt;br /&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=502289"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=502289&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(For my &lt;a href="http://www.mztools.com"&gt;MZ-Tools&lt;/a&gt; add-in with tons of buttons, menus and popups, only that bug of VS 2010 Beta 2 has completely ruined it, not to mention the time it took me to isolate it until I realized what was happening because initially the add-in seemed to hang, due to the number of duplications that were occurring at the glacial speed of VS 2010 debugging an add-in on another VS 2010 instance on a virtual machine)&lt;/p&gt;
&lt;p&gt;VS 2010 Beta 2 Bug: CommandBarButton.Style not honored, always Icon + Caption&lt;br /&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=500403"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=500403&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;VS 2010 Beta 2 Bug: System.AccessViolationException attempting to create a temporary popup commandbar&lt;br /&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=500408"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=500408&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;VS 2010 Beta2: InvalidCastException casting
DirectCast(CommandBarControl, CommandBarPopup).CommandBar.Parent back
to CommandBarControl&lt;br /&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=499483"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=499483&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I realize that changing the COM-based commandbars of VS 2008 by new WPF-based commandbars in VS 2010 is a daunting and difficult task, but if the next milestone after Beta 2 is Release Candidate (where only critical bugs are fixed) then Beta 2 should be already free of such nasty bugs. Or there should be a known roadmap of betas / CTPs until RTM so that developers of add-ins can know how many builds they will have to test and rest assured that they will have enough weeks/months to test their add-ins (considering that in Beta 2 they can&amp;#39;t get them even loaded in Visual Studio).&lt;/p&gt;
&lt;p&gt;I think that since Microsoft builds and extends Visual Studio with packages (SDK) and not add-ins, commandbars/commands/buttons of packages get better behavior earlier in the development cycle of Visual Studio. But for add-ins (automation) every time that commandbars are changed in some VS release, you have to wait until the RTM to check is some bug that could ruin your add-in is fixed. I experienced the same with VS 2005, which introduced 24-bit bitmaps (rather than the 16-color bitmaps of VS.NET 2003) and a different assembly for Microsoft.VisualStudio.Commandbars.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1734903" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/carlosq/archive/tags/VS+2010/default.aspx">VS 2010</category></item><item><title>VS 2010 RC/RTM fixing " 'Object must be the same type as the enum' exception calling CommandBars.Add from an add-in" problem</title><link>http://msmvps.com/blogs/carlosq/archive/2009/10/24/vs-2010-rc-rtm-fixing-quot-object-must-be-the-same-type-as-the-enum-exception-calling-commandbars-add-from-an-add-in-quot-problem.aspx</link><pubDate>Sat, 24 Oct 2009 08:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1734718</guid><dc:creator>carlosq</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1734718</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1734718</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/10/24/vs-2010-rc-rtm-fixing-quot-object-must-be-the-same-type-as-the-enum-exception-calling-commandbars-add-from-an-add-in-quot-problem.aspx#comments</comments><description>&lt;p&gt;Microsoft has reported that this problem will be fixed:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;quot; &amp;#39;Object must be the same type as the enum&amp;#39; exception calling CommandBars.Add from an add-in&amp;quot;&lt;a href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=462766"&gt;&lt;br /&gt;http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=462766&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Notice that the  &amp;quot;Embed Interop Types&amp;quot; property seems to have been renamed to &amp;quot;Isolated&amp;quot; in VS 2010 Beta 2, in one of those renaming changes that make things more obscure...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1734718" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/carlosq/archive/tags/VS+2010/default.aspx">VS 2010</category></item><item><title>VS 2010 Beta 2 certainly supporting RGB=0,254,0 as background color for command pictures as in previous versions of Visual Studio</title><link>http://msmvps.com/blogs/carlosq/archive/2009/10/24/vs-2010-beta-2-certainly-supporting-rgb-0-254-0-as-background-color-for-command-pictures-as-in-previous-versions-of-visual-studio.aspx</link><pubDate>Sat, 24 Oct 2009 07:37:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1734710</guid><dc:creator>carlosq</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1734710</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1734710</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/10/24/vs-2010-beta-2-certainly-supporting-rgb-0-254-0-as-background-color-for-command-pictures-as-in-previous-versions-of-visual-studio.aspx#comments</comments><description>&lt;p&gt;FWIW, I have verified that VS 2010 Beta 2 certainly fixes the issue of supporting RGB=0,254,0 for transparent color in 24-bit command pictures that I mentioned &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/08/02/microsoft-supporting-rgb-0-254-0-for-transparent-color-in-command-pictures-also-in-vs-2010.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, if your add-in targets VS 2005, 2008 and 2010 you can use that color for the transparent background color of command pictures and they won&amp;#39;t appear with lime green in Beta 2 as it happened in Beta 1 or previous CTPs builds.&lt;/p&gt;
&lt;p&gt;If your add-in only targets VS 2010 it is preferable to use the new support for 32-bit command bitmaps. I guess that in a few years Microsoft will only support 32-bit bitmaps in Visual Studio.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1734710" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/carlosq/archive/tags/VS+2010/default.aspx">VS 2010</category></item><item><title>VS 2010 and the Microsoft.VisualStudio.CommandBars.CommandBarPopup interface</title><link>http://msmvps.com/blogs/carlosq/archive/2009/10/23/vs-2010-and-the-commandbarpopup-interface.aspx</link><pubDate>Fri, 23 Oct 2009 22:38:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1734648</guid><dc:creator>carlosq</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/rsscomments.aspx?PostID=1734648</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/carlosq/commentapi.aspx?PostID=1734648</wfw:comment><comments>http://msmvps.com/blogs/carlosq/archive/2009/10/23/vs-2010-and-the-commandbarpopup-interface.aspx#comments</comments><description>&lt;p&gt;This is going to be messy, so step by step:&lt;/p&gt;
&lt;p&gt;Imagine that you are developing an add-in that uses &lt;a href="http://www.mztools.com/articles/2005/MZ2005003.aspx"&gt;a temporary user interface (not permanent one)&lt;/a&gt;, and creates a couple of commandbars of kind &amp;quot;toolbar&amp;quot;, and many commandbars of kind &amp;quot;popup&amp;quot; (with submenus). &lt;/p&gt;
&lt;p&gt;Since it uses a temporary user interface, it must delete those commandbars when unloaded. &lt;/p&gt;
&lt;p&gt;For that purpose, it must keep a reference to each created commandbar at class level (all this is explained in the article of the previous link).&lt;/p&gt;
&lt;p&gt;Since it creates lots of commandbars, rather than keeping each one individually, they are stored in a class-level collection. Of which type?&lt;/p&gt;
&lt;p&gt;CommandBars of kind &amp;quot;Toolbar&amp;quot; have the &amp;quot;Microsoft.VisualStudio.CommandBars.CommandBar&amp;quot; type but commandbars of kind &amp;quot;popup&amp;quot; have the Microsoft.VisualStudio.CommandBars.CommandBarPopup&amp;quot; type, so both can&amp;#39;t be stored in the same typed collection, but we would like to use a single collection, not two, or not a collection of System.Object.&lt;/p&gt;
&lt;p&gt;Fortunately the Microsoft.VisualStudio.CommandBars.CommandBarPopup type has a CommandBar property, and since the Microsoft.VisualStudio.CommandBars.CommandBar type has a Parent property (typed as System.Object, that should return a Microsoft.VisualStudio.CommandBars.CommandBarPopup actually), you can use a generic typed collection List&amp;lt;Microsoft.VisualStudio.CommandBars.CommandBar&amp;gt;, which stores the CommandBar of toolbars, and the CommandBarPopup.CommandBar of popup commandbars.&lt;/p&gt;
&lt;p&gt;When the add-in is unloaded, it iterates the commandbars of the collection to delete them: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If the CommandBar.Type is MsoBarType.msoBarTypeNormal, the commandbar is a toolbar and can be deleted calling the Delete method.&lt;/li&gt;
&lt;li&gt;If the CommandBar.Type is MsoBarType.msoBarTypePopup, the commandbar is a popup so we get its Parent property (which is a System.Object) and we cast it to Microsoft.VisualStudio.CommandBars.CommandBarPopup. Then, we call the Delete method of CommandBarPopup.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(As I &lt;a href="http://msmvps.com/blogs/carlosq/archive/2009/10/23/vs-2010-beta-2-commandbar-related-bugs-with-fixes-on-the-way.aspx"&gt;mentioned&lt;/a&gt;, my &lt;a href="http://www.mztools.com"&gt;MZ-Tools&lt;/a&gt; add-ins seems to use every conceivable technique provided by the Microsoft.VisualStudio.CommandBars API)&lt;/p&gt;
&lt;p&gt;However, this approach that worked perfectly in VS 2005/2008, doesn&amp;#39;t work in VS 2010. Why?&lt;/p&gt;
&lt;p&gt;It happens that VS 2010 uses WPF-based commandbars, but add-ins for VS 2010 still use the Microsoft.VisualStudio.CommandBars Interop (ActiveX) assembly for backwards compatibility. &lt;/p&gt;
&lt;p&gt;That interop assembly provides the Microsoft.VisualStudio.CommandBars.CommandBarPopup type, which is actually an interface (although it doesn&amp;#39;t follow the convention for interface names), not a class. The same happens with the CommandBar and CommandBarControl types, which are interfaces, not classes. The CommandBarButton type is a class, though. To complicate things, you have the CommandBars class and the _CommandBars interface... anyway:&lt;/p&gt;
&lt;p&gt;In VS 2005/2008, which use native (COM) commandbars, the classes that actually implement those interfaces are native, and from a managed add-in you see them through a &lt;a href="http://www.mztools.com/articles/2006/MZ2006013.aspx"&gt;System.__ComObject&lt;/a&gt; which is the &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd347981.aspx"&gt;Runtime Callable Wrapper (RCW) that you get when you don&amp;#39;t have an interop assembly&lt;/a&gt;. But since they implement the interfaces provided by the Microsoft.VisualStudio.CommandBars assembly, the add-in works fine.&lt;/p&gt;
&lt;p&gt;In VS 2010, which uses managed (.NET) WPF commandbars, the classes that actually implement those interfaces are managed and are provided by the Microsoft.VisualStudio.PlatformUI.Automation namespace in the managed (.NET) Microsoft.VisualStudio.Shell.UI.Internal.dll assembly (in one of the VS 2010 folders).&lt;/p&gt;
&lt;p&gt;When you create a commandbar popup calling:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Microsoft.VisualStudio.CommandBars.CommandBarControl commandBarControl;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;commandBarControl = parentCommandBar.Controls.Add(MsoControlType.msoControlPopup);&lt;/p&gt;
&lt;p&gt;you get some class instance that implements the Microsoft.VisualStudio.CommandBars.CommandBarPopup interface. So you can do this cast:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Microsoft.VisualStudio.CommandBars.CommandBarPopup commandBarPopup;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;commandBarPopup = (Microsoft.VisualStudio.CommandBars.CommandBarPopup) commandBarControl;&lt;/p&gt;
&lt;p&gt; In VS 2010, the actual class that implements that Microsoft.VisualStudio.CommandBars.CommandBarPopup interface is the Microsoft.VisualStudio.PlatformUI.Automation.CommandBarPopup.&lt;b&gt;_Marshaler&lt;/b&gt; class.&lt;/p&gt;
&lt;p&gt;However, when you do this:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;commandBarPopup.CommandBar.Parent&lt;/p&gt;
&lt;p&gt;in VS 2005/2008 you get an object that implements the Microsoft.VisualStudio.CommandBars.CommandBarPopup interface (as expected), so the approach described in the beginning of this post worked.&lt;/p&gt;
&lt;p&gt;In VS 2010 you get an instance of the Microsoft.VisualStudio.PlatformUI.Automation.&lt;b&gt;CommandBarPopup&lt;/b&gt; class, not of the Microsoft.VisualStudio.PlatformUI.Automation.CommandBarPopup.&lt;b&gt;_Marshaler&lt;/b&gt; class that you got when creating it. &lt;/p&gt;
&lt;p&gt;It happens that the Microsoft.VisualStudio.PlatformUI.Automation.&lt;b&gt;CommandBarPopup&lt;/b&gt; class doesn&amp;#39;t implement the Microsoft.VisualStudio.CommandBars.CommandBarPopup interface. It implements IMarshaledObject&amp;lt;CommandBarPopup&amp;gt; instead. It also has a Marshaller property that would return the Microsoft.VisualStudio.CommandBars.CommandBarPopup interface implementation.&lt;/p&gt;
&lt;p&gt;So, the approach that worked with VS 2005/2008 doesn&amp;#39;t work with VS 2010.&lt;/p&gt;
&lt;p&gt;Since you can&amp;#39;t cast or get  the Microsoft.VisualStudio.CommandBars.CommandBarPopup interface and an add-in targeting VS 2005/2008/2010 with the same dll can&amp;#39;t include a reference to the Microsoft.VisualStudio.Shell.UI.Internal.dll, keeping this approach the only way would be to call its Delete method would be through Reflection.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1734648" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/carlosq/archive/tags/VS+2010/default.aspx">VS 2010</category></item></channel></rss>