<?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>Pedro Silva's Blog</title><link>http://blogs.msdn.com/b/pedrosilva/</link><description>Development lead on Visual Studio Platform team focusing on the extensibility of Visual Studio.</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Cool Extension: Modeling Feature Pack</title><link>http://blogs.msdn.com/b/pedrosilva/archive/2010/06/18/cool-extension-modeling-feature-pack.aspx</link><pubDate>Fri, 18 Jun 2010 16:28:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10027173</guid><dc:creator>Pedro Silva [Visual Studio]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/pedrosilva/rsscomments.aspx?WeblogPostID=10027173</wfw:commentRss><comments>http://blogs.msdn.com/b/pedrosilva/archive/2010/06/18/cool-extension-modeling-feature-pack.aspx#comments</comments><description>&lt;p&gt;Microsoft just recently released the &lt;a href="http://msdn.microsoft.com/en-us/vstudio/ff655021.aspx"&gt;Visualization and Modeling Feature Pack &lt;/a&gt;for Visual Studio 2010 Ultimate. This provides additional great features for visualizing your code, seeing its interconnections, and doing something about it. The base UML diagramming functionality shipped as part of Visual Studio 2010 Ultimate. This feature pack adds more functionality to those diagrams by being able to:&lt;/p&gt;
&lt;ul&gt;&lt;li style="padding-left: 30px;"&gt;Generate code from UML class diagrams.&lt;/li&gt;
&lt;li style="padding-left: 30px;"&gt;Create UML class diagrams from code.&lt;/li&gt;
&lt;li style="padding-left: 30px;"&gt;Import UML class, sequence, and use case elements from XMI 2.1 files.&lt;/li&gt;
&lt;li style="padding-left: 30px;"&gt;Create and view links from work items to model elements.&lt;/li&gt;
&lt;li style="padding-left: 30px;"&gt;Generate dependency graphs for ASP.NET Web, C, and C++ projects.&lt;/li&gt;
&lt;li style="padding-left: 30px;"&gt;Create and validate layer diagrams for C and C++ code.&lt;/li&gt;
&lt;li style="padding-left: 30px;"&gt;Write custom code to create, modify, and validate layer diagrams.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;These are all great features to see being added to the UML functionality. I hope all you modelers out there pick up this pack and try it out.&lt;/p&gt;
&lt;p&gt;Note: You need to have Visual Studio 2010 Ultimate to use this feature pack.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10027173" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Extension/">Extension</category></item><item><title>Cool Extension: VS2010 Pro Power Tools</title><link>http://blogs.msdn.com/b/pedrosilva/archive/2010/06/11/cool-extension-vs2010-pro-power-tools.aspx</link><pubDate>Fri, 11 Jun 2010 21:43:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10023742</guid><dc:creator>Pedro Silva [Visual Studio]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/pedrosilva/rsscomments.aspx?WeblogPostID=10023742</wfw:commentRss><comments>http://blogs.msdn.com/b/pedrosilva/archive/2010/06/11/cool-extension-vs2010-pro-power-tools.aspx#comments</comments><description>&lt;p&gt;We've just released the new &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef"&gt;Pro Power Tools&lt;/a&gt; which is a collection of useful extensions to make your day-to-day use of Visual Studio 2010 even more productive. Highlights in this release:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Collection of useful editor extensions&lt;/li&gt;
&lt;li&gt;New and improved Add Reference dialog&lt;/li&gt;
&lt;li&gt;Document Tab Well, with colors and pinning of tabs&lt;/li&gt;
&lt;li&gt;Extension update checker that runs on startup of VS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, this is the first release of the Power Pack, but expect updates to come out regularly with improvements to the current extensions and new extensions that are just as useful...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10023742" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Extension/">Extension</category></item><item><title>Extension Manager Feedback</title><link>http://blogs.msdn.com/b/pedrosilva/archive/2010/06/02/extension-manager-feedback.aspx</link><pubDate>Wed, 02 Jun 2010 20:57:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10019119</guid><dc:creator>Pedro Silva [Visual Studio]</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/pedrosilva/rsscomments.aspx?WeblogPostID=10019119</wfw:commentRss><comments>http://blogs.msdn.com/b/pedrosilva/archive/2010/06/02/extension-manager-feedback.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now that Visual Studio 2010 is available, it would be great to get more feedback on the new Extension Manager feature in this version. This can encompass a lot of things from the installation experience, to the online extension&amp;nbsp;discovery, to the installed extensions and updates, VSIX and MSI support, and more... and anything else you'd like to comment on. If you haven't tried the Extension Manager yet, you can find it in the Tools menu. Launch it, and start discovering extensions to Visual Studio by clicking its Online Gallery tab.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img height="319" width="475" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-43-63/5466.ExtensionManager.png" border="0" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What parts of the Extension Manager do you really like? &lt;/li&gt;
&lt;li&gt;What parts would you like to see improved?&lt;/li&gt;
&lt;li&gt;Also, with an eye looking ahead, what are some of the things you would really like to see in the next version of the Extension Manager?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Feel free to comment on this post with your thoughts, feedback,&amp;nbsp;or ideas. Thanks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10019119" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Visual+Studio/">Visual Studio</category></item><item><title>Nice Review of the Extension Manager</title><link>http://blogs.msdn.com/b/pedrosilva/archive/2010/06/01/nice-review-of-the-extension-manager.aspx</link><pubDate>Tue, 01 Jun 2010 22:14:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10018556</guid><dc:creator>Pedro Silva [Visual Studio]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/pedrosilva/rsscomments.aspx?WeblogPostID=10018556</wfw:commentRss><comments>http://blogs.msdn.com/b/pedrosilva/archive/2010/06/01/nice-review-of-the-extension-manager.aspx#comments</comments><description>&lt;p&gt;Chris wrote a &lt;a href="http://blogs.techrepublic.com.com/programming-and-development/?p=2636"&gt;nice review of the VS2010 Extension Manager feature&lt;/a&gt; at TechRepublic. Having worked on the team that wrote that feature, it's always nice to see a positive review of what you've spent your effort working on. As Chris also noted, there is still more work that needs to be done to round out the Extension Manager experience. But,&amp;nbsp;we hope that its first incarnation will fuel the use and development of new extensions for Visual Studio. We've already seen a lot of new extensions go live right around launch of VS2010.&lt;/p&gt;
&lt;p&gt;One thing I'd like to make clear from his article, Chris talks a lot about MEF extensions and the Extension Manager... and there are definitely some interesting, new MEF extensions that have already been build for VS2010. But, the bulk of the extensions on the Online Gallery are packages (for&amp;nbsp;designers, tool windows, menu&amp;nbsp;commands,&amp;nbsp;etc), toolbox controls, and templates, which are not MEF based at all. The new deployment model we implemented for this version (the VSIX file), supports all of those methods of extending Visual Studio... not only for MEF extensions. &lt;/p&gt;
&lt;p&gt;As a matter of fact, your extension doesn't even need to be deployed in a VSIX file to show up in the Online Gallery. The Extension Manager will also show MSI-based extensions that can be installed from the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/"&gt;VS Gallery&lt;/a&gt;. However, those types of extensions cannot be managed (enabled/disabled/uninstalled) through the Extension Manager... that must be done with the Windows Add/Remove Programs.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10018556" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/VSX/">VSX</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Visual+Studio+SDK/">Visual Studio SDK</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Visual+Studio/">Visual Studio</category></item><item><title>Cool Extension: Extension Analyzer</title><link>http://blogs.msdn.com/b/pedrosilva/archive/2010/05/27/cool-extension-extension-analyzer.aspx</link><pubDate>Thu, 27 May 2010 22:25:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10016608</guid><dc:creator>Pedro Silva [Visual Studio]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/pedrosilva/rsscomments.aspx?WeblogPostID=10016608</wfw:commentRss><comments>http://blogs.msdn.com/b/pedrosilva/archive/2010/05/27/cool-extension-extension-analyzer.aspx#comments</comments><description>&lt;p&gt;Have you ever created a VS Package, tried to run it in Visual Studio only to get the infamous Package Load Failure dialog? Created an editor extension, tried to use it and it never shows up in the VS2010 code editor? Well then the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/56253144-6ffa-4e93-8224-6c59822ce900"&gt;Extension Analyzer&lt;/a&gt; is for you. &lt;/p&gt;
&lt;p&gt;This tool lets you view logging data from the Visual Studio ActivityLog and MEF tracing, so that you can see errors as they're happening in your component's load. It also lets you run fusion analysis against your assembly to see what kind of managed load failures may be coming from there.&amp;nbsp;It shows what MEF queries Visual Studio makes as different subsystems in the product are being executed. And, even more.&lt;/p&gt;
&lt;p&gt;Give it a try and provide any feedback you have on this tool, in &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/56253144-6ffa-4e93-8224-6c59822ce900"&gt;it's VS Gallery page&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10016608" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/VSX/">VSX</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Visual+Studio+SDK/">Visual Studio SDK</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Extension/">Extension</category></item><item><title>Creating Custom StartPage Extensions</title><link>http://blogs.msdn.com/b/pedrosilva/archive/2010/05/05/creating-custom-startpage-extensions.aspx</link><pubDate>Wed, 05 May 2010 17:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10007562</guid><dc:creator>Pedro Silva [Visual Studio]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/pedrosilva/rsscomments.aspx?WeblogPostID=10007562</wfw:commentRss><comments>http://blogs.msdn.com/b/pedrosilva/archive/2010/05/05/creating-custom-startpage-extensions.aspx#comments</comments><description>&lt;P&gt;I've been working on a custom start page sample that creates a new tab on the typical Visual Studio StartPage. This new tab integrates in Bing search functionality, letting developers type in their search query and performing a search.&amp;nbsp;The results can either come up in the Visual Studio internal browser or the user's default browser (depending on a user setting). Along with the search ability, the page also shows the Bing image of the day, so that you can enjoy those scenic images in your favorite IDE. So, if you'd like to see this &lt;A href="http://visualstudiogallery.msdn.microsoft.com/en-us/40ea2d67-d5df-4abe-9aac-eb05074a71c0" mce_href="http://visualstudiogallery.msdn.microsoft.com/en-us/40ea2d67-d5df-4abe-9aac-eb05074a71c0"&gt;custom start page in action, you can install it from the VS Gallery&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/photos/pedrosilva/images/10007560/original.aspx" mce_href="http://blogs.msdn.com/photos/pedrosilva/images/10007560/original.aspx"&gt;&lt;IMG style="WIDTH: 640px; HEIGHT: 439px" title="Bing Custom StartPage" alt="Bing Custom StartPage" align=middle src="http://blogs.msdn.com/photos/pedrosilva/images/10007560/640x439.aspx" width=640 height=439 mce_src="http://blogs.msdn.com/photos/pedrosilva/images/10007560/640x439.aspx"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;I created this custom StartPage using the &lt;A href="http://visualstudiogallery.msdn.microsoft.com/en-us/f655a5dc-1a2d-4eca-b774-76c352c03b87" mce_href="http://visualstudiogallery.msdn.microsoft.com/en-us/f655a5dc-1a2d-4eca-b774-76c352c03b87"&gt;Custom Start Page Project&amp;nbsp;Template&lt;/A&gt; available on the VS Gallery. This project template lets you quickly set up a start page that is similar in functionality as the Start Page that ships with Visual Studio, along with a new tab for the custom content that you want to add. This allows you to create start pages that fit in well with the VS user interface. But, the start page is all XAML, so you can custom or completely rewrite the start page to look exactly how you wish.&lt;/P&gt;
&lt;P mce_keep="true"&gt;This topic on MSDN gives a good step-by-step process on &lt;A href="http://msdn.microsoft.com/en-us/library/ee663382(v=VS.100).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ee663382(v=VS.100).aspx"&gt;how to use the Custom Start Page Template&lt;/A&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Along the way while&amp;nbsp;working on this custom start page, I ran across some interesting topics (a couple that I previously blogged about and a good MSDN article):&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A href="http://blogs.msdn.com/pedrosilva/archive/2010/04/21/how-to-get-a-serviceprovider-from-the-vs-start-page.aspx" mce_href="http://blogs.msdn.com/pedrosilva/archive/2010/04/21/how-to-get-a-serviceprovider-from-the-vs-start-page.aspx"&gt;Get a ServiceProvider from the VS Start Page&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ff432842(v=VS.100).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ff432842(v=VS.100).aspx"&gt;Saving User Setting on a Start Page&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A href="http://blogs.msdn.com/pedrosilva/archive/2010/04/26/how-to-launch-a-url-in-the-visual-studio-internal-browser.aspx" mce_href="http://blogs.msdn.com/pedrosilva/archive/2010/04/26/how-to-launch-a-url-in-the-visual-studio-internal-browser.aspx"&gt;Launch a Url in the VS Internal Browser&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;Overall, using the template&amp;nbsp;makes it really easy to create a full featured start page, and&amp;nbsp;let's you concentrate on implementing&amp;nbsp;the custom functionality you want to surface and not on the infrastructure to get a start page up and running.&amp;nbsp;And, then your just developing a custom WPF control with XAML and code-behind, so it really straightforward. Also, the template automatically builds a .VSIX file for you. This is the new extension deployment framework in Visual Studio 2010, so you can take this .VSIX file and directly upload to the VS Gallery to share you custom start page with the world.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The one drawback of the custom start page deployment is that the new page doesn't automatically get set as your page. You need to go set it yourself. &lt;SPAN style="FONT-FAMILY: "&gt;The following steps describe how to switch from the default Start Page to the Bing Start Page.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 140%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 7.5pt 42pt; VERTICAL-ALIGN: top"&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;1.&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 140%; COLOR: black; FONT-SIZE: 9pt"&gt;&lt;SPAN style="FONT-FAMILY: Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;On the &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;Tools&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt; menu, click &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;Options&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 140%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 7.5pt 42pt; VERTICAL-ALIGN: top"&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;2.&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 140%; COLOR: black; FONT-SIZE: 9pt"&gt;&lt;SPAN style="FONT-FAMILY: Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;On the left side of the &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;Options&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt; dialog box, expand the &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;Environment&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt; node, and then click &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;Startup&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 140%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 7.5pt 42pt; VERTICAL-ALIGN: top"&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;3.&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 140%; COLOR: black; FONT-SIZE: 9pt"&gt;&lt;SPAN style="FONT-FAMILY: Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;In the &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;Customize&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;Start Page&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt; list, select ‘[Installed Extension] Bing Start Page’&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 140%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 7.5pt 42pt; VERTICAL-ALIGN: top"&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;4.&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 140%; COLOR: black; FONT-SIZE: 9pt"&gt;&lt;SPAN style="FONT-FAMILY: Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;Click &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;OK&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 140%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 7.5pt 42pt; VERTICAL-ALIGN: top"&gt;&lt;SPAN style="LINE-HEIGHT: 140%; FONT-FAMILY: "&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10007562" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/VSX/">VSX</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Visual+Studio+SDK/">Visual Studio SDK</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Extension/">Extension</category></item><item><title>Cool Extension: Power Commands for VS 2010</title><link>http://blogs.msdn.com/b/pedrosilva/archive/2010/05/04/cool-extension-power-commands-for-vs-2010.aspx</link><pubDate>Wed, 05 May 2010 05:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10007554</guid><dc:creator>Pedro Silva [Visual Studio]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/pedrosilva/rsscomments.aspx?WeblogPostID=10007554</wfw:commentRss><comments>http://blogs.msdn.com/b/pedrosilva/archive/2010/05/04/cool-extension-power-commands-for-vs-2010.aspx#comments</comments><description>&lt;P&gt;For all of you fans of the &lt;A href="http://visualstudiogallery.msdn.microsoft.com/en-us/e5f41ad9-4edc-4912-bca3-91147db95b99" mce_href="http://visualstudiogallery.msdn.microsoft.com/en-us/e5f41ad9-4edc-4912-bca3-91147db95b99"&gt;Power Commands&lt;/A&gt; extension, Lance, from our team, just updated this extension and posted it up on the VS Gallery. This &lt;A href="http://visualstudiogallery.msdn.microsoft.com/en-us/e5f41ad9-4edc-4912-bca3-91147db95b99" mce_href="http://visualstudiogallery.msdn.microsoft.com/en-us/e5f41ad9-4edc-4912-bca3-91147db95b99"&gt;topic&lt;/A&gt; contains a full list of all of the new commands that are part of this extension. But, the most interesting ones are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Collapse projects&lt;/LI&gt;
&lt;LI&gt;Open command prompt&lt;/LI&gt;
&lt;LI&gt;Remove and Sort Usings (recursively)&lt;/LI&gt;
&lt;LI&gt;Transform templates&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Install this extension, and try out some of the other cool commands. You can get this either from the VS Gallery or within Visual Studio 2010 in the Extension Manager (Tools &amp;gt; Extension Manager).&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10007554" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/VSX/">VSX</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Extension/">Extension</category></item><item><title>How To: Launch a URL in the Visual Studio Internal Browser</title><link>http://blogs.msdn.com/b/pedrosilva/archive/2010/04/26/how-to-launch-a-url-in-the-visual-studio-internal-browser.aspx</link><pubDate>Mon, 26 Apr 2010 15:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10002222</guid><dc:creator>Pedro Silva [Visual Studio]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/pedrosilva/rsscomments.aspx?WeblogPostID=10002222</wfw:commentRss><comments>http://blogs.msdn.com/b/pedrosilva/archive/2010/04/26/how-to-launch-a-url-in-the-visual-studio-internal-browser.aspx#comments</comments><description>&lt;P&gt;For the sample extension that I'm working on,&amp;nbsp;I wanted to have the ability to launch a URL in Visual Studio. This is useful for a more integrated experience in the IDE, but of course, some people may prefer to use their default web browser instead. So, I created a method that will either launch the internal or default web browser depending on a user setting (that way users can change to it to match their desired behavior).&lt;/P&gt;
&lt;P&gt;For the internal browser, we use the &lt;A href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivswebbrowsingservice.navigate.aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivswebbrowsingservice.navigate.aspx"&gt;IVsWebBrowsingService.Navigate&lt;/A&gt; method. By passing 0 to the dwNavigateFlags, the browsing service reuses an internal browser window if one already exists, or creates a new one if it does not. For the default browser, we call the Process.Start method with the appropriate flags so that it will behave like the managed equivalent of &lt;A href="http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx"&gt;ShellExecute&lt;/A&gt; on the URL. Here's the code I wrote for this:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="FONT-FAMILY: Consolas"&gt;&lt;PRE style="FONT-FAMILY: consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;const&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&amp;nbsp;verbOpen&amp;nbsp;=&amp;nbsp;&lt;SPAN style="COLOR: #a31515"&gt;"Open"&lt;/SPAN&gt;;&lt;BR&gt;&lt;/PRE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IVsWebBrowsingService&lt;/SPAN&gt;&amp;nbsp;browserService&amp;nbsp;=&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: gray"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: gray"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;///&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: green"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;&amp;nbsp;Get&amp;nbsp;the&amp;nbsp;IVsWebBrowserService&amp;nbsp;to&amp;nbsp;use&amp;nbsp;for&amp;nbsp;navigating&amp;nbsp;to&amp;nbsp;the&amp;nbsp;internal&amp;nbsp;browser.&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;BR&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IVsWebBrowsingService&lt;/SPAN&gt;&amp;nbsp;BrowserService&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;nbsp;&lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&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;nbsp;{&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;&amp;nbsp;(browserService&amp;nbsp;==&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;//&amp;nbsp;if&amp;nbsp;we&amp;nbsp;don't&amp;nbsp;already&amp;nbsp;have&amp;nbsp;the&amp;nbsp;internal&amp;nbsp;browser&amp;nbsp;service,&amp;nbsp;get&amp;nbsp;it&amp;nbsp;from&amp;nbsp;the&amp;nbsp;global&amp;nbsp;service&amp;nbsp;provider.&lt;/SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;browserService&amp;nbsp;=&amp;nbsp;ServiceProvider.GetService(&lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #2b91af"&gt;SVsWebBrowsingService&lt;/SPAN&gt;))&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;as&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IVsWebBrowsingService&lt;/SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt;&amp;nbsp;browserService;&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;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;PRE&gt;&lt;SPAN style="FONT-FAMILY: Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;&amp;nbsp;Gets&amp;nbsp;the&amp;nbsp;initialized&amp;nbsp;instance&amp;nbsp;of&amp;nbsp;ProcessStartInfo&amp;nbsp;for&amp;nbsp;a&amp;nbsp;ShellExecute&amp;nbsp;Open&amp;nbsp;command.&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;ProcessStartInfo&lt;/SPAN&gt;&amp;nbsp;StartInfo&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;nbsp;&lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&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;nbsp;{&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;&amp;nbsp;(startInfo&amp;nbsp;==&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;startInfo&amp;nbsp;=&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;ProcessStartInfo&lt;/SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;startInfo.UseShellExecute&amp;nbsp;=&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;startInfo.Verb&amp;nbsp;=&amp;nbsp;verbOpen;&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt;&amp;nbsp;startInfo;&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;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;&amp;nbsp;Launches&amp;nbsp;the&amp;nbsp;specified&amp;nbsp;Url&amp;nbsp;either&amp;nbsp;in&amp;nbsp;the&amp;nbsp;internal&amp;nbsp;VS&amp;nbsp;browser&amp;nbsp;or&amp;nbsp;the&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;&amp;nbsp;user's&amp;nbsp;default&amp;nbsp;web&amp;nbsp;browser.&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;param&amp;nbsp;name="browserService"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;VS's&amp;nbsp;browser&amp;nbsp;service&amp;nbsp;for&amp;nbsp;interacting&amp;nbsp;with&amp;nbsp;the&amp;nbsp;internal&amp;nbsp;browser.&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;param&amp;nbsp;name="launchUrl"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;Url&amp;nbsp;to&amp;nbsp;launch.&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;param&amp;nbsp;name="useInternalBrowser"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;true&amp;nbsp;to&amp;nbsp;use&amp;nbsp;the&amp;nbsp;internal&amp;nbsp;browser;&amp;nbsp;false&amp;nbsp;to&amp;nbsp;use&amp;nbsp;the&amp;nbsp;default&amp;nbsp;browser.&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;&amp;nbsp;LaunchWebBrowser(&lt;SPAN style="COLOR: #2b91af"&gt;IVsWebBrowsingService&lt;/SPAN&gt;&amp;nbsp;browserService,&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&amp;nbsp;launchUrl,&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt;&amp;nbsp;useInternalBrowser)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;nbsp;&lt;SPAN style="COLOR: blue"&gt;try&lt;/SPAN&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;nbsp;{&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;&amp;nbsp;(useInternalBrowser&amp;nbsp;==&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;//&amp;nbsp;if&amp;nbsp;set&amp;nbsp;to&amp;nbsp;use&amp;nbsp;internal&amp;nbsp;browser,&amp;nbsp;then&amp;nbsp;navigate&amp;nbsp;via&amp;nbsp;the&amp;nbsp;browser&amp;nbsp;service.&lt;/SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IVsWindowFrame&lt;/SPAN&gt;&amp;nbsp;ppFrame;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;//&amp;nbsp;passing&amp;nbsp;0&amp;nbsp;to&amp;nbsp;the&amp;nbsp;NavigateFlags&amp;nbsp;allows&amp;nbsp;the&amp;nbsp;browser&amp;nbsp;service&amp;nbsp;to&amp;nbsp;reuse&amp;nbsp;open&amp;nbsp;instances&lt;/SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;//&amp;nbsp;of&amp;nbsp;the&amp;nbsp;internal&amp;nbsp;browser.&lt;/SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;browserService.Navigate(launchUrl,&amp;nbsp;0,&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out&lt;/SPAN&gt;&amp;nbsp;ppFrame);&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;else&lt;/SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;//&amp;nbsp;if&amp;nbsp;not,&amp;nbsp;launch&amp;nbsp;the&amp;nbsp;user's&amp;nbsp;default&amp;nbsp;browser&amp;nbsp;by&amp;nbsp;starting&amp;nbsp;a&amp;nbsp;new&amp;nbsp;one.&lt;/SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;StartInfo.FileName&amp;nbsp;=&amp;nbsp;launchUrl;&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;Process&lt;/SPAN&gt;.Start(StartInfo);&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&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;nbsp;}&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;nbsp;&lt;SPAN style="COLOR: blue"&gt;catch&lt;/SPAN&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;nbsp;{&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;//&amp;nbsp;if&amp;nbsp;the&amp;nbsp;process&amp;nbsp;could&amp;nbsp;not&amp;nbsp;be&amp;nbsp;started,&amp;nbsp;show&amp;nbsp;an&amp;nbsp;error.&lt;/SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;MessageBox&lt;/SPAN&gt;.Show(&lt;SPAN style="COLOR: #a31515"&gt;"Cannot&amp;nbsp;launch&amp;nbsp;this&amp;nbsp;url."&lt;/SPAN&gt;,&amp;nbsp;&lt;SPAN style="COLOR: #a31515"&gt;"Extension&amp;nbsp;Error"&lt;/SPAN&gt;,&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;MessageBoxButton&lt;/SPAN&gt;.OK,&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;MessageBoxImage&lt;/SPAN&gt;.Error);&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;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;The code above gets the IVsWebBrowsingService by querying a service provider. You can get a service provider in your extension by various methods: for typical extension look in &lt;A href="http://msdn.microsoft.com/en-us/library/bb165439(v=VS.100).aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb165439(v=VS.100).aspx"&gt;this MSDN article&lt;/A&gt;; or if doing it from a StartPage, read my &lt;A href="http://blogs.msdn.com/pedrosilva/archive/2010/04/21/how-to-get-a-serviceprovider-from-the-vs-start-page.aspx" mce_href="http://blogs.msdn.com/pedrosilva/archive/2010/04/21/how-to-get-a-serviceprovider-from-the-vs-start-page.aspx"&gt;previous article on that subject&lt;/A&gt;.&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; If you look at the IVsWebBrowsingService interface, you will notice it defines a &lt;A href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivswebbrowsingservice.createexternalwebbrowser(v=VS.100).aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivswebbrowsingservice.createexternalwebbrowser(v=VS.100).aspx"&gt;CreateExternalWebBrowser&lt;/A&gt; method. I first thought I would use this method, since it was defined on this service. However, when I tried to call it, this method returned E_NOTIMPL. It appears this implementation has been removed, but calling ShellExecute on a URL is easy enough to do.&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10002222" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/VSX/">VSX</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Visual+Studio+SDK/">Visual Studio SDK</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Visual+Studio/">Visual Studio</category></item><item><title>How To: Get a ServiceProvider from the VS Start Page</title><link>http://blogs.msdn.com/b/pedrosilva/archive/2010/04/21/how-to-get-a-serviceprovider-from-the-vs-start-page.aspx</link><pubDate>Wed, 21 Apr 2010 21:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9999781</guid><dc:creator>Pedro Silva [Visual Studio]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/pedrosilva/rsscomments.aspx?WeblogPostID=9999781</wfw:commentRss><comments>http://blogs.msdn.com/b/pedrosilva/archive/2010/04/21/how-to-get-a-serviceprovider-from-the-vs-start-page.aspx#comments</comments><description>&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;When working with Visual Studio extensibility, getting a ServiceProvider is the main way to find and use services that are available in Visual Studio. The new VS Start Page is written in WPF and getting to a ServiceProvider from within the page or one of its child controls is not easily found. There is a fairly good topic on this in MSDN: &lt;A href="http://msdn.microsoft.com/en-us/library/ff432842(v=VS.100).aspx"&gt;&lt;FONT color=#0000ff&gt;http://msdn.microsoft.com/en-us/library/ff432842(v=VS.100).aspx&lt;/FONT&gt;&lt;/A&gt;, though the nugget about getting to the ServiceProvider is a little lost in the full article. So, I decided to pull it out into a post here to make it easier to find this useful snippet.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;First, use the &lt;A href="http://visualstudiogallery.msdn.microsoft.com/en-us/f655a5dc-1a2d-4eca-b774-76c352c03b87" mce_href="http://visualstudiogallery.msdn.microsoft.com/en-us/f655a5dc-1a2d-4eca-b774-76c352c03b87"&gt;Custom StartPage template&lt;/A&gt; to create a new project to work with (this topic explains how to use that &lt;A href="http://msdn.microsoft.com/en-us/library/ee663382(v=VS.100).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ee663382(v=VS.100).aspx"&gt;&lt;FONT color=#0000ff&gt;template&lt;/FONT&gt;&lt;/A&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Then, in the code file for your UserControl, you can add the following code as a property of the control class:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DTE2&lt;/SPAN&gt; dte = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IServiceProvider&lt;/SPAN&gt; serviceProvider = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; Gets the StartPage's DTE object from its DataContext.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DTE2&lt;/SPAN&gt; DTE&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (dte == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// if we don't already have the ServiceProvider, get it from the page's DataContext.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;ICustomTypeDescriptor&lt;/SPAN&gt; typeDescriptor = DataContext &lt;SPAN style="COLOR: blue"&gt;as&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;ICustomTypeDescriptor&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;PropertyDescriptorCollection&lt;/SPAN&gt; propertyCollection = typeDescriptor.GetProperties();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// first get the DTE object from the DataContext.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;dte = propertyCollection.Find(&lt;SPAN style="COLOR: #a31515"&gt;"DTE"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;).GetValue(DataContext) &lt;SPAN style="COLOR: blue"&gt;as&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DTE2&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; dte;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; Gets the StartPage's ServiceProvider for use in our custom control.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IServiceProvider&lt;/SPAN&gt; ServiceProvider&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (serviceProvider == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// get and then cast the DTE object to a ServiceProvider.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;serviceProvider = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;ServiceProvider&lt;/SPAN&gt;((Microsoft.VisualStudio.OLE.Interop.&lt;SPAN style="COLOR: #2b91af"&gt;IServiceProvider&lt;/SPAN&gt;)DTE);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; serviceProvider;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Note: this code requires you to include the following namespaces in your source file: EnvDTE80, Microsoft.VisualStudio.Shell, Microsoft.VisualStudio.Shell.Interop, and System.ComponentModel.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Now that you have this method to get at the ServiceProvider from your custom StartPage, you can use it to get &lt;A href="http://msdn.microsoft.com/en-us/library/bb165789(v=VS.100).aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb165789(v=VS.100).aspx"&gt;&lt;FONT color=#0000ff&gt;any of the services provided by Visual Studio&lt;/FONT&gt;&lt;/A&gt; and integrate them into your page.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9999781" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/VSX/">VSX</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Visual+Studio+SDK/">Visual Studio SDK</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Visual+Studio/">Visual Studio</category></item><item><title>Cool Extension: Custom Start Page Template</title><link>http://blogs.msdn.com/b/pedrosilva/archive/2010/04/19/cool-extension-custom-start-page-template.aspx</link><pubDate>Mon, 19 Apr 2010 20:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9998714</guid><dc:creator>Pedro Silva [Visual Studio]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/pedrosilva/rsscomments.aspx?WeblogPostID=9998714</wfw:commentRss><comments>http://blogs.msdn.com/b/pedrosilva/archive/2010/04/19/cool-extension-custom-start-page-template.aspx#comments</comments><description>&lt;P&gt;For those that have seen &lt;A href="http://msdn.microsoft.com/vsx" mce_href="http://msdn.microsoft.com/vsx"&gt;Visual Studio 2010&lt;/A&gt;, there is a fancy new start page that is much more functional and integrated with the product. Part of this new Start Page infrastructure is the ability to replace the one from the product with a custom page. And, this extension gives you the tools to start creating and sharing your own custom Start Pages.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I was just trying out the &lt;A href="http://visualstudiogallery.msdn.microsoft.com/en-us/f655a5dc-1a2d-4eca-b774-76c352c03b87" mce_href="http://visualstudiogallery.msdn.microsoft.com/en-us/f655a5dc-1a2d-4eca-b774-76c352c03b87"&gt;Custom Start Page template&lt;/A&gt; that Greg from our team posted up on the &lt;A href="http://visualstudiogallery.msdn.microsoft.com/" mce_href="http://visualstudiogallery.msdn.microsoft.com/"&gt;Visual Studio Gallery&lt;/A&gt;. So far, so good... I was able to create a new start page that looks similar to the one in Visual Studio but added a small bit of functionality (an additional tab). The template is fairly self-explanatory and has a good F5 experience for building and debugging the custom Start Page in an experimental instance of VS. Also, the project builds into a VSIX file that can be uploaded to the VS Gallery to easily share with others.&lt;/P&gt;
&lt;P&gt;I'll post my start page changes when I get it wrapped up a little more.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9998714" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/VSX/">VSX</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/pedrosilva/archive/tags/Extension/">Extension</category></item></channel></rss>