<?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>Office Development with Visual Studio</title><link>http://blogs.msdn.com/vsto/default.aspx</link><description>Develop Office Business Applications using Visual Studio &lt;br /&gt;&lt;font size="2"&gt;
&lt;a href="http://msdn.com/vsto"&gt;Developer Center&lt;/a&gt; | &lt;a href="http://msdn.microsoft.com/en-us/vsto/dd164303.aspx"&gt;How-Do-I Videos&lt;/a&gt; | &lt;a href="http://channel9.msdn.com/tags/VSTO"&gt;Interviews, Video Tips &amp; Screencasts&lt;/a&gt; | &lt;a href="http://msdn.microsoft.com/en-us/vsto/dd164319.aspx"&gt;Downloads&lt;/a&gt;&lt;/font&gt;</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Add a Custom Task Pane to Project 2010 (Norm Estabrook)</title><link>http://blogs.msdn.com/vsto/archive/2010/02/02/add-a-custom-task-pane-to-project-2010-norm-estabrook.aspx</link><pubDate>Tue, 02 Feb 2010 21:21:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9957201</guid><dc:creator>VSTO Team</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9957201.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9957201</wfw:commentRss><description>&lt;p&gt;Good news! Project 2010 supports custom task panes! Bad News! Getting one to appear in a Project 2010 is not so obvious. Good News! It’s a lot easier than I make it sound. &lt;/p&gt;  &lt;p&gt;In this post, I’ll show you how to add a custom task pane to Project 2010 by using a Project 2010 &lt;u&gt;or&lt;/u&gt; Project 2007 project template in Visual Studio. &lt;/p&gt;  &lt;h5&gt;The “skinny” on task panes in Microsoft Office Project&lt;/h5&gt;  &lt;p&gt;Project 2007 &lt;u&gt;does not&lt;/u&gt; support custom task panes. Project 2010 &lt;u&gt;does&lt;/u&gt; support custom task panes. The thing that might throw you off is that the Project 2010 project template in Visual Studio &lt;u&gt;does not&lt;/u&gt; expose that cool &lt;font color="#000080" size="2" face="Courier New"&gt;CustomTaskPanes&lt;/font&gt; field. You know, that field that enables you to access a &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.tools.customtaskpanecollection(VS.100).aspx"&gt;CustomTaskPaneCollection&lt;/a&gt; object by typing &lt;font color="#000080" size="2" face="Courier New"&gt;this.CustomTaskPanes&lt;/font&gt; or &lt;font color="#000080" size="2" face="Courier New"&gt;Me.CustomTaskPanes?&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;No worries. We can just create a &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.tools.customtaskpanecollection(VS.100).aspx"&gt;CustomTaskPaneCollection&lt;/a&gt; object ourselves. The exact code that you use to accomplish that depends on the .NET Framework version that your project targets. &lt;/p&gt;  &lt;p&gt;For now, add a &lt;strong&gt;User Control&lt;/strong&gt; item to your project. This provides the design surface for your custom task pane. Next, identify which version of the .NET Framework you are targeting. If you created a brand new Project 2010 project, then odds favor that your project targets the .NET Framework 4.&amp;#160; However, it never hurts to check. Here is a helpful topic that shows you how to examine that little piece of info -&amp;#160; &lt;a href="http://msdn.microsoft.com/en-us/library/bb398202(VS.100).aspx"&gt;How to: Target a Specific .NET Framework Version or Profile&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;After you do all of that, add this code:&lt;/p&gt;  &lt;h5&gt;For projects that target the .NET Framework 4:&lt;/h5&gt;  &lt;p&gt;&lt;font color="#808000"&gt;[VB]&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;    &lt;span style="color: blue"&gt;Private &lt;/span&gt;myUserControl1 &lt;span style="color: blue"&gt;As &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyUserControl
    &lt;/span&gt;&lt;span style="color: blue"&gt;Private &lt;/span&gt;myCustomTaskPane &lt;span style="color: blue"&gt;As &lt;/span&gt;Microsoft.Office.Tools.CustomTaskPane
    &lt;span style="color: blue"&gt;Private &lt;/span&gt;myCustomTaskPaneCollection &lt;span style="color: blue"&gt;As &lt;/span&gt;Microsoft.Office.Tools.&lt;span style="color: #2b91af"&gt;CustomTaskPaneCollection

    &lt;/span&gt;&lt;span style="color: blue"&gt;Private Sub &lt;/span&gt;ThisAddIn_Startup() &lt;span style="color: blue"&gt;Handles Me&lt;/span&gt;.Startup
        myUserControl1 = &lt;span style="color: blue"&gt;New &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyUserControl
        &lt;/span&gt;myCustomTaskPaneCollection = &lt;span style="color: #2b91af"&gt;Globals&lt;/span&gt;.Factory.CreateCustomTaskPaneCollection _
        (&lt;span style="color: blue"&gt;Nothing&lt;/span&gt;, &lt;span style="color: blue"&gt;Nothing&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;CustomTaskPanes&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;CustomTaskPanes&amp;quot;&lt;/span&gt;, &lt;span style="color: blue"&gt;Me&lt;/span&gt;)
        myCustomTaskPane = myCustomTaskPaneCollection.Add(myUserControl1, &lt;span style="color: #a31515"&gt;&amp;quot;My Task Pane&amp;quot;&lt;/span&gt;)
        myCustomTaskPane.Visible = &lt;span style="color: blue"&gt;True
    End Sub

    Private Sub &lt;/span&gt;ThisAddIn_Shutdown() &lt;span style="color: blue"&gt;Handles Me&lt;/span&gt;.Shutdown
        myCustomTaskPaneCollection.Dispose()
    &lt;span style="color: blue"&gt;End Sub
&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;font color="#808000"&gt;[C#]&lt;/font&gt;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;    private &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyUserControl &lt;/span&gt;myUserControl1;
&lt;span style="color: blue"&gt;    private &lt;/span&gt;Microsoft.Office.Tools.&lt;span style="color: #2b91af"&gt;CustomTaskPane &lt;/span&gt;myCustomTaskPane;
&lt;span style="color: blue"&gt;    private &lt;/span&gt;Microsoft.Office.Tools.&lt;span style="color: #2b91af"&gt;CustomTaskPaneCollection &lt;/span&gt;myCustomTaskPaneCollection;

&lt;span style="color: blue"&gt;    private void &lt;/span&gt;ThisAddIn_Startup(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, System.&lt;span style="color: #2b91af"&gt;EventArgs &lt;/span&gt;e)
    {
        myUserControl1 = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyUserControl&lt;/span&gt;();
        myCustomTaskPaneCollection =
            &lt;span style="color: #2b91af"&gt;Globals&lt;/span&gt;.Factory.CreateCustomTaskPaneCollection
            (&lt;span style="color: blue"&gt;null&lt;/span&gt;, &lt;span style="color: blue"&gt;null&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;CustomTaskPanes&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;CustomTaskPanes&amp;quot;&lt;/span&gt;, &lt;span style="color: blue"&gt;this&lt;/span&gt;);

        myCustomTaskPane = myCustomTaskPaneCollection.Add(myUserControl1, &lt;span style="color: #a31515"&gt;&amp;quot;My Task Pane&amp;quot;&lt;/span&gt;);
        myCustomTaskPane.Visible = &lt;span style="color: blue"&gt;true&lt;/span&gt;;

    }

&lt;span style="color: blue"&gt;    private void &lt;/span&gt;ThisAddIn_Shutdown(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, System.&lt;span style="color: #2b91af"&gt;EventArgs &lt;/span&gt;e)
    {
        myCustomTaskPaneCollection.Dispose();
    }&lt;/pre&gt;

&lt;h5&gt;For projects that target the .NET Framework 3.5:&lt;/h5&gt;

&lt;p&gt;&lt;font color="#808000"&gt;[VB]&lt;/font&gt;&lt;/p&gt;

&lt;pre class="code"&gt;    &lt;span style="color: blue"&gt;Private &lt;/span&gt;myUserControl1 &lt;span style="color: blue"&gt;As &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyUserControl
    &lt;/span&gt;&lt;span style="color: blue"&gt;Private &lt;/span&gt;myCustomTaskPane &lt;span style="color: blue"&gt;As &lt;/span&gt;Microsoft.Office.Tools.&lt;span style="color: #2b91af"&gt;CustomTaskPane
    &lt;/span&gt;&lt;span style="color: blue"&gt;Private &lt;/span&gt;myCustomTaskPaneCollection &lt;span style="color: blue"&gt;As &lt;/span&gt;Microsoft.Office.Tools.&lt;span style="color: #2b91af"&gt;CustomTaskPaneCollection

    &lt;/span&gt;&lt;span style="color: blue"&gt;Private Sub &lt;/span&gt;ThisAddIn_Startup() &lt;span style="color: blue"&gt;Handles Me&lt;/span&gt;.Startup
        myUserControl1 = &lt;span style="color: blue"&gt;New &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyUserControl
        &lt;/span&gt;myCustomTaskPaneCollection = &lt;span style="color: blue"&gt;New &lt;/span&gt;Microsoft.Office.Tools.&lt;span style="color: #2b91af"&gt;CustomTaskPaneCollection &lt;/span&gt;_
            (&lt;span style="color: blue"&gt;Me&lt;/span&gt;.ItemProvider, &lt;span style="color: blue"&gt;Me&lt;/span&gt;.HostContext, &lt;span style="color: #a31515"&gt;&amp;quot;MyTaskPane&amp;quot;&lt;/span&gt;, &lt;span style="color: blue"&gt;Me&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;MyTaskPane&amp;quot;&lt;/span&gt;)
        myCustomTaskPane = myCustomTaskPaneCollection.Add(myUserControl1, &lt;span style="color: #a31515"&gt;&amp;quot;My Task Pane&amp;quot;&lt;/span&gt;)
        myCustomTaskPane.Visible = &lt;span style="color: blue"&gt;True
    End Sub

    Private Sub &lt;/span&gt;ThisAddIn_Shutdown() &lt;span style="color: blue"&gt;Handles Me&lt;/span&gt;.Shutdown
        myCustomTaskPaneCollection.Dispose()
    &lt;span style="color: blue"&gt;End Sub
&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;font color="#808000"&gt;[C#]&lt;/font&gt;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;    private &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyUserControl &lt;/span&gt;myUserControl1;
&lt;span style="color: blue"&gt;    private &lt;/span&gt;Microsoft.Office.Tools.&lt;span style="color: #2b91af"&gt;CustomTaskPane &lt;/span&gt;myCustomTaskPane;
&lt;span style="color: blue"&gt;    private &lt;/span&gt;Microsoft.Office.Tools.&lt;span style="color: #2b91af"&gt;CustomTaskPaneCollection &lt;/span&gt;myCustomTaskPaneCollection;

&lt;span style="color: blue"&gt;    private void &lt;/span&gt;ThisAddIn_Startup(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, System.&lt;span style="color: #2b91af"&gt;EventArgs &lt;/span&gt;e)
    {
        myUserControl1 = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyUserControl&lt;/span&gt;();
        myCustomTaskPaneCollection = &lt;span style="color: blue"&gt;new &lt;/span&gt;Microsoft.Office.Tools.&lt;span style="color: #2b91af"&gt;CustomTaskPaneCollection
                &lt;/span&gt;(&lt;span style="color: blue"&gt;this&lt;/span&gt;.ItemProvider, &lt;span style="color: blue"&gt;this&lt;/span&gt;.HostContext, &lt;span style="color: #a31515"&gt;&amp;quot;MyTaskPane&amp;quot;&lt;/span&gt;, &lt;span style="color: blue"&gt;this&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;MyTaskPane&amp;quot;&lt;/span&gt;);

        myCustomTaskPane = myCustomTaskPaneCollection.Add(myUserControl1, &lt;span style="color: #a31515"&gt;&amp;quot;My Task Pane&amp;quot;&lt;/span&gt;);
        myCustomTaskPane.Visible = &lt;span style="color: blue"&gt;true&lt;/span&gt;;
    }

&lt;span style="color: blue"&gt;    private void &lt;/span&gt;ThisAddIn_Shutdown(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, System.&lt;span style="color: #2b91af"&gt;EventArgs &lt;/span&gt;e)
    {
        myCustomTaskPaneCollection.Dispose();
    }&lt;/pre&gt;

&lt;h4&gt;&lt;strong&gt;Want to Use a Project 2007 project? No problem. Check this out.&lt;/strong&gt;&lt;/h4&gt;

&lt;p&gt;So what if you are using Visual Studio 2008 and you do not have a Project 2010 project template?&amp;#160; No problem. Project 2010 can host a Project 2007 add-in. All you have to do is configure your project settings to open the Project 2010 executable on start up. The name of that executable file is WINPROJ.exe.&lt;/p&gt;

&lt;p&gt;Right click your project node in &lt;strong&gt;Solution Explorer&lt;/strong&gt;, click &lt;strong&gt;Properties&lt;/strong&gt;, click the the &lt;strong&gt;Debug&lt;/strong&gt; tab, and point away! Here is a screenshot of how I did it. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/6aa8fef7ab47_96F4/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/6aa8fef7ab47_96F4/image_thumb.png" width="523" height="155" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Norm E.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9957201" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Norm+Estabrook/default.aspx">Norm Estabrook</category><category domain="http://blogs.msdn.com/vsto/archive/tags/add-ins/default.aspx">add-ins</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+Development/default.aspx">Office Development</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+14/default.aspx">Office 14</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+2010/default.aspx">Office 2010</category></item><item><title>VSTO 2010 Runtime components explained (Aaron Cathcart)</title><link>http://blogs.msdn.com/vsto/archive/2010/01/21/vsto-2010-runtime-components-explained-aaron-cathcart.aspx</link><pubDate>Fri, 22 Jan 2010 01:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9951763</guid><dc:creator>VSTO Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9951763.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9951763</wfw:commentRss><description>&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;During development of the VSTO 2010 Runtime we added a feature, dubbed &lt;B&gt;Install on Demand&lt;/B&gt;, to support VSTO customizations that target both .NET Framework 3.5 and .NET Framework 4 without enforcing installation of both frameworks prior to installation of VSTO 2010. To facilitate this we needed to break the runtime into 3 components as shown in this diagram.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Picture4_4.png" mce_href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Picture4_4.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=Picture4 border=0 alt=Picture4 src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Picture4_thumb_1.png" width=557 height=278 mce_src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Picture4_thumb_1.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;VSTO Loader can be viewed as the native component of the VSTO 2010 Runtime that communicates with Office. It has no managed dependency and is the only component of the VSTO 2010 Runtime that is guaranteed to be “turned on” no matter how the runtime is installed (the different installation scenarios are discussed below). The extensions (Office 3.5 Runtime Extensions and Office 4.0 Runtime Extensions), shown above VSTO Loader, are the components necessary to execute customizations that target the corresponding version of the .Net Framework. The red arrows indicate which .Net Framework version the extensions depend on. &lt;/P&gt;
&lt;P&gt;To better understand how the new &lt;B&gt;Install on Demand&lt;/B&gt; functionality will affect you and your end users I will explain the impact from the 3 distinct scenarios with which the VSTO 2010 Runtime can be installed.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Visual Studio 2010 &lt;/LI&gt;
&lt;LI&gt;Office 2010 &lt;/LI&gt;
&lt;LI&gt;VSTO 2010 Runtime redistributable &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Because of these different scenarios we could not assume (or enforce a prerequisite) that any particular version of the .NET Framework was installed on an end users machine at the time they install the VSTO 2010 Runtime. To make this clear, imagine you are deploying a customization that targets .Net Framework 3.5 to a customer who has not yet moved to .Net Framework 4. If we were to unconditionally install all 3 components in the diagram above we would be forced to prereq the .Net Framework 4 which would mean your customer would have to install .Net Framework 4 even though your customization would not require it. Similarly, if you were deploying a customization that targets .Net Framework 4 to a customer that has .Net Framework 4 and no .Net Framework 3.5 we would have to prereq .Net Framework 3.5. What we did was to allow the extensions to only be “turned on” once the version of the .NET Framework that they depend on was present. As a result of the &lt;B&gt;Install on Demand&lt;/B&gt; design we have made it more flexible for developers and end users to install the VSTO 2010 Runtime "once" and forget about it. No manual configuration of VSTO is required after installing a version of the .Net Framework that “lights up” either of the extensions.&lt;/P&gt;
&lt;H3&gt;Visual Studio 2010&lt;/H3&gt;
&lt;P&gt;VSTO 2010 Runtime, as it has been in past Visual Studio releases, is chained in with the Visual Studio 2010 installation. Developers who install Visual Studio 2010 on a machine without .NET Framework 3.5 will have the Office 4.0 Runtime Extensions “turned on” and the Office 3.5 Runtime Extensions “turned off” (but ready to be “turned on” when applicable) as is shown here.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Picture3_2.png" mce_href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Picture3_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=Picture3 border=0 alt=Picture3 src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Picture3_thumb.png" width=425 height=298 mce_src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Picture3_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;If the developer decides to start creating .Net Framework 3.5 customizations they are going to need to install the .NET Framework 3.5. After the .Net Framework 3.5 installation when the developer launches Visual Studio 2010 they will be able to target .NET Framework 3.5. However, the VSTO 2010 Runtime still does not have the Office 3.5 Runtime Extensions “turned on”. No worries, this will be taken care of for the developer the first time they create a VSTO project that targets .Net Framework 3.5. During this initial project creation you will notice an MSI configuration dialog appear.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Untitled_2.png" mce_href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Untitled_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=Untitled border=0 alt=Untitled src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Untitled_thumb.png" width=366 height=140 mce_src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Untitled_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;When the project is successfully created the VSTO 2010 Runtime will have installed the Office 3.5 Runtime Extensions which will transition the runtime into the following state allowing the project to be F5’d.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Picture2_2.png" mce_href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Picture2_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=Picture2 border=0 alt=Picture2 src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Picture2_thumb.png" width=499 height=290 mce_src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Picture2_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;If .NET Framework 3.5 was on the box prior to the Visual Studio 2010 installation then the runtime will be installed in its entirety (both Office 3.5 and Office 4.0 Runtime Extensions “turned on”) and no &lt;B&gt;Install on Demand&lt;/B&gt; will take place from that point on.&amp;nbsp; &lt;/P&gt;
&lt;H3&gt;Office 2010&lt;/H3&gt;
&lt;P&gt;If you weren’t already aware, VSTO 2010 will be included in the Office 2010 installation. This is great news for end users who will not have to install the VSTO 2010 Runtime redistributable to execute customizations that target .Net Framework 3.5. Note that in the Beta and RTM releases of Office 2010 you will NOT get Office 4.0 Runtime Extensions (or the capability for them to be “turned on”). If you are deploying customizations that target .Net Framework 4 and they will run on Office 2010 you will need your users to install the VSTO 2010 Runtime redistributable (and of course before their customization will run they will have to install .Net Framework 4). &lt;/P&gt;
&lt;P&gt;End users who install Office 2010 will receive the VSTO runtime and the Office 3.5 Runtime Extensions “turn on” capability. That is, if .NET Framework 3.5 is on the machine then these extensions will be installed and “turned on” otherwise they will be ready to "turn on”. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Picture1_2.png" mce_href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Picture1_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=Picture1 border=0 alt=Picture1 src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Picture1_thumb.png" width=500 height=324 mce_src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTO2010RuntimecomponentsexplainedAaronC_F55E/Picture1_thumb.png"&gt;&lt;/A&gt; &lt;A title=_GoBack name=_GoBack&gt;&lt;/A&gt;&lt;/P&gt;
&lt;H3&gt;VSTO 2010 Runtime redistributable&lt;/H3&gt;
&lt;P&gt;End users who install the redistributable, either through the bootstrapper (setup.exe) or the download center, will receive both extensions and be able to run customizations that target both .Net Framework 3.5 and 4. No matter how the machine is configured, at the time the redistributable is installed, all deployed solutions will be able to run as long as the appropriate target .Net Framework version is present. Note that this is not limited to ClickOnce deployment, custom MSI deployment will also work this way. For customizations deployed via ClickOnce the “turning on” of extensions will occur during the installation process and for MSI deployment on first load of the customization. In both these cases users will see the MSI configuration dialog (shown in the image above) briefly.&lt;/P&gt;
&lt;P&gt;In conclusion, &lt;B&gt;Install on Demand&lt;/B&gt; coupled with the VSTO 2010 Runtime shipping with Office 2010 simplifies many deployment scenarios. End users of Office 2010 customizations that target .Net Framework 3.5 will never need to manually install the VSTO 2010 Runtime nor know of its existence. Those still using Office2007 or Office 2010 with .Net Framework 4 will have the flexibility to install the VSTO 2010 Runtime without worrying if they have the correct .Net Framework down before doing so. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9951763" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/runtime/default.aspx">runtime</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Aaron+Cathcart/default.aspx">Aaron Cathcart</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+2010/default.aspx">Office 2010</category></item><item><title>Northwind Office Business Application Updated for Visual Studio, Office &amp; SharePoint 2010 (Beth Massi)</title><link>http://blogs.msdn.com/vsto/archive/2010/01/19/northwind-office-business-application-updated-for-visual-studio-office-sharepoint-2010-beth-massi.aspx</link><pubDate>Wed, 20 Jan 2010 04:29:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9950654</guid><dc:creator>VSTO Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9950654.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9950654</wfw:commentRss><description>&lt;p&gt;Early last year we built a &lt;a href="http://code.msdn.microsoft.com/OBANorthwind"&gt;business application for order management for Northwind Traders&lt;/a&gt; on the Office and SharePoint platform using Visual Studio 2008 and Office &amp;amp; SharePoint 2007. Recently I started releasing articles &lt;a href="http://blogs.msdn.com/bethmassi" target="_blank"&gt;on my blog&lt;/a&gt; that show how to upgrade the VS2008 version to VS2010:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/bethmassi/archive/2009/12/15/migrating-an-outlook-client-to-net-framework-4-in-visual-studio-2010.aspx"&gt;Migrating an Outlook Client to .NET Framework 4 in Visual Studio 2010&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/bethmassi/archive/2009/12/21/build-wpf-data-controls-for-outlook-addins-easily-with-vs2010.aspx"&gt;Build WPF Data Controls for Outlook Addins Easily with VS2010&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/bethmassi/archive/2010/01/15/migrating-a-2007-workflow-to-visual-studio-sharepoint-2010.aspx"&gt;Migrating a 2007 Workflow to Visual Studio &amp;amp; SharePoint 2010&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Today I &lt;a href="http://code.msdn.microsoft.com/OBANorthwind"&gt;updated the sample&lt;/a&gt; with some more goodies including some SharePoint 2010 web parts that I’ll write about soon. But I wanted to let you know sooner rather than later that you can play with all of the code today. &lt;/p&gt;  &lt;p&gt;Here ya go: &lt;a title="http://code.msdn.microsoft.com/OBANorthwind" href="http://code.msdn.microsoft.com/OBANorthwind"&gt;&lt;strong&gt;http://code.msdn.microsoft.com/OBANorthwind&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This sample was built using Visual Studio 2010 Beta 2, Office 2010 Beta &amp;amp; SharePoint 2010 Beta and it demonstrates:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;A way to easily expose line-of-business (LOB) data using WCF Data Services (formerly known as ADO.NET Data Services) &lt;/li&gt;    &lt;li&gt;An Outlook 2010 Add-in that displays LOB data in a WPF control that I built in 5 minutes using the new drag-drop data binding and designer features &lt;/li&gt;    &lt;li&gt;How to store and retrieve structured data from Word 2010 documents &lt;/li&gt;    &lt;li&gt;An Excel 2010 document customization that edits LOB data through the data service and provides data visualization &lt;/li&gt;    &lt;li&gt;A SharePoint 2010 Document Library Workflow that adds Order info to the database by reading word documents and updates and reports order statuses based on changes in the database using the data service &lt;/li&gt;    &lt;li&gt;A SharePoint 2010 Visual Web Part that reports low inventory in the database using the data service and allows users to add tasks &lt;/li&gt;    &lt;li&gt;A SharePoint 2010 Silverlight Web Part that demonstrates how to deploy Silverlight web parts to SharePoint 2010 and use the SharePoint Silverlight client library to add tasks &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Enjoy,   &lt;br /&gt;-&lt;a href="http://blogs.msdn.com/bethmassi" target="_blank"&gt;Beth Massi&lt;/a&gt;, Visual Studio Community&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9950654" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/vsto/archive/tags/sample/default.aspx">sample</category><category domain="http://blogs.msdn.com/vsto/archive/tags/OBA/default.aspx">OBA</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Beth+Massi/default.aspx">Beth Massi</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+2010/default.aspx">Office 2010</category><category domain="http://blogs.msdn.com/vsto/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category></item><item><title>VSTO Performance: Delay Loading and You (Stephen Peters)</title><link>http://blogs.msdn.com/vsto/archive/2010/01/07/vsto-performance-delay-loading-and-you.aspx</link><pubDate>Thu, 07 Jan 2010 19:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9945334</guid><dc:creator>VSTO Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9945334.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9945334</wfw:commentRss><description>&lt;P&gt;There have been a couple of blog posts about delay loading VSTO addins, and with Dev10 being released soon, it’s a good time to expand on the subject a little bit.&lt;/P&gt;
&lt;P&gt;This has been covered before, and I’ll avoid spending too much time here on topics that have already been covered.&amp;nbsp; For an overview of delay loading, please read these posts.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/andreww/archive/2008/07/14/demand-loading-vsto-add-ins.aspx" mce_href="http://blogs.msdn.com/andreww/archive/2008/07/14/demand-loading-vsto-add-ins.aspx"&gt;http://blogs.msdn.com/andreww/archive/2008/07/14/demand-loading-vsto-add-ins.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/andreww/archive/2008/04/19/delay-loading-the-clr-in-office-add-ins.aspx" mce_href="http://blogs.msdn.com/andreww/archive/2008/04/19/delay-loading-the-clr-in-office-add-ins.aspx"&gt;http://blogs.msdn.com/andreww/archive/2008/04/19/delay-loading-the-clr-in-office-add-ins.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;There are many reasons why you would want to delay load your addin, the most important of which is for performance – loading the CLR can easily double the amount of time that it takes to load an Office application. If your addin is only used occasionally, your users will appreciate the faster load times.&lt;/P&gt;
&lt;P&gt;One important improvement that has gone into Dev10 is that you no longer need to manually change the LoadBehavior in the registry for your addin to make it DelayLoad. If you go into project properties of your addin, click on the “Publish” tab, and go into “Options…”, you can adjust the Add-in Load Behavior under “Office Settings”.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTOPerformanceDelayLoadingandYou_9A38/clip_image002_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTOPerformanceDelayLoadingandYou_9A38/clip_image002_2.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image002 border=0 alt=clip_image002 src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTOPerformanceDelayLoadingandYou_9A38/clip_image002_thumb.jpg" width=595 height=336 mce_src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VSTOPerformanceDelayLoadingandYou_9A38/clip_image002_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;For more information about publishing, please see &lt;A href="http://msdn.microsoft.com/en-us/library/bb608591(VS.100).aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb608591(VS.100).aspx"&gt;Publishing VSTO Solutions&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Now, once you have done this, your addin will not be loaded until Office decides that it needs to load the addin. This can happen a number of ways, but the most common is that a user action (like clicking on a ribbon button) calls into the addin, and causes the addin to be loaded.&lt;/P&gt;
&lt;P&gt;One important note is that any custom “get” handler (getEnabled, getVisible, getLabel) will not trigger the loading of your addin. The first time that your addin is loaded, Office will call the handler and cache the response given, and use that response as the default.&amp;nbsp; It will then call the handler again to use in the current session.&amp;nbsp; This is important because if the control is disabled initially, and then later enabled via a call to RibbonUI.Invalidate or RibbonUI.InvalidateControl, it will only invalidate this second value and not the first value.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Consider the following example where a database connection is necessary for the addin to function:&lt;/P&gt;
&lt;P&gt;XML:&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;group &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;MyGroup&lt;/SPAN&gt;"
       &lt;SPAN style="COLOR: red"&gt;label&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Database controls&lt;/SPAN&gt;"  &lt;SPAN style="COLOR: blue"&gt;&amp;gt;
    &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;button &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Button1&lt;/SPAN&gt;" &lt;SPAN style="COLOR: red"&gt;label&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Get Data&lt;/SPAN&gt;" &lt;SPAN style="COLOR: red"&gt;onAction&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;GetDataClick&lt;/SPAN&gt;" &lt;SPAN style="COLOR: red"&gt;getEnabled&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;GetEnabled&lt;/SPAN&gt;" &lt;SPAN style="COLOR: blue"&gt;/&amp;gt;
&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;group&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;Callbacks in Ribbon Class:&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;#region &lt;/SPAN&gt;Ribbon Callbacks&lt;/PRE&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Boolean &lt;/SPAN&gt;dbEnabled = &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;; 
&lt;SPAN style="COLOR: blue"&gt;public void &lt;/SPAN&gt;Ribbon_Load(Office.&lt;SPAN style="COLOR: #2b91af"&gt;IRibbonUI &lt;/SPAN&gt;ribbonUI)
{
    &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.ribbon = ribbonUI;

    &lt;SPAN style="COLOR: green"&gt;//[aDeveloper] moving the database connection to another thread
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Thread &lt;/SPAN&gt;databaseConnectionThread = 
        &lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Thread&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;delegate&lt;/SPAN&gt;()
        { 
            &lt;SPAN style="COLOR: #2b91af"&gt;Thread&lt;/SPAN&gt;.Sleep(500); &lt;SPAN style="COLOR: green"&gt;// todo:  Actually connect
            &lt;/SPAN&gt;dbEnabled = &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;;
            ribbon.Invalidate();
        });
    databaseConnectionThread.Start();
}

&lt;SPAN style="COLOR: blue"&gt;public &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Boolean &lt;/SPAN&gt;GetEnabled(Office.&lt;SPAN style="COLOR: #2b91af"&gt;IRibbonControl &lt;/SPAN&gt;rc)
{
    &lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;dbEnabled;
}

&lt;SPAN style="COLOR: blue"&gt;public void &lt;/SPAN&gt;GetDataClick(Office.&lt;SPAN style="COLOR: #2b91af"&gt;IRibbonControl &lt;/SPAN&gt;rc)
{
    &lt;SPAN style="COLOR: green"&gt;//pull data from the database and populate the spreadsheet with it.
&lt;/SPAN&gt;}
&lt;SPAN style="COLOR: blue"&gt;#endregion
&lt;/SPAN&gt;&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;This can cause a chicken and egg type situation if by default none of its ribbon controls are available (Ie, they’re not enabled or visible). The next time Office is started, it will use the cached “false” response resulting in none of the controls being enabled, and the user will have no easy way to load the addin and cause the “get” handlers to be called.&lt;/P&gt;
&lt;P&gt;The best way around this issue would be to have a control that is always enabled that calls into the addin and thus would load the addin. You can then call ribbonUI.Invalidate in the custom UI’s onLoad handler to force the Office application to call each “get” handler. &lt;/P&gt;
&lt;P&gt;XML:&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;group &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;MyGroup&lt;/SPAN&gt;"
       &lt;SPAN style="COLOR: red"&gt;label&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Database controls&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
    &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;button &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Button0&lt;/SPAN&gt;" &lt;SPAN style="COLOR: red"&gt;label&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Connect Database&lt;/SPAN&gt;" &lt;SPAN style="COLOR: red"&gt;onAction&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;ConnectDatabase&lt;/SPAN&gt;" &lt;SPAN style="COLOR: red"&gt;enabled&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;" &lt;SPAN style="COLOR: blue"&gt;/&amp;gt;
    &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;button &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Button1&lt;/SPAN&gt;" &lt;SPAN style="COLOR: red"&gt;label&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Get Data&lt;/SPAN&gt;" &lt;SPAN style="COLOR: red"&gt;onAction&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;GetDataClick&lt;/SPAN&gt;" &lt;SPAN style="COLOR: red"&gt;getEnabled&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;GetEnabled&lt;/SPAN&gt;" &lt;SPAN style="COLOR: blue"&gt;/&amp;gt;
&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;group&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
&lt;/SPAN&gt;&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;Callbacks in Ribbon Class:&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;#region &lt;/SPAN&gt;Ribbon Callbacks&lt;/PRE&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Boolean &lt;/SPAN&gt;dbEnabled = &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;; 
&lt;SPAN style="COLOR: blue"&gt;public void &lt;/SPAN&gt;Ribbon_Load(Office.&lt;SPAN style="COLOR: #2b91af"&gt;IRibbonUI &lt;/SPAN&gt;ribbonUI)
{
    &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.ribbon = ribbonUI;
}

&lt;SPAN style="COLOR: blue"&gt;public &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Boolean &lt;/SPAN&gt;GetEnabled(Office.&lt;SPAN style="COLOR: #2b91af"&gt;IRibbonControl &lt;/SPAN&gt;rc)
{
    &lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;dbEnabled;
}

&lt;SPAN style="COLOR: blue"&gt;public void &lt;/SPAN&gt;GetDataClick(Office.&lt;SPAN style="COLOR: #2b91af"&gt;IRibbonControl &lt;/SPAN&gt;rc)
{
    &lt;SPAN style="COLOR: green"&gt;//pull data from the database and populate the spreadsheet with it.
&lt;/SPAN&gt;}

&lt;SPAN style="COLOR: blue"&gt;public void &lt;/SPAN&gt;ConnectDatabase(Office.&lt;SPAN style="COLOR: #2b91af"&gt;IRibbonControl &lt;/SPAN&gt;rc)
{
    &lt;SPAN style="COLOR: green"&gt;//[aDeveloper] we don't do this automatically since we don't want to connect to the database
    //             unless the user wants to - there's a chance for a hang if the database isn't
    //             available.
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Thread&lt;/SPAN&gt;.Sleep(500); &lt;SPAN style="COLOR: green"&gt;// todo:  Actually connect
    &lt;/SPAN&gt;dbEnabled = &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;;
    ribbon.Invalidate();
}
&lt;SPAN style="COLOR: blue"&gt;#endregion
&lt;/SPAN&gt;&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;Another trick is to have the handler return “true” the first time that it’s called, so that Office caches the “true” response as the default, and the control is enabled.&amp;nbsp; If you do this, you’ll want to make sure that your click handlers can handle the case where the button should be disabled.&lt;/P&gt;
&lt;P&gt;(n.b.:&amp;nbsp; This example is a little bit contrived, but will illustrate what you need to do if your application would be best served by this behavior.)&amp;nbsp; &lt;/P&gt;
&lt;P&gt;In this case, the “Get Data” button will be enabled by default.&amp;nbsp; The first click will generate the message box since by the time that GetDataClick is called, the addin hasn’t had time to ‘connect’, and the button will remain disabled until the connection is done.&lt;/P&gt;
&lt;P&gt;XML:&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;group &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;MyGroup&lt;/SPAN&gt;"
       &lt;SPAN style="COLOR: red"&gt;label&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Database controls&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
    &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;button &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Button1&lt;/SPAN&gt;" &lt;SPAN style="COLOR: red"&gt;label&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Get Data&lt;/SPAN&gt;" &lt;SPAN style="COLOR: red"&gt;onAction&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;GetDataClick&lt;/SPAN&gt;" &lt;SPAN style="COLOR: red"&gt;getEnabled&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;GetEnabled&lt;/SPAN&gt;" &lt;SPAN style="COLOR: blue"&gt;/&amp;gt;
&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;group&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
&lt;/SPAN&gt;&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;Callbacks in Ribbon Class:&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;#region &lt;/SPAN&gt;Ribbon Callbacks
&lt;SPAN style="COLOR: #2b91af"&gt;Boolean &lt;/SPAN&gt;dbEnabled = &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;;
&lt;SPAN style="COLOR: #2b91af"&gt;Boolean &lt;/SPAN&gt;firstCall = &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;;
&lt;SPAN style="COLOR: blue"&gt;public void &lt;/SPAN&gt;Ribbon_Load(Office.&lt;SPAN style="COLOR: #2b91af"&gt;IRibbonUI &lt;/SPAN&gt;ribbonUI)
{
    &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.ribbon = ribbonUI;
    &lt;SPAN style="COLOR: green"&gt;//[aDeveloper] moving the database connection to another thread so that we don't hang office
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Thread &lt;/SPAN&gt;databaseConnectionThread = 
        &lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Thread&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;delegate&lt;/SPAN&gt;()
        { 
            &lt;SPAN style="COLOR: #2b91af"&gt;Thread&lt;/SPAN&gt;.Sleep(5000); &lt;SPAN style="COLOR: green"&gt;// todo:  Actually connect
            &lt;/SPAN&gt;dbEnabled = &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;;
            ribbon.Invalidate();
        });
    databaseConnectionThread.Start();
}

&lt;SPAN style="COLOR: blue"&gt;public &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Boolean &lt;/SPAN&gt;GetEnabled(Office.&lt;SPAN style="COLOR: #2b91af"&gt;IRibbonControl &lt;/SPAN&gt;rc)
{
    &lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;true &lt;/SPAN&gt;== firstCall)
    {
        firstCall = &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;;
        &lt;SPAN style="COLOR: blue"&gt;return true&lt;/SPAN&gt;;
    }
    &lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;dbEnabled;
}

&lt;SPAN style="COLOR: blue"&gt;public void &lt;/SPAN&gt;GetDataClick(Office.&lt;SPAN style="COLOR: #2b91af"&gt;IRibbonControl &lt;/SPAN&gt;rc)
{
    &lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;false &lt;/SPAN&gt;== dbEnabled)
    {
        System.Windows.Forms.&lt;SPAN style="COLOR: #2b91af"&gt;MessageBox&lt;/SPAN&gt;.Show(&lt;SPAN style="COLOR: #a31515"&gt;"Could not connect to database"&lt;/SPAN&gt;);
                
        &lt;SPAN style="COLOR: green"&gt;//Disable this button until we get the connection up.
        &lt;/SPAN&gt;firstCall = &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;;
        ribbon.Invalidate();
        &lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt;;
    }
    &lt;SPAN style="COLOR: green"&gt;//Get the data and populate the spreadsheet
&lt;/SPAN&gt;}
&lt;SPAN style="COLOR: blue"&gt;#endregion
&lt;/SPAN&gt;&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9945334" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Ribbon/default.aspx">Ribbon</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+Development/default.aspx">Office Development</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Stephen+Peters/default.aspx">Stephen Peters</category></item><item><title>Migrating an Outlook Solution to .NET Framework 4 in Visual Studio 2010 (Norm Estabrook)</title><link>http://blogs.msdn.com/vsto/archive/2009/12/16/migrating-an-outlook-solution-to-net-framework-4-in-visual-studio-2010-norm-estabrook.aspx</link><pubDate>Wed, 16 Dec 2009 22:33:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9937915</guid><dc:creator>VSTO Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9937915.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9937915</wfw:commentRss><description>&lt;p&gt;Visual Studio can help migrate your Outlook solutions from .NET Framework 3.5 to the .NET Framework 4. However, you still have to do a few things manually to make it all work.&amp;#160; &lt;/p&gt;  &lt;p&gt;Beth Massi converts an Outlook Solution that targets the .NET Framework 3.5 to an Outlook Solution that targets the .NET Framework 4 client profile in this very cool and informative blog entry - &lt;a href="http://blogs.msdn.com/bethmassi/archive/2009/12/15/migrating-an-outlook-client-to-net-framework-4-in-visual-studio-2010.aspx"&gt;Migrating an Outlook Client to .NET Framework 4 in Visual Studio 2010&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9937915" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/Outlook+2007/default.aspx">Outlook 2007</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Norm+Estabrook/default.aspx">Norm Estabrook</category><category domain="http://blogs.msdn.com/vsto/archive/tags/.NET+Framework+Client+Profile/default.aspx">.NET Framework Client Profile</category><category domain="http://blogs.msdn.com/vsto/archive/tags/migration/default.aspx">migration</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Beth+Massi/default.aspx">Beth Massi</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+Development/default.aspx">Office Development</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+2010/default.aspx">Office 2010</category></item><item><title>Making a Custom Group Appear in the Message Tab of a Mail Item (Norm Estabrook)</title><link>http://blogs.msdn.com/vsto/archive/2009/12/15/making-a-custom-group-appear-in-the-message-tab-of-a-mail-item-norm-estabrook.aspx</link><pubDate>Tue, 15 Dec 2009 22:14:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9937317</guid><dc:creator>VSTO Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9937317.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9937317</wfw:commentRss><description>&lt;p&gt;You can add a custom group to the &lt;strong&gt;Message&lt;/strong&gt; tab of an Outlook mail item.&amp;#160; For example, here is a custom group named &amp;quot;MyCoolGroup&amp;quot; that I added to the message tab of a new message:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DisplayingaCustomGroupinBoththeOutlookMa_D2A0/image_9.png" mce_href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DisplayingaCustomGroupinBoththeOutlookMa_D2A0/image_9.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DisplayingaCustomGroupinBoththeOutlookMa_D2A0/image_thumb_3.png" width="674" height="227" mce_src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DisplayingaCustomGroupinBoththeOutlookMa_D2A0/image_thumb_3.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Outlook lets you open a message in the following two modes: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Compose (you are drafting a new message). &lt;/li&gt;    &lt;li&gt;Read (you are reading a message).&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Making a custom group appear for only one of these modes is pretty easy.&amp;#160; Making it appear for both modes is a tad more challenging. That is because the control ID of the &lt;strong&gt;Message&lt;/strong&gt; tab in read mode is different than the control ID of the &lt;strong&gt;Message&lt;/strong&gt; tab in compose mode. When you design your custom group in the VSTO Ribbon designer, you can only specify &lt;strong&gt;one&lt;/strong&gt; control ID. This means that when you run the project, the custom group will only appear in the &lt;strong&gt;Message&lt;/strong&gt; tab of a compose window or the &lt;strong&gt;Message&lt;/strong&gt; tab of a read window depending on which control ID you specify at design-time. &lt;/p&gt;  &lt;p&gt;If you want the group to appear in both versions of the &lt;strong&gt;Message&lt;/strong&gt; tab (read and compose), you have to do a bit more work. Here is how you make the group appear for both modes:&lt;/p&gt;  &lt;p&gt;First, add a &lt;strong&gt;Ribbon (Visual Designer)&lt;/strong&gt; to an Outlook 2007 add-in project.&lt;/p&gt;  &lt;p&gt;Then, set the &lt;strong&gt;RibbonType&lt;/strong&gt; property of the Ribbon to &lt;strong&gt;Microsoft.Outlook.Mail.Read&lt;/strong&gt; as follows:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DisplayingaCustomGroupinBoththeOutlookMa_D2A0/image_10.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DisplayingaCustomGroupinBoththeOutlookMa_D2A0/image_thumb.png" width="283" height="393" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;On the Ribbon designer, add a group to a tab and customize the group as desired.&amp;#160; &lt;/p&gt;  &lt;p&gt;On the Ribbon designer, select the tab, open the &lt;strong&gt;Properties&lt;/strong&gt; window, and then set the &lt;strong&gt;OfficeId&lt;/strong&gt; of the tab to &lt;strong&gt;TabReadMessage&lt;/strong&gt;.&amp;#160; &lt;strong&gt;TabReadMessage&lt;/strong&gt; is the control ID of the default tab that appears on the Ribbon of a mail message that is open in read mode.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DisplayingaCustomGroupinBoththeOutlookMa_D2A0/image_7.png" mce_href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DisplayingaCustomGroupinBoththeOutlookMa_D2A0/image_7.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DisplayingaCustomGroupinBoththeOutlookMa_D2A0/image_thumb_2.png" width="405" height="336" mce_src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DisplayingaCustomGroupinBoththeOutlookMa_D2A0/image_thumb_2.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Ok. Now when you run the project, your custom group will appear only if you open a mail item in read mode. Now you need to add second Ribbon to your project to display this custom group in a mail item that is open in compose mode.&lt;/p&gt;  &lt;p&gt;Add a second &lt;strong&gt;Ribbon (Visual Designer)&lt;/strong&gt; to the project. Then, set the &lt;strong&gt;RibbonType&lt;/strong&gt; property of the Ribbon to &lt;strong&gt;Microsoft.Outlook.Mail.Compose&lt;/strong&gt; as follows:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DisplayingaCustomGroupinBoththeOutlookMa_D2A0/image_12.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DisplayingaCustomGroupinBoththeOutlookMa_D2A0/image_thumb_4.png" width="295" height="399" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;On the Ribbon designer, select the tab of the second Ribbon, open the &lt;strong&gt;Properties&lt;/strong&gt; window, and then set the &lt;strong&gt;OfficeId&lt;/strong&gt; of the tab to &lt;strong&gt;TabNewMailMessage&lt;/strong&gt;.&amp;#160; &lt;strong&gt;TabNewMailMessage&lt;/strong&gt; is the control ID of the default tab that appears on the Ribbon of a mail message that is open in compose mode.&amp;#160; &lt;/p&gt;  &lt;p&gt;I know what your thinking. Do you mean I have to create two separate custom groups? That defeats the whole point of trying to do this right?&amp;#160; Yes that would. Fortunately, you don’t have to create two custom groups. You only have to create two Ribbons as I have shown here. You can use the same custom group in both Ribbons.&amp;#160; Here is how:&lt;/p&gt;  &lt;p&gt;Open the first Ribbon that you created in the Ribbon Designer.&amp;#160; In the Ribbon Designer, select your custom group. In the &lt;strong&gt;Properties&lt;/strong&gt; window, set the &lt;strong&gt;Modifiers&lt;/strong&gt; property of the group to &lt;strong&gt;Public&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Open the code file of the second Ribbon that you created (called Ribbon2 in my project).&lt;/p&gt;  &lt;p&gt;In the constructor of the second Ribbon, add the custom group from Ribbon1 to Ribbon2 as follows: &lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public &lt;/span&gt;Ribbon2()
{
    InitializeComponent();
    &lt;span style="color: #2b91af"&gt;Ribbon1 &lt;/span&gt;firstRibbon = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Ribbon1&lt;/span&gt;();
    &lt;span style="color: blue"&gt;this&lt;/span&gt;.tab1.Groups.Add(firstRibbon.group1);
}&lt;/pre&gt;

&lt;p&gt;You can read more about adding custom groups to built-in tabs in the following MSDN articles:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb608593.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb608593.aspx"&gt;How to: Customize a Built-in tab&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb608616.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb608616.aspx"&gt;How to: Get Started Customizing the Ribbon&lt;/a&gt;&lt;/p&gt;
&lt;a href="http://msdn2.microsoft.com/en-us/library/bb386089.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb386089.aspx"&gt;Ribbon Designer&lt;/a&gt; 

&lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb398246.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb398246.aspx"&gt;Customizing a Ribbon for Outlook&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9937317" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/Outlook+2007/default.aspx">Outlook 2007</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Norm+Estabrook/default.aspx">Norm Estabrook</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Ribbon/default.aspx">Ribbon</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+2007/default.aspx">Office 2007</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+Development/default.aspx">Office Development</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+2010/default.aspx">Office 2010</category></item><item><title>Office Development with Visual Studio 2008 Tutorial Series – Part 2(Beth Massi)</title><link>http://blogs.msdn.com/vsto/archive/2009/12/08/office-development-with-visual-studio-2008-tutorial-series-part-2-beth-massi.aspx</link><pubDate>Tue, 08 Dec 2009 18:36:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9934188</guid><dc:creator>VSTO Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9934188.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9934188</wfw:commentRss><description>&lt;p&gt;Last month &lt;a href="https://mvp.support.microsoft.com/profile=169AE602-45EF-47E6-8868-CA3E91D0A1EE"&gt;Robert Green&lt;/a&gt;, VSTO MVP, started a series of tutorials on building on Office 2007. Today we published part 2 of his step-by-step tutorials. &lt;/p&gt;  &lt;p&gt;In this second part of the series of tutorials on Office Business Applications, learn how to create a Word 2007 price quote generation solution using Visual Studio 2008. This tutorial shows you how to create a custom task pane to display data from a database and binding that data to content controls. This step-by-step tutorial also includes full source code in Visual Basic and C#. Check out the tutorial on the &lt;a href="http://msdn.microsoft.com/en-us/vsto/ee620548.aspx"&gt;VSTO Developer Center&lt;/a&gt;: &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/vsto/ee861194.aspx" target="_blank"&gt;Building an Office Business Application Part 2 – Generating Automobile Quotes&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;And if you missed part 1:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/vsto/ee620548.aspx" target="_blank"&gt;Building an Office Business Application Part 1 - Scheduling Customer Appointments&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If you’re just getting started with Office development in Visual Studio, this is a great place to start.&lt;/p&gt;  &lt;p&gt;Enjoy,   &lt;br /&gt;-&lt;a href="http://blogs.msdn.com/bethmassi" target="_blank"&gt;Beth Massi&lt;/a&gt;, Visual Studio Community&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9934188" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Word+2007/default.aspx">Word 2007</category><category domain="http://blogs.msdn.com/vsto/archive/tags/OBA/default.aspx">OBA</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Beth+Massi/default.aspx">Beth Massi</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Community/default.aspx">Community</category></item><item><title>Using Office 2010 Extensibility Schemas with VSTO addins for Beta 2 (Stephen Peters)</title><link>http://blogs.msdn.com/vsto/archive/2009/12/04/using-office-2010-extensibility-schemas-with-vsto-addins-for-beta-2-stephen-peters.aspx</link><pubDate>Fri, 04 Dec 2009 22:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9932795</guid><dc:creator>VSTO Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9932795.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9932795</wfw:commentRss><description>&lt;P&gt;Office 2010 brings in many new features to the Ribbon and Backstage extensibility. In order to take advantage of those changes in VSTO addins, you will need to update your ribbon XML projects to use the new Office 2010 schema. &lt;/P&gt;
&lt;P&gt;First, you will need to see if the schema is installed. To do this, look in “C:\Program Files\Microsoft Visual Studio 10.0\Xml\Schemas\1033” (you might need to modify this to point to your Visual Studio installation directory). If customui14.xsd is there, you can skip ahead to the next paragraph. Otherwise download the schema from &lt;A href="http://download.microsoft.com/download/F/F/3/FF36D32F-4080-494B-83B8-49DADC68A999/Office2010FluentUISchema.exe" mce_href="http://download.microsoft.com/download/F/F/3/FF36D32F-4080-494B-83B8-49DADC68A999/Office2010FluentUISchema.exe"&gt;here&lt;/A&gt;, and install it in the directory above. When you are done, double check to make sure that the custom14ui.xsd file is there.&lt;/P&gt;
&lt;P&gt;Go to the Ribbon XML item that you want to use on Office 2010. For this blog post I am going to use a Word 2010 addin with a single Ribbon XML item, but the same code can work with any VSTO project with only minor modifications.&lt;/P&gt;
&lt;P&gt;At the top Ribbon1.xml, there is a line&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;  &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;customUI &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="http://schemas.microsoft.com/office/2006/01/customui" &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;onLoad&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="Ribbon_Load"&amp;gt;&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;&lt;/SPAN&gt;
&lt;P&gt;You will want to replace the URL with&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;  http://schemas.microsoft.com/office/2009/07/customui&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;If you look in the properties window for the XML document, the schema for the document should now point to the customui14.xsd that was installed. Now we can play around with it a bit. Under &amp;lt;/ribbon&amp;gt; in Ribbon1.xml, add the following code:&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;  &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;backstage&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
    &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;tab &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="VSTOTab" &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;label&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="VSTO Tab" &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;insertAfterMso&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="TabInfo"&amp;gt;
      &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;firstColumn&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
        &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;group &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="VSTOGroup" &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;label&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="Hello From VSTO!"&amp;gt;
          &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;topItems&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
            &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;button &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="AddMoreCowbell"
              &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;label&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="Add More Cowbell"
              &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;onAction&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="AddMoreCowbell" /&amp;gt;
          &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;topItems&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
        &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;group&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
      &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;firstColumn&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
    &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;tab&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
  &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;backstage&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;
&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;&lt;/SPAN&gt;
&lt;P&gt;We will also need to add the callback to Ribbon1.cs:&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;public void &lt;/SPAN&gt;AddMoreCowbell(Office.&lt;SPAN style="COLOR: #2b91af"&gt;IRibbonControl &lt;/SPAN&gt;control)
{
    System.Windows.Forms.&lt;SPAN style="COLOR: #2b91af"&gt;MessageBox&lt;/SPAN&gt;.Show(&lt;SPAN style="COLOR: #a31515"&gt;"Fever Cured"&lt;/SPAN&gt;);
}&lt;/PRE&gt;
&lt;P&gt;And, of course, the integration in ThisAddin.cs&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;protected override &lt;/SPAN&gt;Microsoft.Office.Core.&lt;SPAN style="COLOR: #2b91af"&gt;IRibbonExtensibility &lt;/SPAN&gt;CreateRibbonExtensibilityObject()
{
    &lt;SPAN style="COLOR: blue"&gt;return new &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Ribbon1&lt;/SPAN&gt;();
}&lt;/PRE&gt;
&lt;P&gt;Run your add-in, and when you go to the backstage, you will find the backstage tab that we just added:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/UsingOffice2010ExtensibilitySchemaswithV_C281/clip_image002_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/UsingOffice2010ExtensibilitySchemaswithV_C281/clip_image002_2.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image002 border=0 alt=clip_image002 src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/UsingOffice2010ExtensibilitySchemaswithV_C281/clip_image002_thumb.jpg" width=244 height=193 mce_src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/UsingOffice2010ExtensibilitySchemaswithV_C281/clip_image002_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Now that you have the schemas set up, you can read up more on extending Backstage and new Ribbon features here:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ee692176(office.14).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ee692176(office.14).aspx"&gt;Microsoft Office 2010 Technical Articles&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - &lt;A href="http://msdn.microsoft.com/en-us/library/ee815851(office.14).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ee815851(office.14).aspx"&gt;Customizing the Office 2010 Backstage View for Developers&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - &lt;A href="http://msdn.microsoft.com/en-us/library/ee691834(office.14).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ee691834(office.14).aspx"&gt;Ribbon Extensibility in Office 2010: Tab Activation and Auto-Scaling&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://download.microsoft.com/download/F/F/3/FF36D32F-4080-494B-83B8-49DADC68A999/Office2010FluentUISchema.exe" mce_href="http://download.microsoft.com/download/F/F/3/FF36D32F-4080-494B-83B8-49DADC68A999/Office2010FluentUISchema.exe"&gt;Office 2010 Custom UI Schema&lt;/A&gt; (repost from above)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9932795" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/Ribbon/default.aspx">Ribbon</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+Development/default.aspx">Office Development</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+2010/default.aspx">Office 2010</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Stephen+Peters/default.aspx">Stephen Peters</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Backstage/default.aspx">Backstage</category></item><item><title>New Learning Resources on the VSTO Developer Center (Beth Massi)</title><link>http://blogs.msdn.com/vsto/archive/2009/12/01/new-learning-resources-on-the-vsto-developer-center-beth-massi.aspx</link><pubDate>Wed, 02 Dec 2009 01:37:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9931199</guid><dc:creator>VSTO Team</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9931199.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9931199</wfw:commentRss><description>&lt;p&gt;Last week we revamped the &lt;a href="http://msdn.microsoft.com/en-us/vsto/dd162433.aspx" target="_blank"&gt;Learn pages on the VSTO Developer Center&lt;/a&gt; with more content that allows you to pivot on more fine-grained topics and tasks under each type of Office solution. We’ve changed the layout of these pages so that you can browse for a type of solution (right now we have &lt;a href="http://msdn.microsoft.com/en-us/vsto/dd162436.aspx" target="_blank"&gt;Excel&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/vsto/dd164295.aspx" target="_blank"&gt;Word&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/vsto/dd162450.aspx" target="_blank"&gt;Outlook&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/vsto/dd162450.aspx" target="_blank"&gt;Deployment&lt;/a&gt;) and then you can drill down into the specific topics to reveal articles and videos underneath. As you select a topic on the left, the content changes on the right so &lt;a href="http://msdn.microsoft.com/en-us/vsto/dd162436.aspx" target="_blank"&gt;check it out&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/NewLearningResourcesontheVSTODeveloperCe_F7BF/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/NewLearningResourcesontheVSTODeveloperCe_F7BF/image_thumb_1.png" width="674" height="430" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We’ve gone through and picked key content in the &lt;a href="http://msdn.microsoft.com/en-us/library/d2tx7z6d.aspx" target="_blank"&gt;Visual Studio&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/bb726434.aspx" target="_blank"&gt;Office&lt;/a&gt; MSDN libraries, other Developer Centers and blogs like this one to bring you a better integrated learning experience -- especially if you’re just getting started programming Office solutions with Visual Studio. Let me know what topics I’ve missed by making a comment to the end of this post or by &lt;a href="http://blogs.msdn.com/bethmassi/contact.aspx" target="_blank"&gt;contacting me directly&lt;/a&gt; and I’ll get them added. Also let me know how you like this layout, we’re planning on taking this approach to the &lt;a href="http://msdn.microsoft.com/en-us/vbasic/default.aspx" target="_blank"&gt;Visual Basic&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/vcsharp/default.aspx" target="_blank"&gt;C#&lt;/a&gt; Developer Centers as well.&lt;/p&gt;  &lt;p&gt;This is a work in progress so you’ll see more content being added to the site as I find it.&amp;#160; I suggest making the &lt;a href="http://msdn.microsoft.com/en-us/vsto/default.aspx" target="_blank"&gt;VSTO Developer Center&lt;/a&gt; your home page so you don’t miss a beat ;-).&lt;/p&gt;  &lt;p&gt;Enjoy,   &lt;br /&gt;-&lt;a href="http://blogs.msdn.com/bethmassi" target="_blank"&gt;Beth Massi&lt;/a&gt;, Visual Studio Community&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9931199" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/Beth+Massi/default.aspx">Beth Massi</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Community/default.aspx">Community</category></item><item><title>Office 2010 Beta &amp; SharePoint 2010 Beta Now Available to the Public (Beth Massi)</title><link>http://blogs.msdn.com/vsto/archive/2009/11/18/office-2010-beta-sharepoint-2010-beta-now-available-to-the-public-beth-massi.aspx</link><pubDate>Wed, 18 Nov 2009 18:54:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9924532</guid><dc:creator>VSTO Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9924532.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9924532</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/vsto/archive/2009/11/16/office-sharepoint-2010-betas-available-beth-massi.aspx"&gt;Monday Office and SharePoint 2010 Beta were released&lt;/a&gt; to MSDN/TechNet subscribers. Today it was announced at PDC that these are available to the rest of the public! Come and get it…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/office/2010/" target="_blank"&gt;&lt;strong&gt;Office 2010 Beta&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sharepoint.microsoft.com/2010/" target="_blank"&gt;&lt;strong&gt;SharePoint 2010 Beta&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;These Betas are compatible with &lt;a href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" target="_blank"&gt;Visual Studio 2010 Beta 2&lt;/a&gt; which was released to the public a few weeks ago. We’ve also started a series on Channel 9 on SharePoint development in Visual Studio so check that out starting with:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://channel9.msdn.com/posts/funkyonex/Overview-of-SharePoint-Development-in-Visual-Studio-2010/"&gt;&lt;strong&gt;Overview of SharePoint Development in Visual Studio 2010&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Also check out…&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Office 2010 resources&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.technet.com/office2010/archive/2009/11/16/announcing-office-2010-beta-availability.aspx"&gt;Announcing Office 2010 Beta Availability&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/vsto/ee676911.aspx"&gt;Office Development in Visual Studio 2010 Beta Samples, Walkthroughs and Videos &lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/officedevelopmentprerelease/threads"&gt;Submit your feedback in the Office Development in Visual Studio 2010 Forums&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/office/ee513173.aspx"&gt;Office 2010 Beta Resources&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.technet.com/gray_knowlton/archive/2009/11/10/office-2010-application-compatibility-deep-dive-on-the-code-compatibility-inspector.aspx"&gt;Office 2010 Application Compatibility Tools&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;SharePoint 2010 Resources&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/sharepoint/archive/2009/11/18/sharepoint-2010-public-beta-is-now-available-for-download.aspx"&gt;SharePoint 2010 Public Beta is now available for download&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/sharepoint/ee513147.aspx"&gt;SharePoint 2010 Development Resources&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/vstudio/dd441784.aspx#Sharepoint"&gt;SharePoint Development in Visual Studio 2010 Walkthroughs&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopmentprerelease/threads"&gt;SharePoint Development Forums&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And stay tuned here for more posts on &lt;a href="http://blogs.msdn.com/vsto/archive/tags/VS2010/default.aspx" target="_blank"&gt;Office Development with Visual Studio 2010&lt;/a&gt;!&lt;/p&gt;  &lt;p&gt;Enjoy,   &lt;br /&gt;-&lt;a href="http://blogs.msdn.com/bethmassi" target="_blank"&gt;Beth Massi&lt;/a&gt;, Visual Studio Community&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9924532" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Beth+Massi/default.aspx">Beth Massi</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+2010/default.aspx">Office 2010</category><category domain="http://blogs.msdn.com/vsto/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category></item><item><title>Office &amp; SharePoint 2010 Betas Available! (Beth Massi)</title><link>http://blogs.msdn.com/vsto/archive/2009/11/16/office-sharepoint-2010-betas-available-beth-massi.aspx</link><pubDate>Mon, 16 Nov 2009 19:05:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9923095</guid><dc:creator>VSTO Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9923095.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9923095</wfw:commentRss><description>&lt;p&gt;Office and SharePoint 2010 are available for MSDN Subscribers today:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=169604"&gt;&lt;strong&gt;MSDN Subscribers: Office 2010 Beta is here. &lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=169606"&gt;&lt;strong&gt;MSDN Subscribers: Microsoft Sharepoint 2010 Beta is here. &lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;These versions of Office and SharePoint are compatible with the &lt;a href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" target="_blank"&gt;&lt;strong&gt;Visual Studio 2010 Beta 2&lt;/strong&gt;&lt;/a&gt; that was released a couple weeks ago. Check out these resources and please &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/officedevelopmentprerelease/threads" target="_blank"&gt;let us know what you think&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Office 2010 resources&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/vsto/ee676911.aspx" target="_blank"&gt;Office Development in Visual Studio 2010 Beta Samples, Walkthroughs and Videos &lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/officedevelopmentprerelease/threads" target="_blank"&gt;Submit your feedback in the Office Development in Visual Studio 2010 Forums&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/office/ee513173.aspx" target="_blank"&gt;Office 2010 Beta Resources&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.technet.com/gray_knowlton/archive/2009/11/10/office-2010-application-compatibility-deep-dive-on-the-code-compatibility-inspector.aspx" target="_blank"&gt;Office 2010 Application Compatibility Tools&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;SharePoint 2010 Resources&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/sharepoint/ee513147.aspx" target="_blank"&gt;SharePoint 2010 Development Resources&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/vstudio/dd441784.aspx#Sharepoint" target="_blank"&gt;SharePoint Development in Visual Studio 2010 Walkthroughs&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopmentprerelease/threads" target="_blank"&gt;SharePoint Development Forums&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/sharepoint/archive/2009/10/28/short-overview-of-sharepoint-features-in-visual-studio-2010.aspx"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Also &lt;a href="http://channel9.msdn.com/tags/Visual+Studio+2010/" target="_blank"&gt;keep an eye out on Channel 9 today&lt;/a&gt; for an overview of some of the Visual Studio 2010 tools that make Office and SharePoint Development easy. &lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9923095" width="1" height="1"&gt;</description></item><item><title>Office 2010 Application Compatibility Program (Beth Massi)</title><link>http://blogs.msdn.com/vsto/archive/2009/10/28/office-2010-application-compatibility-program-beth-massi.aspx</link><pubDate>Wed, 28 Oct 2009 16:46:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9914177</guid><dc:creator>VSTO Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9914177.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9914177</wfw:commentRss><description>&lt;p&gt;If you missed it, &lt;a href="http://blogs.technet.com/gray_knowlton/archive/2009/10/22/announcing-the-office-2010-application-compatibility-program.aspx" target="_blank"&gt;Office announced a compatibility program&lt;/a&gt; to help IT and developers who have built add-ins make a seamless upgrade to Office 2010.&amp;#160; We want you to have a successful and seamless migration to Office 2010 for your VSTO solutions. The program provides tools for environment assessment, code scanning and remediation assistance, and an update to the document conversion tools introduced with Office 2007. &lt;/p&gt;  &lt;p&gt;Check out &lt;a href="http://blogs.technet.com/gray_knowlton/archive/2009/10/22/announcing-the-office-2010-application-compatibility-program.aspx" target="_blank"&gt;Michael Kiselman’s post for more details on the program&lt;/a&gt; that will be available in early December. &lt;/p&gt;  &lt;p&gt;Enjoy,   &lt;br /&gt;-&lt;a href="http://blogs.msdn.com/bethmassi" target="_blank"&gt;Beth Massi&lt;/a&gt;, Visual Studio Community&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9914177" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/Beth+Massi/default.aspx">Beth Massi</category><category domain="http://blogs.msdn.com/vsto/archive/tags/add-ins/default.aspx">add-ins</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+2010/default.aspx">Office 2010</category></item><item><title>Visual Studio 2010: Specify advanced publishing options (Saurabh Bhatia)</title><link>http://blogs.msdn.com/vsto/archive/2009/10/19/visual-studio-2010-specify-advanced-publishing-options-saurabh-bhatia.aspx</link><pubDate>Mon, 19 Oct 2009 22:31:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9909491</guid><dc:creator>VSTO Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9909491.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9909491</wfw:commentRss><description>&lt;p&gt;I have previously &lt;a href="http://blogs.msdn.com/vsto/archive/2008/06/11/specify-a-product-name-publisher-name-and-other-properties-for-vsto-solutions-saurabh-bhatia.aspx"&gt;posted&lt;/a&gt; how you can specify various properties for a VSTO solution like the Publisher and Product Names by tweaking a few files in Visual Studio 2008.&lt;/p&gt;  &lt;p&gt;With Visual Studio 2010 (&lt;a href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx"&gt;Beta 2&lt;/a&gt;) you can edit these properties directly through the Publish Page. All Office projects in Visual Studio 2010 now have an &lt;strong&gt;Options&lt;/strong&gt; button on the Publish Page, which allows you to spet these properties.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VisualStudio2010Beta2Specifyadvancedpubl_128C7/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VisualStudio2010Beta2Specifyadvancedpubl_128C7/image_thumb.png" width="555" height="387" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The Publish Options dialog is similar to the ClickOnce publish options dialog for other types of projects, but this dialog only displays the options applicable to Office projects.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VisualStudio2010Beta2Specifyadvancedpubl_128C7/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VisualStudio2010Beta2Specifyadvancedpubl_128C7/image_thumb_1.png" width="591" height="337" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Here is what these properties mean:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Publisher Name&lt;/b&gt; – The name of the Publisher as displayed in Programs and Features&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Product Name&lt;/b&gt; – The name of the Solution as it will show up in the Programs and Features (Add Remove Programs Entry)&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Support URL&lt;/b&gt; – A URL which End Users can visit to get support for this particular solution. The support URL shows up as a clickable link for the product name during the installation trust prompt.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VisualStudio2010Beta2Specifyadvancedpubl_128C7/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/VisualStudio2010Beta2Specifyadvancedpubl_128C7/image_thumb_2.png" width="591" height="338" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Solution Name&lt;/b&gt; – (Friendly Name) This is the name of the Add-In as it is displayed in the Office Add-ins dialog. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Office Application Description&lt;/b&gt; – The description of the Office Add-in as displayed in the Office Add-ins dialog.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Add-in Load Behavior – &lt;/strong&gt;Specifies whether the add-in should load when the Office Application Starts up or whether it should load on demand when the end user tries to interact with it. By default all add-ins are set to load at startup of the Office Application but if you care about Office startup performance and don’t want your add-in to be running all the time then you should consider loading it on demand.&lt;/p&gt;  &lt;p&gt;Andrew Whitechapel has a &lt;a href="http://blogs.msdn.com/andreww/archive/2008/07/14/demand-loading-vsto-add-ins.aspx"&gt;post&lt;/a&gt; on how an Office add-in can be demand loaded using different loadbehavior values. Previously you had manually update the ClickOnce manifests with the appropriate load behavior value. With Visual Studio 2010 you can set the option to load the add-in on demand and the loadbehavior will be automatically set to 16 (&lt;a href="http://blogs.msdn.com/andreww/archive/2008/04/19/delay-loading-the-clr-in-office-add-ins.aspx"&gt;connect first time&lt;/a&gt;) –&amp;gt; Load the add-in on startup for the first time and then load on demand from then on.&lt;/p&gt;  &lt;p&gt;Loading an add-in on demand can help improve the startup performance of the Office application. It can also reduce the application’s working set as the add-in is not loaded in memory until the end user interacts with it. Setting the add-in to demand load is a good option if your add-in has UI based triggers, like a Ribbon item that the end user can interact with to load the add-in. However demand loading may not be a good option if your add-in is needs to listen to application events like opening a document etc all the time the application is running. So if your add-in doesn’t have to run all the time, then setting it to Load on Demand is a good option to consider. &lt;/p&gt;  &lt;p&gt;Lastly, there is an interesting side note for those of you who may have changed their VS 2008 based project files based on my previous post. If you updated the project file using the same property names as that mentioned in the post, you can migrate that project to VS 2010 and continue using those property values. You no longer need the custom targets file as that functionality is now directly available in the Visual Studio common targets.&lt;/p&gt;  &lt;p&gt;For more information, see &lt;a href="http://msdn.microsoft.com/en-us/library/bb608591(VS.100).aspx"&gt;Publishing Office Solutions&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Have fun with &lt;a href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx"&gt;Visual Studio 2010 Beta2&lt;/a&gt; and let us know your &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/VSPreRelease,netdevelopmentprerelease,visualstudioprerelease,vstsprerelease"&gt;feedback&lt;/a&gt;!&lt;/p&gt;  &lt;p&gt;Saurabh &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9909491" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/ClickOnce/default.aspx">ClickOnce</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Manifest/default.aspx">Manifest</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Saurabh+Bhatia/default.aspx">Saurabh Bhatia</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Publisher+Name/default.aspx">Publisher Name</category><category domain="http://blogs.msdn.com/vsto/archive/tags/SupportUrl/default.aspx">SupportUrl</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Product+Name/default.aspx">Product Name</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Add+Remove+Programs/default.aspx">Add Remove Programs</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+Addin+Properties/default.aspx">Office Addin Properties</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Programs+and+Features/default.aspx">Programs and Features</category><category domain="http://blogs.msdn.com/vsto/archive/tags/add-ins/default.aspx">add-ins</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category></item><item><title>Can I deploy my &lt;Insert App Name Here&gt; and all of its prerequisites in one file? (Mary Lee)</title><link>http://blogs.msdn.com/vsto/archive/2009/10/14/can-i-deploy-my-insert-app-name-here-and-all-of-its-prerequisites-in-one-file-mary-lee.aspx</link><pubDate>Wed, 14 Oct 2009 22:16:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9907343</guid><dc:creator>VSTO Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9907343.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9907343</wfw:commentRss><description>&lt;p&gt;One frequent customer question is about how to deploy an application and all of its prerequisites in a single .msi or .exe file. This question applies whether you are deploying any of the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Microsoft Office 2003 solutions with dependencies on .NET Framework 2.0, Visual Studio Tools for Office 2005 SE runtime, Microsoft Office 2007 primary interop assemblies. &lt;/li&gt;    &lt;li&gt;Microsoft Office 2007 solutions with dependencies on .NET Framework 3.5 , Visual Studio Tools for Office runtime 3.0, Microsoft Office 2007 primary interop assemblies. &lt;/li&gt;    &lt;li&gt;Microsoft Office 2007 solutions with dependencies on .NET Framework 3.5 SP1, Visual Studio Tools for Office runtime 3.0 SP1, Microsoft Office 2007 primary interop assemblies. &lt;/li&gt;    &lt;li&gt;Microsoft Office 2007 solutions with dependencies on .NET Framework 3.5 SP1 Client Profile, Visual Studio Tools for Office runtime 3.0 SP1, Microsoft Office 2007 primary interop assemblies. &lt;/li&gt;    &lt;li&gt;Really, any WinForms/WPF/console/whatever app with dependencies on .NET Framework, SQL Server Express, SQL Server compact, Visual C++ runtime, Windows Installer, or anything else. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;There are three concepts in deployment related to prerequisites: nesting, merging, and chaining or bootstrapping.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Nesting&lt;/strong&gt; is the process of embedding a Windows Installer file (.msi) within another .msi file. However, the &lt;a href="http://support.microsoft.com/kb/306439"&gt;How to create a nested .msi package&lt;/a&gt; article has an important disclaimer.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/CanIdeploymyInsertAppNameHereandallofits_8404/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/CanIdeploymyInsertAppNameHereandallofits_8404/image_thumb.png" width="555" height="80" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The drawbacks of creating a nested MSI installation are listed in the same article.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Nested Installations cannot share components. &lt;/li&gt;    &lt;li&gt;An administrative installation cannot contain a nested installation. &lt;/li&gt;    &lt;li&gt;Patching and upgrading will not work with nested installations. &lt;/li&gt;    &lt;li&gt;The installer will not correctly cost a nested installation. &lt;/li&gt;    &lt;li&gt;Integrated ProgressBars cannot be used with nested installations. &lt;/li&gt;    &lt;li&gt;Resources that are to be advertised cannot be installed by the nested installation. &lt;/li&gt;    &lt;li&gt;A package that performs a nested installation of an application should also uninstall the nested application when the parent product is uninstalled. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For these reasons, nesting is no longer supported. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Merging&lt;/strong&gt; includes shared code, files, resources, registry entries, and setup logic to applications as a single compound file. Prerequisites available as a merge module (.msm) form can be added to a .msi file. For example, if a prerequisite is available as an .msm, you can add it to a Setup project in Visual Studio as shown in &lt;a href="http://msdn.microsoft.com/en-us/library/z6z02ts5(VS.100).aspx"&gt;How to: Create or Add a Merge Module Project&lt;/a&gt;. However, merge modules cannot be serviced by the same owner as the .msi file, so it is difficult to fix issues in the merge module. &lt;a href="http://blogs.msdn.com/windows_installer_team/archive/2006/06/27/648447.aspx"&gt;Tao of the Windows Installer, Part 4&lt;/a&gt; lists two cautionary notes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Do not consume merge modules of vendors who do not promise to fix their merge modules promptly when bugs arrive &lt;/li&gt;    &lt;li&gt;Be prepared to handle the heat when bugs are found in your merge module causing issues for others’ products that have consumed your merge module and you get to put out the flame &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For these reasons, using merge modules is not recommended.&lt;/p&gt;  &lt;p&gt;Nesting and merging create a single file to deploy an application and its prerequisites, but these methods are not supported and not recommended. Thus, the answer to the question in the title is no: you cannot or should not deploy an application and its prerequisites in one file. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Chaining&lt;/strong&gt; or &lt;strong&gt;bootstrapping&lt;/strong&gt; is the process of checking for and installing missing prerequisites, including installing the application that is going to be used to install the rest of the prerequisites and application. You can use Visual Studio to generate a chainer/bootstrapper that is called Setup.exe. This program checks for and installs missing prerequisites before installing the application or Office solution. &lt;/p&gt;  &lt;p&gt;If you are deploying an Office 2007 solution in Visual Studio 2008 SP1, the .NET Framework 3.5 SP1, Visual Studio Tools for Office 3.0 SP1 runtime, and Microsoft Office 2007 primary interop assemblies are already selected in the Prerequisites Dialog Box.&lt;/p&gt;  &lt;p&gt;To learn more about how to install prerequisites in Visual Studio, see the following topics.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb608608(VS.100).aspx"&gt;How to: Install Prerequisites on End User Computers to Run Office Solutions&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/7eh4aaa5(VS.100).aspx"&gt;How to: Install Prerequisites in Windows Installer Deployment&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/8st7th1x(VS.100).aspx"&gt;How to: Install Prerequisites with a ClickOnce Application&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If the prerequisite package does not appear in Visual Studio, you can create your own bootstrapper package. After you create a product.xml file that describes the prerequisite and a package.xml files that includes locale-specific error messages, you can copy the bootstrapper package to \Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages folder. For more information, see &lt;a href="http://msdn.microsoft.com/en-us/library/ms165429(VS.100).aspx"&gt;Creating Bootstrapper Packages&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Other tools besides Visual Studio: You can also use MSBuild and the &lt;a href="http://msdn.microsoft.com/en-us/library/ms164294.aspx"&gt;GenerateBootstrapper Task&lt;/a&gt; to create a bootstrapper on a build computer. Alternatively, you can use the Windows Installer XML Toolset to generate .msi files and package prerequisites. For more information, see &lt;a title="http://wix.sourceforge.net/" href="http://wix.sourceforge.net/"&gt;http://wix.sourceforge.net/&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;For questions about bootstrapping, search for answers or post new questions in the &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/winformssetup/threads"&gt;ClickOnce and Setup &amp;amp; Deployment forum&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Happy deployment!&lt;/p&gt;  &lt;p&gt;Mary Lee, Programming Writer.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9907343" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/Mary+Lee/default.aspx">Mary Lee</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Windows+Installer/default.aspx">Windows Installer</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://blogs.msdn.com/vsto/archive/tags/primary+interop+assemblies/default.aspx">primary interop assemblies</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Bootstrapper/default.aspx">Bootstrapper</category></item><item><title>Office Development with Visual Studio 2008 Tutorial Series Started (Beth Massi)</title><link>http://blogs.msdn.com/vsto/archive/2009/10/14/office-development-with-visual-studio-2008-tutorial-series-started-beth-massi.aspx</link><pubDate>Wed, 14 Oct 2009 16:25:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9907229</guid><dc:creator>VSTO Team</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9907229.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9907229</wfw:commentRss><description>&lt;p&gt;&lt;a href="https://mvp.support.microsoft.com/profile=169AE602-45EF-47E6-8868-CA3E91D0A1EE" target="_blank"&gt;Robert Green&lt;/a&gt;, VSTO MVP, has started a series of tutorials on building on Office 2007! Thanks Robert!&amp;#160; &lt;/p&gt;  &lt;p&gt;In this first of a series of tutorials on building applications on Office you’ll learn how to create an Outlook 2007 customer appointment management solution using Visual Studio 2008. This step-by-step tutorial also includes full source code in Visual Basic and C#. Check out the tutorial on the &lt;a href="http://msdn.microsoft.com/en-us/vsto/ee620548.aspx" target="_blank"&gt;VSTO Developer Center&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://services.social.microsoft.com/feeds/FeedItem?feedId=146ffb4f-ecd0-4016-9e11-be93ec1694da&amp;amp;itemId=84011f83-b4ab-4647-a075-18a10f233142&amp;amp;title=Building+an+Office+Business+Application+Part+1+-+Scheduling+Customer+Appointments%0a&amp;amp;uri=http%3a%2f%2fmsdn.microsoft.com%2fen-us%2fvsto%2fee620548.aspx&amp;amp;k=3I27y%2fTfVojAFCTPmwvCjIgR0%2fw6dIWE5kj6v8CRqIU%3d"&gt;&lt;strong&gt;Building an Office Business Application Part 1 - Scheduling Customer Appointments &lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you’re just getting started with Office development in Visual Studio, this is a great place to start.&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9907229" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/Outlook+2007/default.aspx">Outlook 2007</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+2007/default.aspx">Office 2007</category><category domain="http://blogs.msdn.com/vsto/archive/tags/OBA/default.aspx">OBA</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Beth+Massi/default.aspx">Beth Massi</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Community/default.aspx">Community</category></item></channel></rss>