<?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 : Christin Boyd</title><link>http://blogs.msdn.com/vsto/archive/tags/Christin+Boyd/default.aspx</link><description>Tags: Christin Boyd</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Will your VSTO addin run on Office 2010 64-bit? Yes, probably. (Christin Boyd)</title><link>http://blogs.msdn.com/vsto/archive/2009/08/05/will-your-vsto-addin-run-on-office-2010-64-bit-yes-probably-christin-boyd.aspx</link><pubDate>Thu, 06 Aug 2009 01:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9858450</guid><dc:creator>VSTO Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9858450.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9858450</wfw:commentRss><description>&lt;p&gt;The Visual Studio team is designing the runtime components for Office 2010 so that your Visual Studio Tools for Office 2005 and Visual Studio 2008 .NET addins, document solutions and spreadsheet solutions will run on 64-bit Office 2010.&amp;#160; These runtime components will ship with Office 2010, so your end-users won’t even have to download a new runtime!&amp;#160; How easy is that?&amp;#160; There are a few rare exceptions that I’ll discuss in this blog entry.&amp;#160; &lt;/p&gt;  &lt;p&gt;The miracle of managed code allows you to write C# or Visual Basic .NET code that compiles to “Any CPU” using the Compile setting in your Visual Studio project.&amp;#160; Your code compiles to MSIL with Visual Studio, and then at runtime it gets JIT compiled to the correct chip set, either AMD, Intel, 32-bit or 64-bit.&amp;#160; The first exception to this wondrous technology is the oldest versions of .NET Framework 1.0 and 1.1 will not enable this 64-bit transformation.&lt;/p&gt;  &lt;p&gt;The other thing to lookout for is calls to process invoke (p/invoke) in your code. If you try to call native API methods using p/invoke you could have issues with your VSTO solution running properly on 64-bit Office 2010.&amp;#160; &lt;/p&gt;  &lt;p&gt;You will have problems if your code makes deliberate calls to p/invoke a Win32 API that does not have exactly the same signature (method name, parameter list, and DLL name) of an equivalent Win64 API.&amp;#160; This is true for any solution you write regardless of targeting Office as the platform.&amp;#160; You can find a ton of information in MSDN and blogs by such luminaries as Scott Hanselman about writing Windows API calls so that they will run on either 32-bit or 64-bit Windows.&amp;#160; Here is a generalized code snippet for handling cases where the method name or the DLL name is different:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; height: 244px; background-color: #f4f4f4; text-align: left"&gt;   &lt;pre id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;&lt;p align="left"&gt;&lt;span style="color: #008000"&gt;//YourFunction has the same name, parameters, and DLL name in 32bit and 64bit&lt;/span&gt;&lt;br /&gt;YourFunction();&lt;br /&gt;&lt;br /&gt;Import(&lt;span style="color: #006080"&gt;&amp;quot;LIBRARY&amp;quot;&lt;/span&gt;, EntryPoint = &lt;span style="color: #006080"&gt;&amp;quot;YOURFUNCTION&amp;quot;&lt;/span&gt;, CharSet = CharSet.Unicode)]&lt;br /&gt;private &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; YouFunction();&lt;/p&gt;&lt;p align="left"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;//In some cases, the method name is different in Win32 API and Win64 API, &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;//so use the following code block in stead of the above 3 lines of code.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Marshal.SizeOf(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(IntPtr)) == 4)&lt;br /&gt;{&lt;br /&gt;    YourFunction32();&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Marshal.SizeOf(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(IntPtr)) == 8)&lt;br /&gt;{&lt;br /&gt;    YourFunction64();&lt;br /&gt;}&lt;/p&gt;&lt;p align="left"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Import(&lt;span style="color: #006080"&gt;&amp;quot;LIBRARY32&amp;quot;&lt;/span&gt;, EntryPoint = &lt;span style="color: #006080"&gt;&amp;quot;YOURFUNCTION32&amp;quot;&lt;/span&gt;, CharSet = CharSet.Unicode)]&lt;br /&gt;private &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; YourFunction32();&lt;br /&gt;&lt;br /&gt;Import(&lt;span style="color: #006080"&gt;&amp;quot;LIBRARY64&amp;quot;&lt;/span&gt;, EntryPoint = &lt;span style="color: #006080"&gt;&amp;quot; YOURFUNCTION64&amp;quot;&lt;/span&gt;, CharSet = CharSet.Unicode)]&lt;br /&gt;private &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; YourFunction64();&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;h3&gt;Resources:&lt;/h3&gt;

&lt;p&gt;Here are more resources to help you author your solutions today so that they will run without needing a recompile when your users install 64-bit Office 2010.&lt;/p&gt;

&lt;p&gt;MSDN Library Visual Studio 2005 article on developing &lt;a href="http://msdn.microsoft.com/en-us/library/ms241064(VS.80).aspx" target="_blank"&gt;64-bit Applications&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MSDN Library Visual Studio 2008 article on developing &lt;a href="http://msdn.microsoft.com/en-us/library/ms241064.aspx" target="_blank"&gt;64-bit Applications&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cumgranosalis/archive/2005/12/09/Win64RegistryPart1.aspx" target="_blank"&gt;How to access the “real” x64 registry from a Win32 .NET Application – Part I&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms953313.aspx" target="_blank"&gt;The Myth of .NET Purity, Reloaded&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For migrating your really old apps with lots of native calls to .NET, try checking if your native calls have an equivalent .NET call:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa302340.aspx" target="_blank"&gt;Microsoft Win32 to Microsoft .NET Framework API Map&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/sd10k43k.aspx" target="_blank"&gt;Interoperating with Unmanaged Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Finally I should mention that this is my last post (for a while at least) on this blog because I am leaving Microsoft.&amp;#160; I’m going to work on a charity project teaching robotics programming to high school kids in my “inner city” neighborhood for at least the next 6 months.&amp;#160; The project is called &lt;a href="http://www.teamxbot.org/" target="_blank"&gt;Team Xbot&lt;/a&gt;!&amp;#160; Keep an eye on these kids as they go on to good colleges and great jobs in the next few years!&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Sincerely, Christin Boyd, Program Manager&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9858450" 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/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Christin+Boyd/default.aspx">Christin Boyd</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/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/Office+2010/default.aspx">Office 2010</category></item><item><title>BUG: “Old format or invalid type library” error when automating Excel (Christin Boyd)</title><link>http://blogs.msdn.com/vsto/archive/2009/07/06/bug-old-format-or-invalid-type-library-error-when-automating-excel-christin-boyd.aspx</link><pubDate>Tue, 07 Jul 2009 01:54:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9820860</guid><dc:creator>VSTO Team</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9820860.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9820860</wfw:commentRss><description>&lt;p&gt;A customer recently reported this bug when running their Shared Addin for Excel on French Windows.&amp;#160; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Error: 0x80028018 (-2147647512)      &lt;br /&gt;Description: Old Format or Invalid Type Library&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;His solution worked great on English Windows, but gave errors in any other language.&amp;#160; This is a known problem in Excel and there are a few workarounds that work depending on the way you’re writing your Excel Addin.&amp;#160;&amp;#160; Let me take you through the problem, variations on the problem, and different solutions depending on which Visual Studio project template you choose to start your Addin.&lt;/p&gt;  &lt;p&gt;The bug was originally documented in a &lt;a href="http://support.microsoft.com/kb/320369" target="_blank"&gt;KB 320369 article&lt;/a&gt;, which gives detailed repro steps, explanation, and two workarounds with sample code.&amp;#160; So why am I writing a blog post if the KB article covers everything?&amp;#160;&amp;#160; Three reasons.&amp;#160; &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Because we’re fixing the problem in CLR 4 and I want to encourage you to use one of the recommended workarounds in your current solutions so that you’re ready when your users upgrade to .NET Framework 4.&amp;#160; &lt;/li&gt;    &lt;li&gt;Also, there are parts of the KB article that are a bit confusing, so I’ll try to add some color commentary to help explain what’s causing the problem.&amp;#160; &lt;/li&gt;    &lt;li&gt;And third, these problems do not occur if you use VSTO 2005 SE, VSTO 3.0 (which ships with Visual Studio 2008), or Visual Studio 2010.&amp;#160; I’ll explain why and how later. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The KB article describes the problem:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Error: 0x80028018 (-2147647512)      &lt;br /&gt;Description: Old Format or Invalid Type Library&lt;/p&gt;    &lt;p&gt;You receive this error calling an Excel method when the following conditions are true: &lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;The method requires an LCID (locale identifier). &lt;/li&gt;      &lt;li&gt;You run an English version of Excel. However, the regional settings for the computer are configured for a non-English language. &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;If the client computer runs the English version of Excel and the locale for the current user is configured for a language other than English, Excel will try to locate the language pack for the configured language. If the language pack is not found, the error is reported.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The quote from the KB article is accurate, but can be confusing.&amp;#160; It is very difficult to determine if the Excel method you want to call requires LCID or not.&amp;#160; The Primary Interop Assembly (PIA) does not indicate whether or not the LCID is needed, however VBA does not hide the need for LCID.&amp;#160; Part of the reason why Excel hasn’t changed its methods is to maintain back compatibility with all the VBA code in the universe.&amp;#160; &lt;/p&gt;  &lt;h3&gt;Fixed in VSTO&lt;/h3&gt;  &lt;p&gt;VSTO implemented a fix in VSTO 2005 Second Edition (SE).&amp;#160; You can read more about this fix in &lt;a href="http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx" target="_blank"&gt;Eric Carter’s blog post&lt;/a&gt;.&amp;#160; The fix is also in all subsequent versions of Visual Studio 2008 and will be in Visual Studio 2010.&amp;#160; You know you are using “VSTO” when you create a new Project in Visual Studio and select an Excel &amp;lt;version number&amp;gt; Workbook, Excel &amp;lt;version number&amp;gt; Template or Excel &amp;lt;version number&amp;gt; Addin.&amp;#160; The fix was not implemented in the Shared Addin template in any version of Visual Studio.&amp;#160; If you create a WinForms, WPF, Web or console application that calls Excel, then you will see this bug on non-English Windows.&lt;/p&gt;  &lt;h3&gt;Workarounds &lt;/h3&gt;  &lt;p&gt;If you are using the Shared Addin template, a WinForm, WPF, Web or Console application with any version of Visual Studio, then you should use the &lt;a href="http://support.microsoft.com/kb/320369" target="_blank"&gt;KB 320369 article&lt;/a&gt; to solve the problem.&lt;/p&gt;  &lt;p&gt;The workaround is to write explicit calls to set the thread’s culture before calling into Excel.&amp;#160; You can then reset the culture back to what it was before after you are finished calling Excel.&amp;#160; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Install the Multilingual User Interface Pack for your version of Office. &lt;/li&gt;    &lt;li&gt;Execute the Excel method or property by using &lt;b&gt;InvokeMember&lt;/b&gt; so that you can specify the &lt;b&gt;CultureInfo&lt;/b&gt; for the call. For example, the following code illustrates how you can invoke the &lt;b&gt;Workbooks&lt;/b&gt; object &lt;b&gt;Add&lt;/b&gt; method with &amp;quot;en-US&amp;quot; as the &lt;b&gt;CultureInfo&lt;/b&gt;:       &lt;div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4; text-align: left"&gt;       &lt;pre id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; oApp &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; Excel.Application()&lt;br /&gt;oApp.Visible = &lt;span style="color: #0000ff"&gt;True&lt;/span&gt;&lt;br /&gt;oApp.UserControl = &lt;span style="color: #0000ff"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; oBooks &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Object&lt;/span&gt; = oApp.Workbooks&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; ci &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; System.Globalization.CultureInfo = &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; System.Globalization.CultureInfo(&lt;span style="color: #006080"&gt;&amp;quot;en-US&amp;quot;&lt;/span&gt;)&lt;br /&gt;oBooks.&lt;span style="color: #0000ff"&gt;GetType&lt;/span&gt;().InvokeMember(&lt;span style="color: #006080"&gt;&amp;quot;Add&amp;quot;&lt;/span&gt;, Reflection.BindingFlags.InvokeMethod, &lt;span style="color: #0000ff"&gt;Nothing&lt;/span&gt;, oBooks, &lt;span style="color: #0000ff"&gt;Nothing&lt;/span&gt;, ci)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;

      &lt;br /&gt;&lt;/div&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Or, instead of the above bullet and code sample, set the &lt;b&gt;CultureInfo&lt;/b&gt; prior to calling the Excel method, and then you can reset it after your Excel call: &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4; text-align: left"&gt;
    &lt;pre id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; oApp &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; Excel.Application()&lt;br /&gt;oApp.Visible = &lt;span style="color: #0000ff"&gt;True&lt;/span&gt;&lt;br /&gt;oApp.UserControl = &lt;span style="color: #0000ff"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; oldCI &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; System.Globalization.CultureInfo = _&lt;br /&gt;    System.Threading.Thread.CurrentThread.CurrentCulture&lt;br /&gt;System.Threading.Thread.CurrentThread.CurrentCulture = _&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; System.Globalization.CultureInfo(&lt;span style="color: #006080"&gt;&amp;quot;en-US&amp;quot;&lt;/span&gt;)&lt;br /&gt;oApp.Workbooks.Add()&lt;br /&gt;System.Threading.Thread.CurrentThread.CurrentCulture = oldCI&lt;/pre&gt;

    &lt;br /&gt;&lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;The .NET Framework 4 will solve this whole culture problem.&amp;#160; Excel is not going to change its culture sensitivity because of the need to support backwards compatibility.&amp;#160;&amp;#160; Starting with CLR 4.0, when managed code calls into a COM component and an LCID is required, then the CLR will pass LCID = 1033.&amp;#160; Note that this is how VBA passes LCIDs.&amp;#160;&amp;#160; This means that Visual Studio 2010 project templates for Excel Addins can stop wrapping all Excel projects with LCID proxy.&amp;#160;&amp;#160; In the future, when you use VS 2010 and .NET 4 to write your Excel automation programs from a Shared Addin, console, Winforms, WPF, or Web application, you won’t need to wrap your calls either.&amp;#160; &lt;/p&gt;

&lt;p&gt;-Christin Boyd, Program Manager &amp;amp; &lt;a href="http://blogs.msdn.com/mshneer/" target="_blank"&gt;Misha Shneerson&lt;/a&gt;, Senior Developer&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9820860" 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/Christin+Boyd/default.aspx">Christin Boyd</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Excel+2003/default.aspx">Excel 2003</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Excel+2007/default.aspx">Excel 2007</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/VB/default.aspx">VB</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VBA/default.aspx">VBA</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></item><item><title>32bit Visual Studio and 64bit Office (Christin Boyd)</title><link>http://blogs.msdn.com/vsto/archive/2009/06/11/32bit-visual-studio-and-64bit-office-christin-boyd.aspx</link><pubDate>Thu, 11 Jun 2009 22:44:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9727544</guid><dc:creator>VSTO Team</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9727544.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9727544</wfw:commentRss><description>&lt;p&gt;Visual Studio 2010 will ship with a 32bit version, and no 64bit version.&amp;#160; My team built a very smart layer into Visual Studio 2010 to enable designers and debuggers that work with 64bit Office 2010 and 64bit SharePoint Server 2010.&amp;#160; &lt;/p&gt;  &lt;p&gt;For a good explanation of why the Visual Studio team chose to only build a 32bit version for the next release, you can find a blog post by Rico Mariani titled “&lt;a href="http://blogs.msdn.com/ricom/archive/2009/06/10/visual-studio-why-is-there-no-64-bit-version.aspx" target="_blank"&gt;Visual Studio: Why is there no 64 bit version? (yet)&lt;/a&gt;”&lt;/p&gt;  &lt;p&gt;SharePoint Server 2010 will be 64-bit only.&amp;#160; You can learn more about the requirements of Microsoft SharePoint Server 2010 on the SharePoint Team Blog entry “&lt;a href="http://blogs.msdn.com/sharepoint/archive/2009/05/07/announcing-sharepoint-server-2010-preliminary-system-requirements.aspx" target="_blank"&gt;Announcing SharePoint Server 2010 Preliminary System Requirements&lt;/a&gt;”&amp;#160; If you plan to build solutions for the next generation of SharePoint Server, then I recommend budgeting to purchase 64bit hardware.&lt;/p&gt;  &lt;p&gt;-Christin Boyd, Program Manager, Visual Studio&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9727544" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/Christin+Boyd/default.aspx">Christin Boyd</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><category domain="http://blogs.msdn.com/vsto/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category></item><item><title>Use a path that resolves anywhere your VSTO solution could be deployed (Christin Boyd)</title><link>http://blogs.msdn.com/vsto/archive/2009/06/04/use-a-path-that-resolves-anywhere-your-vsto-solution-could-be-deployed-christin-boyd.aspx</link><pubDate>Thu, 04 Jun 2009 23:29:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9700238</guid><dc:creator>VSTO Team</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9700238.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9700238</wfw:commentRss><description>&lt;p&gt;One of the VSTO MVPs pointed out that in some cases his customers were unable to resolve UNC paths consistently.&amp;#160; When he investigated further, he found that some branch offices of an enterprise were unable to resolve the UNC path (&lt;a href="file://\\myserver\myvstoapps\installpath\"&gt;\\myserver\myvstoapps\installpath\&lt;/a&gt;) because of the way they setup their network infrastructure.&amp;#160; The only workaround he could find was to use a fully qualified web URL instead of a UNC path.&amp;#160; The resolution was to create a web server internal to the corporation which is still accessible by people in the branch office.&amp;#160; The other option would be to negotiate with the IT staff to change the way the branch office resolves server names, but apparently that was not an option.&lt;/p&gt;  &lt;p&gt;We looked at the situation and agree with his conclusion about the workaround.&amp;#160; If the network just won’t give you the correct path using UNC, then HTTP is a reliable solution.&lt;/p&gt;  &lt;p&gt;-Christin Boyd, Program Manager&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9700238" 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/Christin+Boyd/default.aspx">Christin Boyd</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Deployment/default.aspx">Deployment</category></item><item><title>Sign up for Office 2010 Technical Preview</title><link>http://blogs.msdn.com/vsto/archive/2009/05/12/sign-up-for-office-2010-technical-preview.aspx</link><pubDate>Tue, 12 May 2009 20:36:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9607782</guid><dc:creator>VSTO Team</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9607782.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9607782</wfw:commentRss><description>&lt;p&gt;I’m at TechEd in LA, but it seems I could get just as much excitement just watching the Twittersphere today and watching #tela09 tags!&amp;#160; And my feet are killing me.&amp;#160; So be glad you’re sitting at your computer instead of walking around Los Angeles!&amp;#160; Let me give you some highlights for Office developers:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.msteched.com/online/home.aspx" target="_blank"&gt;Watch the Keynotes&lt;/a&gt; which include Office 2010 demos.&amp;#160; Also some &lt;a href="http://www.msteched.com/online/channels.aspx?cname=track&amp;amp;channel=Office+%26+SharePoint" target="_blank"&gt;interviews on Office and SharePoint&lt;/a&gt; on the same TechEd site.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.office2010themovie.com/" target="_blank"&gt;Office 2010 The Movie:&amp;#160; Countdown to Awesome&lt;/a&gt; is the new site where you can watch a slick video and more importantly, click the Sign up for the Microsoft Office 2010 Technology Preview.&amp;#160; When you click the link they show you the “fine print” which I will now print in large font:&lt;/p&gt;  &lt;h4&gt;By registering you are signing up to be considered for the Technical Preview Program, you will be &lt;strong&gt;waitlisted for consideration to be invited&lt;/strong&gt; into the Technical Preview Program. We will notify invitees in early to mid July.&lt;/h4&gt;  &lt;p&gt;“What does that mean?” you ask.&amp;#160; Well, it means that Microsoft wants to collect a wide variety of customer-types and ensure that our TechPreview covers all the different types of customers.&amp;#160; For example, the sign-up form asks if you will test the Tech Preview at Home or Work.&amp;#160; Be honest in your answer because we truly want to get perspectives from all types of Office users.&amp;#160; Similarly the survey asks the size of your company and if you read Japanese.&amp;#160; There is no trick to get invited.&amp;#160; &lt;/p&gt;  &lt;p&gt;If you don’t get invited, then don’t fret.&amp;#160; We’ll give you some useful information on this blog and other Office blogs to help you prepare your business for the future.&amp;#160; For now, I encourage you to build great solutions for Office using all of the resources at Microsoft including Visual Studio, VBA, Open XML SDK, code samples, Forum support, Code Gallery, and the &lt;a href="http://msdn.microsoft.com/office" target="_blank"&gt;Office Developer Center&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Sincerely, Christin Boyd, Program Manager&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9607782" 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/Christin+Boyd/default.aspx">Christin Boyd</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/video/default.aspx">video</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Community/default.aspx">Community</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/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Office+2010/default.aspx">Office 2010</category></item><item><title>TechEd Sessions on Office Development</title><link>http://blogs.msdn.com/vsto/archive/2009/05/07/teched-sessions-on-office-development.aspx</link><pubDate>Fri, 08 May 2009 00:16:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9594976</guid><dc:creator>VSTO Team</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9594976.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9594976</wfw:commentRss><description>&lt;p&gt;If you’re going to TechEd in Los Angeles next week, then don’t miss these four sessions:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;b&gt;DTL03-INT Meet the Microsoft Visual Studio Team&lt;/b&gt;     &lt;br /&gt;Christin Boyd, &lt;a href="http://blogs.msdn.com/eric_carter/default.aspx" target="_blank"&gt;Eric Carter&lt;/a&gt;, Paul Yuknewicz, Jay Schmelzer, &lt;a href="http://diditwith.net/" target="_blank"&gt;Dustin Campbell&lt;/a&gt;, Jonathan Aneja, &lt;a href="http://blogs.msdn.com/lukeh/" target="_blank"&gt;Luke Hoban&lt;/a&gt;, Igor Zinkovsky, Faisal Nasir, &lt;a href="http://devhawk.net/" target="_blank"&gt;Harry Pierson&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/vbteam/" target="_blank"&gt;Lisa Feigenbaum&lt;/a&gt;     &lt;br /&gt;Mon 5/11&amp;#160; 2:45 PM-4:00 PM | Blue Theater 1     &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;OFC325&amp;#160; Building Custom Applications in Microsoft Office Outlook 2007&lt;/strong&gt;     &lt;br /&gt;&lt;a href="http://officedeveloper.net/" target="_blank"&gt;Ty Anderson&lt;/a&gt;, Damon Armstrong     &lt;br /&gt;Tue 5/12&amp;#160; 2:45 PM-4:00 PM | Room 408A&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;DTL324 - Microsoft Visual Studio 2010 Overview for the Business Application Developer &lt;/strong&gt;    &lt;br /&gt;Jay Schmelzer     &lt;br /&gt;Tue 5/12 4:30 PM-5:45 PM | Room 515B&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;OFC324&lt;/b&gt;     &lt;br /&gt;&lt;b&gt;Advanced Microsoft Office Word and Excel 2007 Development in Microsoft Visual Studio 2008 with Visual Studio Tools for Office&lt;/b&gt;     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/eric_carter/default.aspx" target="_blank"&gt;Eric Carter&lt;/a&gt;     &lt;br /&gt;Thursday 5/14 1:00PM-2:15PM | Room 515A&lt;/p&gt;  &lt;p&gt;Of course, there are a dozen other sessions that appeal to Office developers and SharePoint developers.&amp;#160; These are the four that I highly recommend.&amp;#160; Originally I was going to list the 3 not-to-be-missed sessions, but then I couldn’t drop any of these from my list, so we have 4 Must See Sessions!&amp;#160; &lt;/p&gt;  &lt;p&gt;If you’re not going to TechEd, then please click the links on these speakers’ names to read their blogs where the will eventually post some of their demo code.&amp;#160; Expect the posts to happen the Monday after their sessions.&amp;#160; In the case of Eric Carter, he would probably love it if you’d buy his book, &lt;a href="http://www.amazon.com/Visual-Studio-Tools-Office-2007/dp/0321533216" target="_blank"&gt;Visual Studio Tools for Office 2007: VSTO for Excel, Word and Outlook&lt;/a&gt;&lt;u&gt;&lt;/u&gt;.&amp;#160; Or you could just download a zip file with all of the of code from the book &lt;a href="http://blogs.msdn.com/eric_carter/archive/2009/03/14/visual-studio-tools-for-office-2007-code-listings.aspx" target="_blank"&gt;here&lt;/a&gt;.&amp;#160; That should keep you busy for a while.&amp;#160; The explanations in the book really do add to the overall value.&amp;#160; I should credit the co-author, Eric Lippert.&amp;#160; Both men are brilliant and funny, and very modest.&amp;#160; At the Holiday Party this year, Eric Carter got up to sing karaoke and astounded us all with a bouncy rendition of “Sesame Street.” &lt;/p&gt;  &lt;p&gt;-Christin Boyd, Program Manager, Visual Studio&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9594976" 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/Christin+Boyd/default.aspx">Christin Boyd</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/Word+2007/default.aspx">Word 2007</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Excel+2007/default.aspx">Excel 2007</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VB/default.aspx">VB</category><category domain="http://blogs.msdn.com/vsto/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Community/default.aspx">Community</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></item><item><title>Test Automation Tips: “User Name” dialog after new install of Word (Christin Boyd, Bill Robertson)</title><link>http://blogs.msdn.com/vsto/archive/2009/05/05/test-automation-tips-user-name-dialog-after-new-install-of-word-christin-boyd-bill-robertson.aspx</link><pubDate>Wed, 06 May 2009 00:12:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9589711</guid><dc:creator>VSTO Team</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9589711.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9589711</wfw:commentRss><description>&lt;p&gt;We have a team of developers who focus entirely on writing test automation programs for the purpose of covering the huge matrix of test cases that Visual Studio requires.&amp;#160; We often configure new installs of Office and our automated tests need to deal with the special things that Office products do when you first run them after a new install.&amp;#160; For example, when you first run Microsoft Word after a new install, it prompts you to enter your name and initials in a dialog that looks like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/TestAutomationTipsUserNamedialogafternew_ABB4/clip_image002_2.jpg"&gt;&lt;img title="clip_image002" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="107" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/TestAutomationTipsUserNamedialogafternew_ABB4/clip_image002_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Our talented SDET’s (Software Development Engineer in Test) use the following function in their automated tests to suppress this dialog:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.IO;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Diagnostics;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; AddOffice12UserInfo()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; passed = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[] commands = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[5];&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            commands[0] = &lt;span style="color: #006080"&gt;@&amp;quot;add HKCU\Software\Microsoft\Office\12.0\Common /v UserData /t REG_DWORD /d 1 /f&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            commands[1] = &lt;span style="color: #006080"&gt;@&amp;quot;add HKCU\Software\Microsoft\Office\Common\UserInfo /v Company /t REG_SZ /d Microsoft /f&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            commands[2] = &lt;span style="color: #006080"&gt;@&amp;quot;add HKCU\Software\Microsoft\Office\Common\UserInfo /v UserName /t REG_SZ /d TestRun /f&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            commands[3] = &lt;span style="color: #006080"&gt;@&amp;quot;add HKCU\Software\Microsoft\Office\Common\UserInfo /v UserInitials /t REG_SZ /d t /f&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            commands[4] = &lt;span style="color: #006080"&gt;@&amp;quot;add HKCU\Software\Microsoft\Office\12.0\Common\General /v ShownOptIn /t REG_DWORD /d 00000001 /f&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; i = 0; i &amp;lt; commands.Length; i++)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;                &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; temp = StartREG(commands[i]);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!temp)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;                {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;                    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;                }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            passed = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; passed;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; StartREG(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; arguments)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; passed = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; exitcode = -100;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;    {                &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; localpath = Path.Combine(System.Environment.GetEnvironmentVariable(&lt;span style="color: #006080"&gt;&amp;quot;SYSTEMROOT&amp;quot;&lt;/span&gt;), &lt;span style="color: #006080"&gt;&amp;quot;system32&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        System.Diagnostics.Process myProcess = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; System.Diagnostics.Process();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        myProcess.EnableRaisingEvents = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        myProcess.StartInfo.FileName = Path.Combine(localpath, &lt;span style="color: #006080"&gt;&amp;quot;reg.exe&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        myProcess.StartInfo.Arguments = arguments;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        myProcess.StartInfo.UseShellExecute = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        myProcess.Start();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        myProcess.WaitForExit();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        exitcode = myProcess.ExitCode;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (exitcode == 0)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            passed = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            Debug.WriteLine(&lt;span style="color: #006080"&gt;&amp;quot;reg exit code is::&amp;quot;&lt;/span&gt; + myProcess.ExitCode.ToString());&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        Debug.Fail(ex.Message, ex.StackTrace);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; passed;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Let me know if these Test Automation samples are useful and we will try to publish more of these.&lt;/p&gt;

&lt;p&gt;-Christin Boyd, Program Manager, Visual Studio and Bill Robertson, Software Development Engineer in Test, Visual Studio&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9589711" 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/Christin+Boyd/default.aspx">Christin Boyd</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Dialog+boxes/default.aspx">Dialog boxes</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/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/vsto/archive/tags/sample/default.aspx">sample</category></item><item><title>Ich bin ein VSTO</title><link>http://blogs.msdn.com/vsto/archive/2009/05/04/ich-bin-ein-vsto.aspx</link><pubDate>Mon, 04 May 2009 23:18:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9586495</guid><dc:creator>VSTO Team</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9586495.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9586495</wfw:commentRss><description>&lt;p&gt;I hope I didn’t say “I am a doughnut.”&amp;#160; For native German speakers, you may already know about Lars Keller, a recent recipient of the Visual Studio &lt;a href="http://mvp.support.microsoft.com/" target="_blank"&gt;MVP Award&lt;/a&gt;.&amp;#160; When the localized Help files and documentation aren’t enough, it helps to read technical content in your own language.&amp;#160; Lars writes a developer blog with quite a few Office development entries:&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;h3&gt;&lt;a href="http://blog.lars-keller.net/default.aspx"&gt;Lars Keller ...inspired by .NET&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;All about .NET, VSTS, VSTO and more&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Lars also co-founded an aggregation of many German language blogs and event announcements about Visual Studio Tools for Office:&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.vsto-taskforce.de/" target="_blank"&gt;VSTO Taskforce&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;Alles zum Thema Visual Studio Tools for Office&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You can find more non-English content written and aggregated by two other VSTO&amp;#160; MVPs, Ryosuke Uemoto and Pablo Pelaez Aller.&amp;#160; You can find a &lt;a href="http://blogs.msdn.com/saikik/default.aspx" target="_blank"&gt;Japanese blog on VSTO&lt;/a&gt;, a Japanese &lt;a href="http://cs.albis.jp/blogs/ms-18e/" target="_blank"&gt;blog on VSTO and other Developer topics&lt;/a&gt;, and a &lt;a href="http://www.geeks.ms/blogs/pablo" target="_blank"&gt;Spanish blog on VSTO&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If you know of other non-English web sites with great Office development content, then please leave a comment.&lt;/p&gt;  &lt;p&gt;-Christin Boyd, Program Manager, Visual Studio&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9586495" 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/Christin+Boyd/default.aspx">Christin Boyd</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Community/default.aspx">Community</category></item><item><title>Developing for Office and SharePoint Server 2010 (Christin Boyd)</title><link>http://blogs.msdn.com/vsto/archive/2009/05/01/developing-for-office-and-sharepoint-server-2010-christin-boyd.aspx</link><pubDate>Fri, 01 May 2009 23:08:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9582882</guid><dc:creator>VSTO Team</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9582882.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9582882</wfw:commentRss><description>&lt;p&gt;I get a lot of questions about the future.&amp;#160; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;When will Office and SharePoint release?&lt;/strong&gt;&lt;em&gt;&amp;#160; First half of 2010.&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Is VSTO part of Microsoft’s long term strategy?&lt;/strong&gt;&amp;#160; &lt;em&gt;Yes!&amp;#160; The Office tools shipped in VS 2008 and will ship in VS 2010 with lots of cool new improvements.&amp;#160; We strongly encourage and support .NET development on the Office and SharePoint platforms. &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Will there be better Team Development tools for Office and SharePoint developers?&lt;/strong&gt;&amp;#160; &lt;em&gt;Yes!&amp;#160; Future blog posts will tell you more.&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Are there any pricing changes?&lt;/strong&gt;&amp;#160; &lt;em&gt;See below note on SharePoint Designer.&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Can I get Office 2010 Beta or SharePoint Server 2010 Beta?&lt;/strong&gt;&amp;#160; &lt;em&gt;Yes, eventually.&amp;#160; A few thousand enterprises, small businesses, developers, ISVs, Partners, schools and families have been invited to join an early private “technical preview” beta, and the rest of the world will get to test a later public beta.&amp;#160; No dates have been announced.&amp;#160; Read the &lt;/em&gt;&lt;a href="http://www.computerworld.com/action/article.do?command=printArticleBasic&amp;amp;taxonomyName=Software+Development&amp;amp;articleId=9131672&amp;amp;taxonomyId=63" target="_blank"&gt;&lt;em&gt;Computer World&lt;/em&gt;&lt;/a&gt;&lt;em&gt; article on the Office Beta.&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Should I sanitize my keyboard to prevent the H1N1 flu?&lt;/strong&gt;&amp;#160; &lt;em&gt;Yes, but don’t put it in the dishwasher like my internship roommate did after a cola spill.&amp;#160; It was hilarious, and half the keys still worked!&lt;/em&gt;&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In the coming months you will see a few more blog posts about the future and plenty of blog posts about developing today with Visual Studio 2008.&amp;#160; For now, I’d like to review all of the &lt;strong&gt;official&lt;/strong&gt; posts that Microsoft has released about developing SharePoint Server 2010 solutions:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/presspass/features/2009/Apr09/04-15Office2010.mspx " target="_blank"&gt;Press Release on SharePoint Server 2010&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://office.microsoft.com/en-us/sharepointdesigner/HA103607611033.aspx" target="_blank"&gt;SharePoint Designer is now FREE&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/somasegar/archive/2009/02/19/sharepoint-tools-support-in-visual-studio.aspx" target="_blank"&gt;Soma’s blog post “SharePoint tools support in Visual Studio”&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx" target="_blank"&gt;Official Visual Studio 2010 home page&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://download.microsoft.com/download/C/0/9/C0965791-049B-4200-9008-F07A783026F6/VisualStudio2010_ProductOverview.pdf " target="_blank"&gt;PDF of the Official Visual Studio 2010 Product Overview&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://channel9.msdn.com/posts/VisualStudio/Sharepoint-Development-with-Visual-Studio-2010/" target="_blank"&gt;Channel9 Interview with the Lead Program Manager designing the Office and SharePoint tools in VS 2010&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If I’ve forgotten any of the official Microsoft announcements in this post, then please leave a comment with a link.&amp;#160; Thanks!&lt;/p&gt;  &lt;p&gt;-Christin Boyd, Program Manager&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9582882" 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/Christin+Boyd/default.aspx">Christin Boyd</category><category domain="http://blogs.msdn.com/vsto/archive/tags/SharePoint/default.aspx">SharePoint</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><category domain="http://blogs.msdn.com/vsto/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category></item><item><title>Why Can’t I Change the Update Path when Redeploying VSTO Solutions? (Christin Boyd, Kris Makey, Jeff Young)</title><link>http://blogs.msdn.com/vsto/archive/2008/12/16/why-can-t-i-change-the-update-path-when-redeploying-vsto-solutions-christin-boyd-kris-makey-jeff-young.aspx</link><pubDate>Wed, 17 Dec 2008 01:45:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9228873</guid><dc:creator>VSTO Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9228873.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9228873</wfw:commentRss><description>&lt;p&gt;The other day I was asked about the automatic Updates feature of VSTO 3.0 deployment.&amp;nbsp; In this scenario, he used the Publish Wizard in VS 2008 to create a Word document solution and the install manifest.&amp;nbsp;&amp;nbsp; Then a bunch of people used the Word document, and kicked off the installer which then copied things to their ClickOnce cache.&amp;nbsp; Everything worked fine.&amp;nbsp; Then he needed to make changes to the code, recompile, and somehow get the solution to all of his customers.&amp;nbsp; Instead of using the Publish Wizard to create the update in the same server, he chose to use a different server path.&amp;nbsp; The customers were unable to install the updates.&amp;nbsp; He tried editing the custom properties of the document to change the install path to the new server, but it still didn’t work.&amp;nbsp; Then he tried testing with a new, clean computer, and on that computer he was able to install from the new path and use the new Word document.&amp;nbsp; He asked us why were the “old” users unable to get the update? &lt;p&gt;This question shows up on the Forum occasionally.&amp;nbsp; “Why can I not change the update location of VSTO v3 Add-in or Document once it is installed?”&amp;nbsp; (Or) “Why does VSTO continue to check in the old location even after I change location property on client machines that installed the old version?” &lt;p&gt;The Path to the deployment manifest is used as part of the Identity for an Add-in.&amp;nbsp; During the First installation of an Add-in or Document, the Full Path is set and stored by the VSTO Runtime for that client machine.&amp;nbsp; Once you have installed an Add-in changing the path in the registration will cause the Add-in to throw an Error.&amp;nbsp; Once you have installed a customized Document, the code-behind will only check the original location and changes to the path stored in the document will be ignored (this is to allow copying a local version of a customized document that you installed from a remote location).&amp;nbsp; In order to change the location that an Add-in or Document checks for updates, you must First uninstall the “old” version on the installed clients and then install from the new location.&amp;nbsp; &lt;p&gt;Now, if you want to delve deeper, then keep reading this paragraph, or skip to the next one.&amp;nbsp; The low-level explanation is that ClickOnce uses the solution path as part of its identity when storing solutions into the ClickOnce cache.&amp;nbsp;&amp;nbsp; You will get &lt;i&gt;similar&lt;/i&gt; behavior in a CO-deployed Windows Application as well _&lt;i&gt;unless&lt;/i&gt;_ you use the deploymentProviderURL (DPURL).&amp;nbsp; Setting the DPURL can allow WinForms applications to change where updates are pulled from so that Server A (from which a solution was original installed) can be decommissioned and updates can be retrieved from Server B.&amp;nbsp; VSTO does not support DPURL.&amp;nbsp; Why not, you ask?&amp;nbsp; At the time we were considering it during the development of VS 2008, the amount of development work-months required was more than the time we had remaining (DPURL has implications on migration of data from old solution to new solution, for instance).&amp;nbsp; After much discussion, we decided to have the ClickOnce team throw an exception of a DPURL is set for VSTO solutions.&amp;nbsp; At the start of development for VS 2010, we considered this feature again, but again this feature did not make our list of highest priority deployment features.&amp;nbsp; We are implementing a lot of new deployment features for VS 2010. &lt;p&gt;In conclusion, the solution Path is used as part of the identity.&amp;nbsp; You can’t change the update path after you've installed an Office solution.&amp;nbsp; In a Windows solution, you can change the update path using DPURL.&amp;nbsp; VSTO doesn’t support DPURL because we couldn’t fit that feature in the development schedule.&amp;nbsp; The workaround is to uninstall the solution from the user’s computer when it is stuck pointing to an old path that you can’t update anymore and then reinstall with a new Install Path set in the Publish wizard.&amp;nbsp; We recommend that you set your Install Path to a URL that you predict can stay the same for as long as your users will need updates. &lt;p&gt;This explanation applies to Word document and template solutions, and to Excel spreadsheet and template solutions. &lt;p&gt;I hope this blog entry is helpful!&amp;nbsp; Please leave comments to this article if you have feedback.&amp;nbsp; &lt;p&gt;-Kris Makey, Jeff Young, Christin Boyd, Mary Lee and Saurabh Bhatia contributed to this blog post&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9228873" 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/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Christin+Boyd/default.aspx">Christin Boyd</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/Excel+2007/default.aspx">Excel 2007</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Manifest/default.aspx">Manifest</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Add+Remove+Programs/default.aspx">Add Remove Programs</category></item><item><title>DevConnections Conference: VSTO Session Demos (Christin Boyd)</title><link>http://blogs.msdn.com/vsto/archive/2008/11/13/devconnections-conference-vsto-session-demos.aspx</link><pubDate>Fri, 14 Nov 2008 02:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9067851</guid><dc:creator>VSTO Team</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/vsto/comments/9067851.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=9067851</wfw:commentRss><description>&lt;P&gt;Hi Folks!&amp;nbsp; If you're not one of the 4,000 professionals attending DevConnections in Las Vegas, then never fear!&amp;nbsp; You can see my demos and learn about my session "Office Development with Visual Studio 2008" from this blog entry!&amp;nbsp; &lt;/P&gt;
&lt;P&gt;VS 2008 lets you target Office 2003 or Office 2007.&amp;nbsp; We recommend that you only install one version of Office on your development computer.&amp;nbsp; If you find yourself developing for both versions often, then I suggest creating a dual-boot computer with Office 2003 on one boot, and Office 2007 on the other.&amp;nbsp; If you develop mostly for one version, and occasionally target the other, then a Virtual PC image would be fine, if you have enough RAM.&amp;nbsp; I have 2Gig on my laptop, which is not enough for a VPC running Visual Studio.&amp;nbsp; My desktop computer back in Redmond has 4G, which is plenty.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/OfficeDeveloperConferenceDevelopingandDe_118D7/FileNewProject_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/OfficeDeveloperConferenceDevelopingandDe_118D7/FileNewProject_2.jpg"&gt;&lt;IMG height=105 alt=FileNewProject src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/OfficeDeveloperConferenceDevelopingandDe_118D7/FileNewProject_thumb.jpg" width=244 border=0 mce_src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/OfficeDeveloperConferenceDevelopingandDe_118D7/FileNewProject_thumb.jpg"&gt;&lt;/A&gt; 
&lt;P&gt;FAQ: If you choose to ignore my recommendation and have 2 versions of Office on your development computer, then you may have some weirdness when you try to Debug and the debugger loads the wrong versions of some Office DLLs.&amp;nbsp; If you try to open an Office 2003 project and you keep getting the Upgrade Wizard, and you don't want to, then uncheck the &lt;A href="http://channel9.msdn.com/posts/HarryMiller/Turn-Off-Automatic-Conversion-of-Office-2003-Projects-into-2007-Projects/" target=_blank mce_href="http://channel9.msdn.com/posts/HarryMiller/Turn-Off-Automatic-Conversion-of-Office-2003-Projects-into-2007-Projects/"&gt;"Always Upgrade" option in the Tools\Options dialog as shown in this funny video&lt;/A&gt; and in this photo below: 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DevConnectionsConference_B627/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DevConnectionsConference_B627/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=143 alt=image src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DevConnectionsConference_B627/image_thumb.png" width=244 border=0 mce_src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DevConnectionsConference_B627/image_thumb.png"&gt;&lt;/A&gt; 
&lt;H3&gt;Excel And Ribbon Demo&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Excel and Word templates let you program to the document surface 
&lt;LI&gt;Word Content Controls, Bookmarks 
&lt;LI&gt;Excel cells, Named Ranges, and Charts 
&lt;LI&gt;Your custom Ribbon tabs can scope to just one document 
&lt;LI&gt;Demo code:&amp;nbsp; &lt;A href="http://msdn2.microsoft.com/en-us/library/bb386198.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb386198.aspx"&gt;http://msdn2.microsoft.com/en-us/library/bb386198.aspx&lt;/A&gt; 
&lt;LI&gt;Try clicking on the outermost top edge of the Ribbon Designer and then setting the property "Start from Scratch" = True.&amp;nbsp;&amp;nbsp; Then add another Tab to the Ribbon Designer and set the ControlId = TabInsert and ControlType = Office and OfficeId = TabInsert as seen below:&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DevConnectionsConference_B627/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DevConnectionsConference_B627/image_4.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=228 alt=image src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DevConnectionsConference_B627/image_thumb_1.png" width=244 border=0 mce_src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/DevConnectionsConference_B627/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;VBA interop with VB .NET&lt;/H3&gt;
&lt;P&gt;&lt;A href="http://channel9.msdn.com/posts/DanielMoth/VBA-interop-with-VSTO-managed-code-in-VS-2008/" target=_blank mce_href="http://channel9.msdn.com/posts/DanielMoth/VBA-interop-with-VSTO-managed-code-in-VS-2008/"&gt;Check out this really nice VBA Interop demo&lt;/A&gt; by my Scottish colleague, &lt;A href="http://www.danielmoth.com/Blog/2007/10/five-vsto-v30-in-vs2008-videos.html" target=_blank mce_href="http://www.danielmoth.com/Blog/2007/10/five-vsto-v30-in-vs2008-videos.html"&gt;The Moth&lt;/A&gt;!&amp;nbsp; &lt;/P&gt;
&lt;H3&gt;Databinding&lt;/H3&gt;
&lt;P&gt;This part of my demo failed on Tuesday because my security ticket had expired, which made my Windows Authentication login to the database fail.&amp;nbsp; The problem was that I last received an Active Directory authentication on Friday afternoon when I logged in to my domain in Redmond, Washington.&amp;nbsp; Then I flew to Vegas and worked on my laptop without logging in to the corporate domain.&amp;nbsp; By Tuesday afternoon my kerberos ticket had expired, which made my Windows Integrated Security database logins fail.&amp;nbsp; A failure like that in front of an audience of 100 people is an EPIC FAIL!&amp;nbsp; Oops. 
&lt;P&gt;In conclusion, I will in the future use SQL Authentication instead of Windows Authentication for demonstrations when I am on-the-road for conferences. 
&lt;UL&gt;
&lt;LI&gt;Demo code:&amp;nbsp; Databound Word Content Controls &lt;A href="http://msdn2.microsoft.com/en-us/library/bb157875.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb157875.aspx"&gt;http://msdn2.microsoft.com/en-us/library/bb157875.aspx&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Developing Outlook Add-Ins&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Multiple Document Interface 
&lt;LI&gt;Inspector Windows 
&lt;LI&gt;Folders and Forms 
&lt;LI&gt;Developer UI Elements 
&lt;UL&gt;
&lt;LI&gt;Ribbon and Menus 
&lt;LI&gt;Custom Task Panes 
&lt;LI&gt;Outlook Form Regions&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Outlook Task Pane Demo code: I used a variation on this code &lt;A href="http://msdn2.microsoft.com/en-us/library/bb772082.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb772082.aspx"&gt;http://msdn2.microsoft.com/en-us/library/bb772082.aspx&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://channel9.msdn.com/posts/DanielMoth/Outlook-Form-Regions-in-Visual-Studio-2008/" target=_blank mce_href="http://channel9.msdn.com/posts/DanielMoth/Outlook-Form-Regions-in-Visual-Studio-2008/"&gt;Outlook Form Region video&lt;/A&gt; by The Moth&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Deploying Office Solutions&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Office Security is crucial 
&lt;LI&gt;Office 2003 deployment is different from 2007 
&lt;LI&gt;Office 2003 deployment model in VS 2008 is the same as it was in VSTO 2005 
&lt;LI&gt;Office 2007 solution deployment is completely new technology in VS 2008 
&lt;UL&gt;
&lt;LI&gt;Leverages ClickOnce Cache 
&lt;LI&gt;ClickOnce Automatic Update and Rollback 
&lt;LI&gt;Prerequisites included in Setup &lt;BR&gt;(runtime and .NET Framework)&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Demo steps:&amp;nbsp; &lt;A href="http://msdn2.microsoft.com/en-us/library/bb608592.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb608592.aspx"&gt;http://msdn2.microsoft.com/en-us/library/bb608592.aspx&lt;/A&gt; 
&lt;LI&gt;Lots of session questions were about deployment and you can click on the Tag "Deployment" in this blog to see lots and lots of posts on the topic.&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Deployment Best Practices&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Test your deployment on another computer that does NOT have Visual Studio installed 
&lt;LI&gt;I use a test matrix of Virtual PC images on an external hard drive&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Conclusion&lt;/H3&gt;
&lt;P&gt;I hope this information is useful as a reference for those who attended my session and for those of you who were unable to attend.&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;P&gt;-Christin Boyd, Program Manager &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9067851" 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/Christin+Boyd/default.aspx">Christin Boyd</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VB/default.aspx">VB</category><category domain="http://blogs.msdn.com/vsto/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/vsto/archive/tags/OBA/default.aspx">OBA</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VBA/default.aspx">VBA</category></item><item><title>VSTO and the .NET Framework Client Profile (Christin Boyd)</title><link>http://blogs.msdn.com/vsto/archive/2008/09/16/vsto-and-the-net-framework-client-profile-christin-boyd.aspx</link><pubDate>Wed, 17 Sep 2008 04:02:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8954633</guid><dc:creator>VSTO Team</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/vsto/comments/8954633.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=8954633</wfw:commentRss><description>&lt;p&gt;One of our loyal blog readers asked if "VSTO officially supports targeting the Client Profile? I did a quick check and it seems to be working fine but it is good if we explicitly mention whether it is supported."&amp;nbsp; The answer is yes.&amp;nbsp; Starting in Visual Studio 2008 Service Pack 1 (SP1), you can develop 2007 Microsoft Office solutions with .NET Framework version 3.5 or .NET Framework Client Profile. The .NET Framework Client Profile is a subset of the full .NET Framework 3.5 that has a size of 25-30 MB.&amp;nbsp; For more information about the .NET Framework Client Profile, see &lt;a href="http://msdn.microsoft.com/library/cc656912.aspx" target="_blank"&gt;.NET Framework Client Profile&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;You can read more about how to target the Client Profile in the localized documentation article &lt;a href="http://msdn.microsoft.com/library/bb772098.aspx" target="_blank"&gt;"How to:&amp;nbsp; Change the Target .NET Framework"&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;If you build a solution with the Client Profile, then please let us know by commenting on this page.&amp;nbsp; Does the performance suite your needs?&amp;nbsp; How was the experience?&lt;/p&gt; &lt;p&gt;-Christin Boyd, Program Manager&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8954633" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/Christin+Boyd/default.aspx">Christin Boyd</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/SP1/default.aspx">SP1</category><category domain="http://blogs.msdn.com/vsto/archive/tags/.NET+Framework+Client+Profile/default.aspx">.NET Framework Client Profile</category></item><item><title>Visual Studio 2008 Service Pack 1 released! Now what? (Christin Boyd)</title><link>http://blogs.msdn.com/vsto/archive/2008/08/15/visual-studio-2008-service-pack-1-released-now-what-christin-boyd.aspx</link><pubDate>Sat, 16 Aug 2008 00:18:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8870743</guid><dc:creator>VSTO Team</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/vsto/comments/8870743.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=8870743</wfw:commentRss><description>&lt;h3&gt;Yeah!&amp;nbsp; Service Pack 1 is released to the web!&lt;/h3&gt; &lt;p&gt;Now what do I do?&amp;nbsp; I'd like to help you navigate the information we published about SP1.&amp;nbsp; I strongly recommend that you read the &lt;a href="http://download.microsoft.com/download/A/2/8/A2807F78-C861-4B66-9B31-9205C3F22252/VS2008SP1Readme.htm#Visual%20Studio%20Tools%20for%20Office" target="_blank"&gt;VSTO section of the SP1 Readme here&lt;/a&gt;.&amp;nbsp; You can read about all the great improvements to Visual Studio in the &lt;a href="http://support.microsoft.com/kb/945140" target="_blank"&gt;Knowledge Base&lt;/a&gt; article about all the bug fixes we put into the Service Pack.&amp;nbsp; Hopefully your issues were addressed in this SP.&amp;nbsp; &lt;/p&gt; &lt;p&gt;If you want to know how my team decided what to put into the Service Pack, you can read the archived blog entry from June titled "&lt;a href="http://blogs.msdn.com/vsto/archive/2008/07/11/what-s-new-in-vs-2008-sp1-and-how-the-vsto-team-decided-what-to-include-in-a-service-pack-christin-boyd-mary-lee.aspx" target="_blank"&gt;What's New in VS 2008 SP1 and how the VSTO team decided what to include in a Service Pack&lt;/a&gt;."&amp;nbsp; &lt;/p&gt; &lt;p&gt;For an overview of &lt;a href="http://msdn.microsoft.com/en-us/library/86bkz018.aspx" target="_blank"&gt;What's New in Visual Studio Tools for Office with SP1&lt;/a&gt;, you can read the linked article in the documentation.&amp;nbsp; The documentation is Localized, so you can read it in &lt;a href="http://msdn.microsoft.com/ja-jp/library/86bkz018.aspx" target="_blank"&gt;Japanese&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/de-de/library/86bkz018.aspx" target="_blank"&gt;German&lt;/a&gt;, or any of the other languages that our documentation supports!&lt;/p&gt; &lt;blockquote&gt; &lt;h3&gt;What's New in Visual Studio Tools for Office&lt;/h3&gt; &lt;p&gt;&lt;strong&gt;Visual Studio 2008 Service Pack 1 (SP1)&lt;/strong&gt; contains updates and new features that affect Visual Studio Tools for Office. The SP1 changes are listed separately from the Visual Studio 2008 features to help you find the latest additions quickly.&amp;nbsp; Visual Studio 2008 SP1 includes features that are designed to help you accomplish the following tasks:  &lt;h5&gt;Add Host Controls and Smart Tags to Add-in Projects&lt;/h5&gt; &lt;p&gt;You can add smart tags and host controls, such as content controls in Word 2007 and list objects in Excel 2007, to documents in application-level add-in projects. These managed host controls behave like native Office objects, but with added functionality such as events and data-binding capabilities.  &lt;p&gt;To get started, see &lt;a href="http://msdn.microsoft.com/en-us/library/x97a5x3s.aspx"&gt;Adding Controls to Office Documents at Run Time&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/ms178786.aspx"&gt;Smart Tags Overview&lt;/a&gt;.  &lt;h5&gt;Deploy the Office Primary Interop Assemblies with Your Solution Installer&lt;/h5&gt; &lt;p&gt;When you use ClickOnce to deploy solutions for the 2007 Microsoft Office system, the Microsoft Office 2007 Primary Interop Assemblies are automatically selected as prerequisites. The primary interop assemblies are copied to the same deployment folder as your solution installer.  &lt;p&gt;To get started, see &lt;a href="http://msdn.microsoft.com/en-us/library/bb608608.aspx"&gt;How to: Install Prerequisites on End User Computers to Run Office Solutions (2007 System)&lt;/a&gt;.  &lt;h5&gt;Rapidly Deploy Your Solution with the .NET Framework Client Profile&lt;/h5&gt; &lt;p&gt;You can now specify the .NET Framework Client Profile as the target Framework version. This smaller version of the .NET Framework decreases the size of your solution during installation by not including all of the Framework assemblies. You can use this with your solutions for the 2007 Microsoft Office system.  &lt;p&gt;To get started, see &lt;a href="http://msdn.microsoft.com/en-us/library/3295w01c.aspx"&gt;Creating Office Solutions in Visual Studio&lt;/a&gt;.  &lt;h5&gt;Troubleshoot Installation with the Event Viewer&lt;/h5&gt; &lt;p&gt;· When you install or uninstall Visual Studio Tools for Office solutions, the Visual Studio Tools for Office runtime logs error messages that you can view by using the event viewer in Windows. You can use these messages to help resolve installation and deployment problems.  &lt;p&gt;To get started, see &lt;a href="http://msdn.microsoft.com/en-us/library/cc442816.aspx"&gt;Event Logging (2007 System)&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8870743" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/Christin+Boyd/default.aspx">Christin Boyd</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://blogs.msdn.com/vsto/archive/tags/SP1/default.aspx">SP1</category></item><item><title>What's New in VS 2008 SP1 and how the VSTO team decided what to include in a Service Pack (Christin Boyd, Mary Lee)</title><link>http://blogs.msdn.com/vsto/archive/2008/07/11/what-s-new-in-vs-2008-sp1-and-how-the-vsto-team-decided-what-to-include-in-a-service-pack-christin-boyd-mary-lee.aspx</link><pubDate>Fri, 11 Jul 2008 22:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8721905</guid><dc:creator>VSTO Team</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/vsto/comments/8721905.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=8721905</wfw:commentRss><description>&lt;p&gt;Updated August, 2008&lt;/p&gt; &lt;p&gt;I'd like to give you some insight into how we decide what goes into a Service Pack for Microsoft Visual Studio.&amp;nbsp; I'm speaking specifically about how the VSTO team built SP1;&amp;nbsp; most other groups within Visual Studio use the same process.&amp;nbsp; &lt;/p&gt; &lt;p&gt;We take a few different approaches including:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Clearly defining the scope and purpose of the Service Pack  &lt;li&gt;Prioritizing Critical Bugs in our bug database in a large meeting room with many stakeholders and passionate debates  &lt;li&gt;Writing &lt;strong&gt;scenarios&lt;/strong&gt; from the perspective of the user in the form of "I can develop a ..."  &lt;li&gt;Daily triage of all bugs, including bugs that are entered by customers through &lt;a href="http://connect.microsoft.com/visualstudio" target="_blank" mce_href="http://connect.microsoft.com/visualstudio"&gt;Connect&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;In the last few months of product stabilization (which means the last few months before we shipped VS 2008), we make tough decisions to postpone some bugs to the Service Pack (SP).&amp;nbsp; At some point around RTM, we schedule meetings to start prioritizing bugs for the SP.&amp;nbsp; &lt;/p&gt; &lt;p&gt;The Visual Studio division is split into about a dozen Product Units, of which VSTO is a Product Unit.&amp;nbsp; Twenty people from the VSTO unit met to prioritize bugs for the SP.&amp;nbsp; We voiced opinions, quoted customers, demonstrated the bugs, and threw around cost estimates such as "Richard could fix it in three or four days"&amp;nbsp; "No way, that is at least an 8 day work item and the workaround is straight forward!"&amp;nbsp; Debates were often passionate because we are proud of our work, and care deeply about fixing any problems.&amp;nbsp; We had three separate meetings over the course of a month to enable teams to refine their cost estimates and further research solutions.&amp;nbsp; We prioritize on a couple of factors:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Severity:&amp;nbsp; meaning impact to users judged by asking is there a workaround, does it leave the project in an unstable state, or in the worst case does something crash.  &lt;li&gt;Priority:&amp;nbsp; meaning does it impact a core &lt;strong&gt;scenario&lt;/strong&gt;, do customers use this feature often, is it a regression from a previous release.  &lt;li&gt;Cost:&amp;nbsp; how long will it take to fix it and test the fix.  &lt;li&gt;Dependencies:&amp;nbsp; if it requires code changes in Office or the .NET Framework, we would need to negotiate with those teams and their Service Pack teams.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The second way we prioritize and document our Service Pack plans is to write scenarios.&amp;nbsp; We hear feedback from you describing what you want to accomplish with our tools.&amp;nbsp; So we take that feedback and write our feature descriptions using the first-person voice of the customer.&amp;nbsp; We write both tasks and full end-to-end scenarios.&amp;nbsp; If there is a bug that prevents the user from accomplishing the complete scenario, then that is a high priority bug fix for a Service Pack.&amp;nbsp; For example, here are some of the scenarios that we addressed with Service Pack 1 to Visual Studio 2008:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;I can add managed controls to a Word document by using an application-level add-in.(including Windows Forms controls and VSTO controls in the Microsoft.Office.Tools.Word namespace)  &lt;li&gt;I can add managed controls to an Excel Workbook by using an application-level add-in.(including Windows Forms controls and VSTO controls in the Microsoft.Office.Tools.Excel namespace)  &lt;li&gt;I can add a VSTO Smart Tag to a Word Document or Excel Workbook by using an application-level add-in.  &lt;li&gt;The Office 2007 solutions that I compiled with VS 2008 before SP1, continue to function properly when the SP1 update to the VSTO 3.0 Runtime is installed.  &lt;li&gt;I can use the Publish Wizard to successfully create a Click Once deployment for my Office 2007 solution.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;By writing our designs in this format, we put ourselves in the place of the customer and create test cases appropriately.&amp;nbsp; We also list the cost of each item in work-days and any risks or dependencies.&amp;nbsp; Then we're able to make informed decisions about which scenarios and how many scenarios we can fix in a given number of work-months.&amp;nbsp; After we've prioritized which features go into the SP, we then write more technical specs that define what is in scope, out of scope, assumptions, UI design diagrams, test specs, security threat models, and lists of dependencies on other teams and the locations of their code drops.&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p&gt;As of today, the VSTO team fixed 143 high severity bugs in the Office features of VS 2008.&amp;nbsp; Five of the fixed bugs were submitted by customers using &lt;a href="http://connect.microsoft.com/visualstudio" target="_blank" mce_href="http://connect.microsoft.com/visualstudio"&gt;Connect&lt;/a&gt;.&amp;nbsp; I don't have the total bug fix count for the entire division, but it is over a thousand.&amp;nbsp; We are still a few weeks from releasing the Service Pack and we hope to squeeze in a few more critical bug fixes.&amp;nbsp; &lt;/p&gt; &lt;p&gt;We focused on delivering two core scenarios &lt;strong&gt;enabling easier deployment&lt;/strong&gt; and &lt;strong&gt;enabling adding Host Controls to application-level add-ins&lt;/strong&gt;.&amp;nbsp; In the final documentation that will release with SP1, there is a section describing what's new in SP1.&amp;nbsp; Here's the text that you will see in the SP1 documentation after we ship:&lt;/p&gt; &lt;blockquote&gt; &lt;h3&gt;What's New in Visual Studio Tools for Office&lt;/h3&gt; &lt;p&gt;&lt;strong&gt;Visual Studio 2008 Service Pack 1 (SP1)&lt;/strong&gt; contains updates and new features that affect Visual Studio Tools for Office. The SP1 changes are listed separately from the Visual Studio 2008 features to help you find the latest additions quickly.&amp;nbsp; Visual Studio 2008 SP1 includes features that are designed to help you accomplish the following tasks:  &lt;h5&gt;Add Host Controls and Smart Tags to Add-in Projects&lt;/h5&gt; &lt;p&gt;You can add smart tags and host controls, such as content controls in Word 2007 and list objects in Excel 2007, to documents in application-level add-in projects. These managed host controls behave like native Office objects, but with added functionality such as events and data-binding capabilities.  &lt;p&gt;To get started, see &lt;a href="http://msdn.microsoft.com/en-us/library/x97a5x3s.aspx"&gt;Adding Controls to Office Documents at Run Time&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/ms178786.aspx"&gt;Smart Tags Overview&lt;/a&gt;. &lt;h5&gt;Deploy the Office Primary Interop Assemblies with Your Solution Installer&lt;/h5&gt; &lt;p&gt;When you use ClickOnce to deploy solutions for the 2007 Microsoft Office system, the Microsoft Office 2007 Primary Interop Assemblies are automatically selected as prerequisites. The primary interop assemblies are copied to the same deployment folder as your solution installer.  &lt;p&gt;To get started, see &lt;a href="http://msdn.microsoft.com/en-us/library/bb608608.aspx"&gt;How to: Install Prerequisites on End User Computers to Run Office Solutions (2007 System)&lt;/a&gt;. &lt;h5&gt;Rapidly Deploy Your Solution with the .NET Framework Client Profile&lt;/h5&gt; &lt;p&gt;You can now specify the .NET Framework Client Profile as the target Framework version. This smaller version of the .NET Framework decreases the size of your solution during installation by not including all of the Framework assemblies. You can use this with your solutions for the 2007 Microsoft Office system.  &lt;p&gt;To get started, see &lt;a href="http://msdn.microsoft.com/en-us/library/3295w01c.aspx"&gt;Creating Office Solutions in Visual Studio&lt;/a&gt;. &lt;h5&gt;Troubleshoot Installation with the Event Viewer&lt;/h5&gt; &lt;p&gt;· When you install or uninstall Visual Studio Tools for Office solutions, the Visual Studio Tools for Office runtime logs error messages that you can view by using the event viewer in Windows. You can use these messages to help resolve installation and deployment problems.  &lt;p&gt;To get started, see &lt;a href="http://msdn.microsoft.com/en-us/library/cc442816.aspx"&gt;Event Logging (2007 System)&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt; &lt;hr align="left" width="33%" size="1"&gt;  &lt;p&gt;I hope this explanation gives you some insight into the people on my team who build the Office features in Visual Studio and the process we use to prioritize our work.&lt;/p&gt; &lt;p&gt;-Christin Boyd, Program Manager, Microsoft.&lt;/p&gt; &lt;p&gt;-Mary Lee, programming writer, Microsoft. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8721905" 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/VSTO/default.aspx">VSTO</category><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/Christin+Boyd/default.aspx">Christin Boyd</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/Deployment/default.aspx">Deployment</category><category domain="http://blogs.msdn.com/vsto/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://blogs.msdn.com/vsto/archive/tags/SP1/default.aspx">SP1</category><category domain="http://blogs.msdn.com/vsto/archive/tags/.NET+Framework+Client+Profile/default.aspx">.NET Framework Client Profile</category></item><item><title>MSDN Code Gallery launches Localized Hotfix Pages</title><link>http://blogs.msdn.com/vsto/archive/2008/07/08/msdn-code-gallery-launches-localized-hotfix-pages.aspx</link><pubDate>Tue, 08 Jul 2008 22:03:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8709419</guid><dc:creator>VSTO Team</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/vsto/comments/8709419.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vsto/commentrss.aspx?PostID=8709419</wfw:commentRss><description>&lt;p&gt;All of the Visual Studio and .NET Framework hotfixes that are publicly available on MSDN Code Gallery are now localized in the following languages:&amp;nbsp; French, Spanish, Italian, German, Traditional and Simplified Chinese, Japanese, Korean, Russian, and Brazilian Portuguese.&lt;b&gt; &lt;/b&gt;You can browse the list of Hotfixes on MSDN CodeGallery here: &lt;a href="http://code.msdn.microsoft.com/Project/ProjectDirectory.aspx?TagName=Hotfix"&gt;http://code.msdn.microsoft.com/Project/ProjectDirectory.aspx?TagName=Hotfix&lt;/a&gt;. MSDN Code Gallery allows the community to provide feedback on our hotfixes and they can stay informed when a new hotfix is released by subscribing to the following RSS feed: &lt;a href="http://code.msdn.microsoft.com/rss.ashx?behavior=bytag&amp;amp;TagName=Hotfix"&gt;http://code.msdn.microsoft.com/rss.ashx?behavior=bytag&amp;amp;TagName=Hotfix&lt;/a&gt;.&amp;nbsp; You can customize your RSS feed by adding additional tags, such as “Visual Studio 2008.”&amp;nbsp; The Hotfixes will not necessarily be tagged with “VSTO” if they pertain to Office development because that is not part of the Hotfix taxonomy of tags.&amp;nbsp; The Hotfixes are usually just tagged with the version of Visual Studio or the version of the .NET Framework, and often not tagged with the sub-part of the feature within VS.  &lt;p&gt;Below, we’ve highlighted how the translation options appear in each hotfix resource page.&amp;nbsp; When a community member selects a language, it will take them to a resource page where they can read the localized KB article content and details for the hotfix they’ve selected.&amp;nbsp; The full description of the Hotfix is documented in a Knowledge Base (KB) article on the Help and Support site.&amp;nbsp; The KB article and the Hotfix download pages are cross referenced and circled in red.&amp;nbsp; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/MSDNCodeGallerylaunchesLocalizedHotfixPa_A945/LocalizedHotfix_English_red_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="168" alt="LocalizedHotfix_English_red" src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/MSDNCodeGallerylaunchesLocalizedHotfixPa_A945/LocalizedHotfix_English_red_thumb.jpg" width="244" border="0"&gt;&lt;/a&gt;  &lt;p&gt;Below you can see the same page in Simplified Chinese, with the link to the KB article circled in red:  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/MSDNCodeGallerylaunchesLocalizedHotfixPa_A945/LocalizedHotfix_SimpChine_red_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="149" alt="LocalizedHotfix_SimpChine_red" src="http://blogs.msdn.com/blogfiles/vsto/WindowsLiveWriter/MSDNCodeGallerylaunchesLocalizedHotfixPa_A945/LocalizedHotfix_SimpChine_red_thumb.jpg" width="244" border="0"&gt;&lt;/a&gt;  &lt;p&gt;-Christin Boyd, Program Manager, Visual Studio &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8709419" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vsto/archive/tags/Resources/default.aspx">Resources</category><category domain="http://blogs.msdn.com/vsto/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/vsto/archive/tags/Christin+Boyd/default.aspx">Christin Boyd</category><category domain="http://blogs.msdn.com/vsto/archive/tags/sample/default.aspx">sample</category></item></channel></rss>