<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.summsoft.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/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><channel><title>Summit Software</title><link>http://www.summsoft.com/blogs/</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>Tools to Automate VSTA 2 Integrations:  AutoProxyGen and Templates</title><link>http://www.summsoft.com/blogs/melodys_vsta_blog/archive/2008/10/01/Tools-to-Automate-VSTA-2-Integrations-AutoProxyGen-and-Templates.aspx</link><pubDate>Wed, 01 Oct 2008 19:48:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:1361</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>&lt;div&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;
&lt;p&gt;We have new downloads up including templates and a new tool AutoProxyGen which automates ProxyGen and can be used in build events.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.summsoft.com/media/p/1355.aspx"&gt;AutoProxyGen&lt;/a&gt;:&lt;br /&gt;This tool automates the process of using ProxyGen and can be used as a build event.&amp;nbsp; AutoProxyGen includes workarounds for ProxyGen bugs including automatically excluding structs and ensuring that items which are not marked as excluded are not excluded.&amp;nbsp; AutoProxyGen includes a basic VSTA integration which can be used for further customizations, such as examining the host for custom attributes to specify entry points and excluded items and correcting the inheritance error which prevents COM hosts from exposing events.&lt;/p&gt;
&lt;p&gt;A sample add-in demonstrating how to correct the inheritance error for COM hosts is included, other add-ins are available upon request.&lt;/p&gt;
&lt;p&gt;Video:&amp;nbsp; &lt;a href="http://www.summsoft.com/blogs/videos/archive/2008/10/01/AutoProxyGen_3A00_--From-ProxyGen-to-AutoProxyGen.aspx"&gt;From ProxyGen to AutoProxyGen&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.summsoft.com/media/p/1356.aspx"&gt;Templates&lt;/a&gt;:&lt;br /&gt;Templates to help automate VSTA v 2.0 integrations are now available.&amp;nbsp; Run the included setup file to move the templates to the Visual Studio 2008 template caches (may need to restart Visual Studio for templates to work).&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Proxy Project- includes all files and post build event necessary to place the proxy assembly in the GAC and rebuild the VSTA pipeline.&amp;nbsp; C# only.&amp;nbsp; (may want to create a new or use existing key.snk file)&lt;br /&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Host Item Provider- Use Find&amp;amp;Replace to replace &amp;quot;YourEntryPointType&amp;quot; with the type of the host entry point.&amp;nbsp; Includes necessary references. Item template.&amp;nbsp; VB &amp;amp; C#&lt;br /&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;VstaRunTimeIntegration- Update the variables in the &amp;quot;Variables to update&amp;quot; section including the host entry point type, start-up class for add-ins, and the folder in %MyDocuments% to find add-ins in.&amp;nbsp; Includes necessary references. Item Template.&amp;nbsp; VB &amp;amp; C#&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1361" width="1" height="1"&gt;</description><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/addin/default.aspx">addin</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/ProxyGen/default.aspx">ProxyGen</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/AutoProxyGen/default.aspx">AutoProxyGen</category></item><item><title>Sample: Watchdog to terminate orphaned VSTA process</title><link>http://www.summsoft.com/blogs/garyvsta/archive/2008/09/26/sample-watchdog-to-terminate-orphaned-vsta-process.aspx</link><pubDate>Fri, 26 Sep 2008 18:43:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:1345</guid><dc:creator>Gary</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;span style="font-size:x-small;color:#000080;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#000080;"&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:black;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;This is an &lt;a href="http://www.summsoft.com/media/p/1292.aspx"&gt;IPH sample&lt;/a&gt;, &lt;b&gt;IPHTerminateOrphanedVSTA.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color:navy;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;It uses a global mutext to start one, and only one, simple observer thread. The observer thread continues to execute while the vsta&lt;/span&gt;&lt;span style="color:black;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt; &lt;/span&gt;&lt;span style="color:navy;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;process is alive, whether or not a project is open..&lt;/span&gt;&lt;span style="color:black;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt; &lt;/span&gt;&lt;span style="color:navy;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;The observer thread periodically checks for existence of the hostProcess. If there is no hostProcess running, and there is an orphaned vsta.exe, the observer thread shuts down the orphan vsta process before exiting. The IPH allows opening the VSTA as a standlone IDE (observer thread is not started). &lt;/span&gt;&lt;/span&gt;&lt;span style="color:black;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#000080;"&gt;&lt;a href="http://www.summsoft.com/media/p/1292.aspx"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1345" width="1" height="1"&gt;</description></item><item><title>Visit Summit at PDC 2008 Booth #518</title><link>http://www.summsoft.com/blogs/davesblog/archive/2008/09/17/visit-summit-at-pdc-2008.aspx</link><pubDate>Wed, 17 Sep 2008 16:54:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:1315</guid><dc:creator>dschneid</dc:creator><slash:comments>0</slash:comments><description>&lt;p style="padding-left:180px;"&gt;&lt;img src="http://www.summsoft.com/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.21.05/Exhibitor_5F00_PDC2008_5F00_Web_5F00_Button.gif" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Summit Software is pleased to announce that we will be exhibiting at PDC2008.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;We invite you to visit us during your visit there and learn about VSTA 2.0 and how integration of VSTA 2.0 with your application can lead to competitive advantage.&lt;/p&gt;
&lt;p&gt;Our team will be ready to meet with you to discuss your VSTA plans, and we would encourage you to schedule some time to disucss VSTA.&lt;/p&gt;
&lt;p&gt;Please send an email to me, &lt;a href="mailto:dschneid@summsoft.com"&gt;dschneid@summsoft.com&lt;/a&gt;, and we can schedule a 20 minute block for a meeting to disucss your needs.&lt;/p&gt;
&lt;p&gt;We look forward to seeing you at PDC2008.&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:180px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1315" width="1" height="1"&gt;</description><category domain="http://www.summsoft.com/blogs/davesblog/archive/tags/VSTA+2.0/default.aspx">VSTA 2.0</category><category domain="http://www.summsoft.com/blogs/davesblog/archive/tags/PDC2008/default.aspx">PDC2008</category></item><item><title>Solidworks 2009 Shipping with VSTA</title><link>http://www.summsoft.com/blogs/davesblog/archive/2008/09/12/solidworks-2009-shipping-with-vsta.aspx</link><pubDate>Fri, 12 Sep 2008 14:09:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:1301</guid><dc:creator>dschneid</dc:creator><slash:comments>0</slash:comments><description>&lt;DIV class=entryviewbody&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:small;FONT-FAMILY:Calibri;"&gt;Solidworks Corporation has integrated Microsoft Visual Studio Tools for Applications (VSTA) into its Solidworks 2009 product line as a&amp;nbsp;significant enhancement to the Solidworks API.&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;O:p&gt;&lt;SPAN style="FONT-SIZE:small;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/O:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:small;FONT-FAMILY:Calibri;"&gt;Solidworks is a 3D mechanical CAD product used by product designers and mechanical engineers worldwide.&amp;nbsp; To learn more about the features and functionality of Solidworks 2009, please see the &lt;/SPAN&gt;&lt;A href="http://www.solidworkslaunch.com/"&gt;&lt;SPAN style="FONT-SIZE:small;COLOR:#800080;FONT-FAMILY:Calibri;"&gt;Solidworks 2009&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="FONT-SIZE:small;FONT-FAMILY:Calibri;"&gt; website.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;O:p&gt;&lt;SPAN style="FONT-SIZE:small;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/O:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:small;FONT-FAMILY:Calibri;"&gt;Summit is pleased that Solidworks 2009 users now have the ability to leverage VSTA for Macro Recording and additional customization. &lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1301" width="1" height="1"&gt;</description><category domain="http://www.summsoft.com/blogs/davesblog/archive/tags/VSTA/default.aspx">VSTA</category></item><item><title>New EventSample for VSTA v 2 (VB.Net)</title><link>http://www.summsoft.com/blogs/melodys_vsta_blog/archive/2008/09/02/New-EventSample-for-VSTA-v-2.aspx</link><pubDate>Tue, 02 Sep 2008 17:43:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:1259</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>&lt;h3&gt;Overview:&lt;/h3&gt;
&lt;p class="MsoNormal"&gt;This sample is intended to expose several common tasks in VSTA, including: declaring an object, using and manipulating a form, and handling form events and event args.&lt;span&gt;&amp;nbsp; &lt;/span&gt;This sample contains a very simple object, form, application with a basic VSTA integration, and an add-in.&lt;span&gt;&amp;nbsp; &lt;/span&gt;An EventHelper is used to prevent any errors in add-in event handling.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;To run the sample, extract the files, open and build the EventSample solution, then run the setup file included (double click or use the command &amp;ldquo;cscript SetupEventSample.js&amp;rdquo; from a command prompt).&lt;span&gt;&amp;nbsp; &lt;/span&gt;Next, open and build the add-in solution included in the Samples folder.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Run the EventSample application, which should now automatically find and load the sample add-in included.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;The EventSample application records button clicks and input from a text box in a list box.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The sample add-in responds to mouse clicks on any of the buttons on the form, to adding input through the add button, clearing the display, and selecting the Open button.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Event handling for the Save and Close buttons in the add-in is not implemented.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Included in this sample:&lt;/p&gt;
&lt;p&gt;
&lt;table cellpadding="0" cellspacing="0" style="border-collapse:collapse;" class="MsoNormalTable"&gt;

&lt;tr style="height:0.2in;"&gt;
&lt;td style="padding-right:5.4pt;padding-left:5.4pt;padding-bottom:0in;width:106.3pt;padding-top:0in;height:0.2in;border:black 1pt solid;"&gt;
&lt;p class="MsoNormal" align="center"&gt;&lt;b&gt;Item&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:black 1pt solid;padding-right:5.4pt;border-top:black 1pt solid;padding-left:5.4pt;padding-bottom:0in;border-left:medium none;width:372.5pt;padding-top:0in;border-bottom:black 1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal" align="center"&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:0.2in;"&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:1pt solid;width:106.3pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;MainForm&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:medium none;width:372.5pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;Main user form and empty code class.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:0.2in;"&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:1pt solid;width:106.3pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;Program&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:medium none;width:372.5pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;Starting point in the host application.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:0.2in;"&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:1pt solid;width:106.3pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;MainApplication&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:medium none;width:372.5pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;Main application class.&lt;span&gt;&amp;nbsp; &lt;/span&gt;All application specific code is here.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:0.2in;"&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:1pt solid;width:106.3pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;MainObject&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:medium none;width:372.5pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;Main object used by the MainApplication class.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Consists of a string.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:0.2in;"&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:1pt solid;width:106.3pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;EventArgs&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:medium none;width:372.5pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;Contains class definitions for custom event used by the MainApplication.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:0.2in;"&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:1pt solid;width:106.3pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;EventHelper&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:medium none;width:372.5pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;Class taken from ShapeApp samples to manage events from the host application and add-ins.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:0.2in;"&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:1pt solid;width:106.3pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;VstaRunTimeIntegration&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:medium none;width:372.5pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;Class based on the ShapeApp samples which uses the VSTA pipeline to load and manage add-ins.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:0.2in;"&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:1pt solid;width:106.3pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;HostItemProvider&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:medium none;width:372.5pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;Class based on the ShapeApp samples which allows add-ins to access the host object model.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:0.2in;"&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:1pt solid;width:106.3pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;HostTypeMapProvider&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:medium none;width:372.5pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;HTMP file generated by ProxyGen and translated into Visual Basic.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Maps the types to canocial names for translation between the host and add-ins.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:0.2in;"&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:1pt solid;width:106.3pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;EventSampleProxy&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:medium none;width:372.5pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;Proxy file generated by ProxyGen and updated to allow generic event handling.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:0.2in;"&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:1pt solid;width:106.3pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;EventSampleProject1&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:1pt solid;padding-right:5.4pt;border-top:medium none;padding-left:5.4pt;padding-bottom:0in;border-left:medium none;width:372.5pt;padding-top:0in;border-bottom:1pt solid;height:0.2in;"&gt;
&lt;p class="MsoNormal"&gt;A sample add-in that interacts with the events of the host application.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1259" width="1" height="1"&gt;</description></item><item><title>VSTA 2.0 RTM now available</title><link>http://www.summsoft.com/blogs/davesblog/archive/2008/08/27/vsta-2-0-rtm-now-available.aspx</link><pubDate>Wed, 27 Aug 2008 18:54:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:1246</guid><dc:creator>dschneid</dc:creator><slash:comments>2</slash:comments><description>&lt;P&gt;I am pleased to announce the Release to Manufacturing (RTM) of Microsoft Visual Studio Tools for Applications (VSTA) 2.0.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The VSTA 2.0 RTM bits are available from the following location:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.summsoft.com/VSTAInfReq.aspx"&gt;http://www.summsoft.com/VSTAInfReq.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;If you have an account with Summit, please use your login credentials to access the VSTA 2.0 SDK.&lt;/P&gt;
&lt;P&gt;If you have not registered with Summit, please do so to access the SDK.&lt;/P&gt;
&lt;P&gt;We look forward to working with you during your evaluation and integration of VSTA 2.0.&lt;/P&gt;
&lt;P&gt;If you have questions, please contact me directly at &lt;A href="mailto:dschneid@summsoft.com"&gt;dschneid@summsoft.com&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;David Schneid&lt;BR&gt;General Manager&lt;BR&gt;Summit Software Company&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1246" width="1" height="1"&gt;</description><category domain="http://www.summsoft.com/blogs/davesblog/archive/tags/VSTA+2.0+RTM/default.aspx">VSTA 2.0 RTM</category></item><item><title>How to Update a Host’s Folder in %My Documents% </title><link>http://www.summsoft.com/blogs/melodys_vsta_blog/archive/2008/08/25/How-to-Update-a-Host_1920_s-Folder-in-_2500_My-Documents_2500_-.aspx</link><pubDate>Mon, 25 Aug 2008 16:33:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:1237</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>&lt;font face="Arial" size="2"&gt;VSTA hosts use a host specific folder
under %My Documents% (or %Documents for Vista) for various purposes.&lt;span&gt;&amp;nbsp; &lt;/span&gt;This is where the settings file is stored and
is the default save location is for new VSTA projects for the host (unless a
different location is specified under the registry entry NewProjectLocation).&lt;span&gt; &lt;br&gt;&lt;br&gt; &lt;/span&gt;

Most configuration settings can be
updated by deleting the host context hive under the &lt;b&gt;local machine&lt;/b&gt; hive (see Note 1 registry location), then running
vsta setup for the host.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Unlike other
registry settings, to update which folder is used in %My Documents% the host
context hive under the &lt;b&gt;local user&lt;/b&gt;
hive (see Note 2 for registry location) must be deleted prior to running vsta setup
for the host, and will be populated the next time VSTA is run for the host.&lt;span&gt;&amp;nbsp; &lt;/span&gt;This context hive must be deleted if
specifying the folder under %My Documents% with either the AppName or UserFilesFolderName
registry entries.&lt;br&gt;&lt;br&gt;

The folder under %My Documents% which
will be used is determined by the UserFilesFolderName, which specifies which
folder under %My Documents% will be used (see Note 3 for examples).&lt;span&gt;&amp;nbsp; &lt;/span&gt;If no UserFilesFolderName is specified the
AppName is used, which specifies the title to appear in the VSTA IDE title bar.&lt;span&gt;&amp;nbsp; &lt;/span&gt;If no AppName is specified, the hostId is
used.&lt;span&gt;&amp;nbsp; &lt;br&gt;&lt;br&gt;&lt;/span&gt;

This host specific folder under %My
Documents% will also be the default save location for new projects unless a different
location is specified with the NewProjectLocation entry, which specifies the
absolute location of the folder which will be used&lt;span&gt;&amp;nbsp; &lt;/span&gt;(not under %My Documents%, see Note 4 for
examples).&lt;br&gt;&lt;br&gt;

Note 1-&lt;span&gt;&amp;nbsp;
&lt;/span&gt;The context registry hive under the local machine registry hive is
located at: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VSTAHost\&amp;lt;HostId&amp;gt;\9.0&lt;br&gt;&lt;br&gt;Note 2- The context registry hive under
the local user registry hive is located at:&lt;span&gt;&amp;nbsp;
&lt;/span&gt;HKEY_CURRENT_USER\Software\Microsoft\VSTAHost\&amp;lt;HostId&amp;gt;\9.0&lt;br&gt;&lt;br&gt;Note 3- The UserFilesFolderName entry specifies
which folder under %My Documents% the host will use, not an absolute path.&lt;br&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Example
good:&lt;span&gt;&amp;nbsp; &lt;/span&gt;“ShapeAppDocuments”&lt;br&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Example
bad:&lt;span&gt;&amp;nbsp; &lt;/span&gt;“C:\ShapeAppDocuments”&lt;br&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;br&gt;

Note 4- the NewProjectLocation entry specifies
an absolute folder which will be the default save location for new VSTA
projects for the host.&lt;br&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Example
good:&lt;span&gt;&amp;nbsp; &lt;/span&gt;“C:\ShapeAppDocuments”&lt;br&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Example
bad:&lt;span&gt;&amp;nbsp; &lt;/span&gt;“ShapeAppDocuments”&lt;br&gt;&lt;br&gt;For more information on host registry settings,
please refer to MSDN which now features VSTA v 2.0.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc176071.aspx"&gt;Click here to go
to the Registering a Host Application section&lt;/a&gt;.&lt;br&gt;&lt;br&gt;

This applies to VSTA 2005 (v1) and 2008
(v2), the registry hives used above are for VSTA v 2.&lt;br&gt;&lt;/font&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1237" width="1" height="1"&gt;</description></item><item><title>Proxy Versioning Options for Project Templates</title><link>http://www.summsoft.com/blogs/melodys_vsta_blog/archive/2008/08/15/Proxy-Versioning-Options-for-Project-Templates.aspx</link><pubDate>Fri, 15 Aug 2008 16:35:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:1235</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;span style="font-family:Arial;font-size:x-small;"&gt;A common question is how to use versioning for the proxy assembly in add-ins.&amp;nbsp; There are basically three different options.&amp;nbsp; &lt;a href="http://www.summsoft.com/files/folders/vsta_samples/entry1236.aspx"&gt;(Download Sample)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1)&amp;nbsp;&amp;nbsp;&amp;nbsp; No Versioning:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;span style="font-family:Arial;font-size:x-small;"&gt;Only the name of the assembly is used in the project template and the first assembly in the GAC matching this name will be used.&amp;nbsp; This is how ProjectGen references the proxy in the project template file.&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;span style="font-family:Arial;font-size:x-small;"&gt;Pros:&amp;nbsp; Will load any proxy present.&lt;br /&gt;Cons:&amp;nbsp; No control over which version of the proxy is loaded.&amp;nbsp; When the intended version is present, but not first in the GAC, it will not load and the project may not build.&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span style="font-family:Arial;font-size:x-small;"&gt;&lt;br /&gt;2)&amp;nbsp;&amp;nbsp;&amp;nbsp; Tight Versioning:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;span style="font-family:Arial;font-size:x-small;"&gt;The name and version of the proxy assembly is used in the project template with the option specific version set to true.&lt;br /&gt;&lt;br /&gt;Pros:&amp;nbsp; Correct version will always load if present.&amp;nbsp; &lt;br /&gt;Cons:&amp;nbsp; If correct version is not present, but a compatible version is, the project will not load the compatible version and build.&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span style="font-family:Arial;font-size:x-small;"&gt;&lt;br /&gt;3)&amp;nbsp;&amp;nbsp;&amp;nbsp; Loose Versioning:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;span style="font-family:Arial;font-size:x-small;"&gt;A name and version of the proxy assembly is used in the project template with the option specific version set to false or not set.&lt;br /&gt;&lt;br /&gt;Pros:&amp;nbsp; Correct version will load if present.&amp;nbsp; If correct version is not present the first assembly with a matching name in the GAC will load.&lt;br /&gt;Cons:&amp;nbsp; No control over which version is loaded if the correct version is not present.&amp;nbsp; &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span style="font-family:Arial;font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;span style="font-family:Arial;font-size:x-small;"&gt;Here&amp;rsquo;s some examples which illustrate the differences in versioning.&lt;br /&gt;&lt;br /&gt;Assumption- three proxies are in the GAC corresponding to three different versions of the same host:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="font-family:Arial;font-size:x-small;"&gt;ShapeAppCSharp Version 1.0.0.0 from VSTA v 1 SDK sample.&amp;nbsp; Using Host v 1.0.0.0.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:Arial;font-size:x-small;"&gt;ShapeAppCSharp Version 2.0.0.0 from VSTA v 2 SDK sample with version of proxy assembly changed to 2.0.0.0.&amp;nbsp; Using Host v 2.0.0.0.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:Arial;font-size:x-small;"&gt;ShapeAppCSharp Version 2.1.0.0 from VSTA v 2 SDK sample with a method added to the Application class (Application.DrawingHasShapes) and the version of the proxy assembly changed to 2.1.0.0.&amp;nbsp; Using Host v 2.1.0.0.&amp;nbsp; The proxy v 2.1.0.0 is compatible v 2.0.0.0 projects.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="font-family:Arial;font-size:x-small;"&gt;&lt;br /&gt;&lt;b&gt;Test 1:&lt;/b&gt;&amp;nbsp; Open a VSTA v 2 project for Host v 2.1.0.0 using the method added (Application.DrawingHasShapes) with the above assemblies in the GAC.&lt;br /&gt;&lt;br /&gt;No Versioning-&amp;nbsp; Fail. Project will load the ShapeAppCSharp Version 1.0.0.0 project and not build because this assembly is for the v 1.0.0.0 host which uses VSTA v 1.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Tight Versioning-&amp;nbsp; Pass.&amp;nbsp; Project will load the correct proxy.&lt;br /&gt;&lt;br /&gt;Loose Versioning-&amp;nbsp; Pass.&amp;nbsp; Project will load the correct proxy.&amp;nbsp; *Note: if the host which loads this add-in is v 2.0.0.0 the add-in will fail during execution because the method added to v 2.1.0.0 is not present in the host.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Test 2:&amp;nbsp;&lt;/b&gt; Open a VSTA v 2 project for Host v 2.0.0.0 with only the v 2.1.0.0 assemblies in the GAC.&lt;br /&gt;&lt;br /&gt;No Versioning-&amp;nbsp; Pass. Only proxy present will load and the project will build because the v 2.1.0.0 proxy is compatible with v 2.0.0.0 projects.&amp;nbsp; *Note: if the v1 proxy was still in the GAC this may fail.&lt;br /&gt;&lt;br /&gt;Tight Versioning-&amp;nbsp; Fail.&amp;nbsp; The specific version of the proxy is not present, so no proxy assembly will be loaded.&amp;nbsp; *Note by setting the Specific Reference attribute to false in the properties window (in the Project Explorer) the project will change to Loose Versioning and pass.&lt;br /&gt;&lt;br /&gt;Loose Versioning-&amp;nbsp; Pass.&amp;nbsp; The compatible v 2.0.0.0 will load.&amp;nbsp; *Note: if the v1 proxy was still in the GAC this may fail.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;We offer a sample which shows how to implement Tight Versioning- &lt;a href="http://www.summsoft.com/files/folders/vsta_samples/entry1236.aspx"&gt;click here&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1235" width="1" height="1"&gt;</description><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/Proxy/default.aspx">Proxy</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/Project+Template/default.aspx">Project Template</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/Versioning/default.aspx">Versioning</category></item><item><title>Updating Project References Programmatically</title><link>http://www.summsoft.com/blogs/melodys_vsta_blog/archive/2008/08/13/Updating-Project-References-Programmatically.aspx</link><pubDate>Wed, 13 Aug 2008 19:10:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:1232</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoNormalCxSpFirst" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;A host, or helper application, can programmatically
update a reference in a project.&lt;span&gt;&amp;nbsp; &lt;/span&gt;One
instance where this is useful is when you want to ensure that a specific
version of a proxy reference is used.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Below is an updated version of the
OpenMacroProject from the ShapeAppMacroRecordingCSharp sample which updates the
reference in the project to use second version of the ShapeAppCSharpProxy.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The proj file is updated prior to loading to
avoid any messages indicating that the project file has been updated and needs
to be reloaded.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;private&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; OpenMacroProject()&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;// See if the
project is already loaded.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt;
(EnvDTE.&lt;span style="color:#2b91af;"&gt;Project&lt;/span&gt; currProject &lt;span style="color:blue;"&gt;in&lt;/span&gt; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.dte.Solution.Projects)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;
projPath = currProject.FileName;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;.Compare(projPath,&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;VstaDesignTimeIntegration&lt;/span&gt;.MacroProjectFilePath,&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;StringComparison&lt;/span&gt;.OrdinalIgnoreCase) == 0)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.macroProject
= currProject;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;// Set
the post build-event to install the Macro AddIn assembly into the &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;// user&amp;#39;s
Documents folder i.e. &amp;quot;...\Documents\ShapeAppCSharp\MacroAddIns&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.macroProject.Properties.Item(&lt;span style="color:#a31515;"&gt;&amp;quot;PostBuildEvent&amp;quot;&lt;/span&gt;).Value = &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;cscript
\&amp;quot;$(ProjectDir)InstallAddIn.js\&amp;quot; \&amp;quot;$(TargetPath)\&amp;quot;
\&amp;quot;ShapeAppCSharp\\MacroAddIns\&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;RegisterAsDebugHost();&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//SUMMIT- update
the reference &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//namespace
for the project file&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;XNamespace&lt;/span&gt;
ns = &lt;span style="color:#a31515;"&gt;&amp;quot;http://schemas.microsoft.com/developer/msbuild/2003&amp;quot;&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//load the
proj file&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;XDocument&lt;/span&gt;
projDoc = &lt;span style="color:#2b91af;"&gt;XDocument&lt;/span&gt;.Load(&lt;span style="color:#2b91af;"&gt;VstaDesignTimeIntegration&lt;/span&gt;.MacroProjectFilePath);&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//get the
node with the reference to update&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;var&lt;/span&gt;
oldRef = (&lt;span style="color:blue;"&gt;from&lt;/span&gt; refs &lt;span style="color:blue;"&gt;in&lt;/span&gt;
projDoc.DescendantNodes()&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;where&lt;/span&gt;
refs.ToString().StartsWith(&lt;span style="color:#a31515;"&gt;&amp;quot;&amp;lt;Reference&amp;quot;&lt;/span&gt;)
&amp;amp;&amp;amp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;refs.ToString().Contains(&lt;span style="color:#a31515;"&gt;&amp;quot;ShapeAppCSharpProxy&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;select&lt;/span&gt;
refs).First();&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//create the
new version specific reference&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;XElement&lt;/span&gt;
updRef = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;XElement&lt;/span&gt;(ns
+ &lt;span style="color:#a31515;"&gt;&amp;quot;Reference&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;new&lt;/span&gt;
&lt;span style="color:#2b91af;"&gt;XAttribute&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Include&amp;quot;&lt;/span&gt;,
&lt;span style="color:#a31515;"&gt;&amp;quot;ShapeAppCSharpProxy, Version=2.0.0.0&amp;quot;&lt;/span&gt;),
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;new&lt;/span&gt;
&lt;span style="color:#2b91af;"&gt;XElement&lt;/span&gt;(ns + &lt;span style="color:#a31515;"&gt;&amp;quot;SpecificVersion&amp;quot;&lt;/span&gt;,
&lt;span style="color:#a31515;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;));&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//update the
node&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;oldRef code.ReplaceWith(updRef);&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//save the
document&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;projDoc.Save(&lt;span style="color:#2b91af;"&gt;VstaDesignTimeIntegration&lt;/span&gt;.MacroProjectFilePath);&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;// Load the
project as it is not currently loaded&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.macroProject
= &lt;span style="color:blue;"&gt;this&lt;/span&gt;.dte.Solution.AddFromFile(&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;VstaDesignTimeIntegration&lt;/span&gt;.MacroProjectFilePath,
&lt;span style="color:blue;"&gt;true&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;RegisterAsDebugHost();&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
To use this code to correct the side by side evaluation issue (both versions
of the ShapeAppCSharp samples use the ShapeAppCSharpProxy) be sure to version
the proxy assembly and add the above code.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1232" width="1" height="1"&gt;</description><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/Proxy/default.aspx">Proxy</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/Reference/default.aspx">Reference</category></item><item><title>Bit Lock During Out of Process Debugging Workaround</title><link>http://www.summsoft.com/blogs/melodys_vsta_blog/archive/2008/08/04/Bit-Lock-During-Out-of-Process-Debugging-Workaround.aspx</link><pubDate>Mon, 04 Aug 2008 14:13:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:1212</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>
&lt;p class="MsoNormal"&gt;During out of process debugging occasionally the pdb file
becomes locked and prevents builds from finishing successfully.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The &lt;span&gt;VstaDesignTimeIntegration&lt;/span&gt;.&lt;span&gt;DeleteMacroPdb&lt;/span&gt; method,
called in OnBuildBegin, is suppose to ensure that this does not happen by cycling
until the bits are no longer locked, then deleting them.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Unfortunately this does not always work and
the project can get stuck in an unbuildable state.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;a href="http://nayyeri.net/blog/file-lock-issue-in-visual-studio-when-building-a-project/"&gt;Keyvan
Nayyeri posted a workaround&lt;/a&gt; to a similar issue in add-in programming (the
dll file becoming locked) which can be applied to this.&lt;span&gt;&amp;nbsp; &lt;/span&gt;He suggests using a pre-build event to move/rename
the locked files thus clearing the way for the updated bits to be built.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;a href="http://nayyeri.net/blog/file-lock-issue-in-visual-studio-when-building-a-project/"&gt;Keyvan’s
workaround&lt;/a&gt;:&lt;br&gt;
You can add following lines of code to the pre-build event command line of your
project. &lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;if exist
"$(TargetPath).locked" del "$(TargetPath).locked"&lt;/span&gt;&lt;br&gt;
&lt;span&gt;if exist "$(TargetPath)" if
not exist "$(TargetPath).locked" move "$(TargetPath)"
"$(TargetPath).locked"&lt;/span&gt; &lt;/p&gt;

&lt;p class="MsoListParagraphCxSpFirst" style="margin-left:0in;"&gt;Ways
to apply workaround:&lt;br&gt;&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Use
the above pre-build event modified to move the pdb file instead of the dll.*&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Use
a modified version of the InstallAddIn.js file used in the post build event in
the pre-build event to move the pdb bits.*&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;In
the DeletePdb method move the locked file in the catch block (see
code below).&lt;/li&gt;&lt;/ol&gt;





&lt;p class="MsoNormal"&gt;* Keep in mind that like the post build event, the pre build
event can be added programmatically.&lt;/p&gt;

&lt;p class="MsoNormal"&gt;By using this workaround, the build will no longer fail if
the pdb bits become locked.&lt;span&gt;&amp;nbsp; &lt;/span&gt;However, if
the bits do become locked, debugging will fail.&lt;span&gt;&amp;nbsp;
&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Related blog:&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/2008/01/18/shapeappmacrorecordingcsharp-common-problems-and-workarounds.aspx"&gt;ShapeAppMacroRecordingCSharp-
common problems and workarounds&lt;/a&gt;&lt;a href="http://tempuri.org/tempuri.html"&gt; &lt;/a&gt;&lt;br&gt;
One issue with the DeletePdb bit method is that it catches only the
IOException, not the UnauthorizedAccessException which is also thrown. &lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Code for #3 In the DeletePdb method move the locked file in
the catch instead of cycling&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;private&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; DeleteMacroPdb()&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;string&lt;/span&gt;
projectPath = &lt;span&gt;Path&lt;/span&gt;.GetDirectoryName(&lt;span&gt;VstaDesignTimeIntegration&lt;/span&gt;.MacroProjectFilePath);&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;string&lt;/span&gt;[]
pdbFiles = &lt;span&gt;Directory&lt;/span&gt;.GetFiles(projectPath, &lt;span&gt;"*.pdb"&lt;/span&gt;, &lt;span&gt;SearchOption&lt;/span&gt;.AllDirectories);&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;//
Delete all PDB files for the project under \obj\.. and \bin\.. folders.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;//
If a file is locked, retry to delete that file after 100 milliseconds.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;foreach&lt;/span&gt;
(&lt;span style="color:blue;"&gt;string&lt;/span&gt; pdbFile &lt;span style="color:blue;"&gt;in&lt;/span&gt;
pdbFiles)&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;bool&lt;/span&gt; done = &lt;span style="color:blue;"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; retry = 0;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;// Retry a maximum of 5 seconds to delete the file.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;while&lt;/span&gt; (!done &amp;amp;&amp;amp; retry &amp;lt;= 50)&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span&gt;File&lt;/span&gt;.Delete(pdbFile);&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
done = &lt;span style="color:blue;"&gt;true&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span style="color:blue;"&gt;catch&lt;/span&gt; (&lt;span&gt;IOException&lt;/span&gt;
ex)&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span&gt;File&lt;/span&gt;.Delete(pdbFile+&lt;span&gt;"old"&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span&gt;File&lt;/span&gt;.Move(pdbFile, pdbFile + &lt;span&gt;"old"&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span&gt;Thread&lt;/span&gt;.Sleep(100);&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
retry++;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span style="color:blue;"&gt;catch&lt;/span&gt; (&lt;span&gt;Exception&lt;/span&gt;
ex)&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span&gt;File&lt;/span&gt;.Delete(pdbFile + &lt;span&gt;"old"&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span&gt;File&lt;/span&gt;.Move(pdbFile, pdbFile + &lt;span&gt;"old"&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span&gt;Thread&lt;/span&gt;.Sleep(100);&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
retry++;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormalCxSpMiddle" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1212" width="1" height="1"&gt;</description><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/VSTA+v+2/default.aspx">VSTA v 2</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/ShapeApp/default.aspx">ShapeApp</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/PDB/default.aspx">PDB</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/MacroRecording/default.aspx">MacroRecording</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/DeletePdb/default.aspx">DeletePdb</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/file+lock/default.aspx">file lock</category></item><item><title>Using VSTA to Create Office Documents Through XML</title><link>http://www.summsoft.com/blogs/melodys_vsta_blog/archive/2008/06/17/using-vsta-to-create-office-documents-through-xml.aspx</link><pubDate>Tue, 17 Jun 2008 17:06:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:1151</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>


&lt;p class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; With the introduction of LINQ to XML and the OpenXml
formatting of Office 2007 documents it is incredibly easy to use VSTA to import
and export data from a host application to an Office document and vice
versa.&amp;nbsp; One benefit of using OpenXml (or for Excel straight xml as well)
is that this can be performed without installing Office or using the office
API's, which allows this processing to be done on servers as well as desktops.&lt;br&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br&gt;A new sample is available showing how to export ShapeApp
shape data into Word and Excel using VSTA v 2 and taking advantage of the easy
to use LINQ to XML with Visual Basic.&lt;/p&gt;



&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;To &lt;a href="http://www.summsoft.com/files/folders/1152/download.aspx"&gt;download the sample add-ins, click here&lt;/a&gt;.&amp;nbsp; To go to the &lt;a href="http://www.summsoft.com/files/folders/vsta_samples/entry1152.aspx"&gt;download page, click here&lt;/a&gt;.&lt;br&gt;&lt;/p&gt;





&lt;hr&gt;From the Xml Office AddIn Instructions:&lt;br&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Office 2007 introduced a new storage method for Office
document.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The new documents are actually
packages- they are zip files of xml documents.&lt;span&gt;&amp;nbsp;
&lt;/span&gt;To explore one of these packages, change the extension to .zip and
explore it like any other zip file, or download &lt;a href="http://www.codeplex.com/PackageExplorer/Release/ProjectReleases.aspx?ReleaseId=4373"&gt;the
package explorer tool from CodePlex&lt;/a&gt; to explore and edit the package without
unzipping or using Office.&lt;span&gt;&amp;nbsp; &lt;/span&gt;This new
document packaging format makes it very easy to import or export data between a
host and an Office document.&lt;/p&gt;



&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Two add-ins for ShapeAppCSharp (VSTA v 2) are available
demonstrating how to save ShapeApp data into a Word or Excel document.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The SaveToWord add-in uses the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AD0B72FB-4A1D-4C52-BDB5-7DD7E816D046&amp;amp;displaylang=en"&gt;Open
Xml Format SDK&lt;/a&gt; to add data to the main document (document.xml) of the Word package
(System.IO.Packaging could be used instead with minor modifications).&lt;span&gt;&amp;nbsp; &lt;/span&gt;The SaveToExcel add-in uses straight Xml
instead of OpenXml to get data into Excel because it is far easier to work with
straight Xml in Excel.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Excel can save
and open Xml documents without worrying about packaging.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Visual Basic was used to write both add-ins
because Visual Basic works better than C# with LINQ to XML.&lt;/p&gt;



&lt;hr&gt;From the ShapeAppCSharp_SaveToWord add-in:&lt;p class="MsoNormal"&gt;

&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:green;"&gt;'This method populates the word document with ShapeAppData&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;Public&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt; SetMainDocumentContent(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt;
part &lt;span style="color:blue;"&gt;As&lt;/span&gt; MainDocumentPart)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Const&lt;/span&gt; name &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String&lt;/span&gt; = &lt;span&gt;"Name:&lt;span&gt;&amp;nbsp; &lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Const&lt;/span&gt; size &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String&lt;/span&gt; = &lt;span&gt;"Size:&lt;span&gt;&amp;nbsp; &lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Const&lt;/span&gt; loc &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String&lt;/span&gt; = &lt;span&gt;"Location:&lt;span&gt;&amp;nbsp;
&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Const&lt;/span&gt; color
&lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String&lt;/span&gt; = &lt;span&gt;"Color:&lt;span&gt;&amp;nbsp;
&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;'query the shapes
in the first drawing using LINQ to XML&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt;
docBodyData = &lt;span style="color:blue;"&gt;From&lt;/span&gt; shape &lt;span style="color:blue;"&gt;In&lt;/span&gt; &lt;span style="color:blue;"&gt;Me&lt;/span&gt;.Document.Drawings(0).Shapes
_&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Select&lt;/span&gt;
_&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:p&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:r&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:t&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;lt;%=&lt;/span&gt; name
&amp;amp; shape.Name &lt;span style="background:yellow none repeat scroll 0% 50%;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;%&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;w:t&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;w:r&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;w:p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:p&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:r&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:tab&lt;/span&gt;&lt;span&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;w:r&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:r&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:t&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;lt;%=&lt;/span&gt; size &amp;amp;
shape.Size.Height.ToString() &amp;amp; &lt;span&gt;", "&lt;/span&gt;
&amp;amp; shape.Size.Width.ToString() &lt;span style="background:yellow none repeat scroll 0% 50%;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;%&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;w:t&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;w:r&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;w:p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:p&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:r&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:tab&lt;/span&gt;&lt;span&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;w:r&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:r&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:t&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;lt;%=&lt;/span&gt; loc &amp;amp;
shape.Location.X.ToString() &amp;amp; &lt;span&gt;", "&lt;/span&gt;
&amp;amp; shape.Location.Y.ToString() &lt;span style="background:yellow none repeat scroll 0% 50%;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;%&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;w:t&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;w:r&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;w:p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:p&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:r&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:tab&lt;/span&gt;&lt;span&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;w:r&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:r&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:t&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;lt;%=&lt;/span&gt; color &amp;amp;
shape.Color.A.ToString() &amp;amp; &lt;span&gt;", "&lt;/span&gt;
&amp;amp; shape.Color.R.ToString() &amp;amp; &lt;span&gt;", "&lt;/span&gt;
&amp;amp; _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;shape.Color.B.ToString()
&amp;amp; &lt;span&gt;", "&lt;/span&gt; &amp;amp;
shape.Color.G.ToString() &lt;span style="background:yellow none repeat scroll 0% 50%;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;%&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;w:t&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;w:r&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;w:p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;w:body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;'to get the xml
stuff from word- create a new doc, add dummy data as a place holder &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;' in the format
you want to export it, then copy the xml from the document.xml part &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;' of the
package.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Remove the dummy data and
insert the LINQ query.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; docXml
= &lt;span&gt;&amp;lt;?&lt;/span&gt;&lt;span&gt;xml&lt;/span&gt;
&lt;span&gt;version&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;1.0&lt;/span&gt;&lt;span&gt;"&lt;/span&gt; &lt;span&gt;encoding&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;UTF-8&lt;/span&gt;&lt;span&gt;"&lt;/span&gt; &lt;span&gt;standalone&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;yes&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;w:document&lt;/span&gt; &lt;span&gt;xmlns:w&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;http://schemas.openxmlformats.org/wordprocessingml/2006/main&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;lt;%=&lt;/span&gt; docBodyData &lt;span style="background:yellow none repeat scroll 0% 50%;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;%&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;w:document&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;'save the xml to
the main document part of the word package&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; stream &lt;span style="color:blue;"&gt;As&lt;/span&gt; StreamWriter = &lt;span style="color:blue;"&gt;New&lt;/span&gt;
StreamWriter(part.GetStream(FileMode.Create, FileAccess.Write))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;docXml.Save(stream)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;End&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr&gt;Resources:&lt;br&gt;

&lt;p class="MsoNormal" style="margin-left:0.75in;text-indent:-0.25in;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span&gt;·&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AD0B72FB-4A1D-4C52-BDB5-7DD7E816D046&amp;amp;displaylang=en"&gt;
&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AD0B72FB-4A1D-4C52-BDB5-7DD7E816D046&amp;amp;displaylang=en"&gt;Open
Xml Format SDK&lt;/a&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.75in;text-indent:-0.25in;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span&gt;·&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;The &lt;a href="http://www.codeplex.com/PackageExplorer"&gt;PackageExplorer
tool from CodePlex&lt;/a&gt;.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Click on the
V3.0.0 RC1 link to start the download.&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.75in;text-indent:-0.25in;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span&gt;·&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;The MSDN article &lt;a href="http://msdn.microsoft.com/en-us/library/bb497758.aspx"&gt;"How to:
Create an Office Open XML Package by Using the Open XML API"&lt;/a&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.75in;text-indent:-0.25in;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span&gt;·&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;The MSN video &lt;a href="http://video.msn.com/video.aspx?vid=67c56f3c-a6a9-4b19-878d-f64b8296bfbd"&gt;“How
Do I Create Excel Spreadsheets using LINQ to XML?”&lt;/a&gt;&lt;/p&gt;

&lt;br&gt;&lt;p class="MsoNormal"&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span style="color:blue;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1151" width="1" height="1"&gt;</description><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/add-in/default.aspx">add-in</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/VSTA+v+2/default.aspx">VSTA v 2</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/Office/default.aspx">Office</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/XML/default.aspx">XML</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/OpenXml/default.aspx">OpenXml</category></item><item><title>Determining the Build Path of a Project</title><link>http://www.summsoft.com/blogs/melodys_vsta_blog/archive/2008/06/13/determining-the-build-path-of-a-project.aspx</link><pubDate>Fri, 13 Jun 2008 19:04:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:1146</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>

&lt;p class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; In seamless non-destructive debugging scenarios (macro
recording and running) the host application must keep track of the latest
version of the “macro” project assembly.&amp;nbsp; The IDE offers the user many opportunities
to change settings like the active configuration or the output path which can
make it difficult for the host to find the latest version of the assembly.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; To make it more complicated, when the advanced build
configurations are not shown the build path is dependent on the context of the
build (this mirrors Visual Studio).&lt;span&gt;&amp;nbsp;
&lt;/span&gt;Specifically, if the user starts debugging with F5, the project builds
to the debug configuration output path; however, if the user builds through the
menu the project builds to the release output path.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Very complicated.&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The good news is there are a couple of events a host can
hook into through DTE.BuildEvents which can be used to determine the build
location.&lt;span&gt;&amp;nbsp; &lt;/span&gt;These events are the
OnBuildProjConfigBegin and OnBuildProjConfigDone events (you should only need
to hook into one of these).&lt;span&gt;&amp;nbsp; &lt;/span&gt;Below is
code from a modified ShapeAppCSharp sample (this will work for VSTA v 1 and v
2) which catches these events and outputs the configuration and build path for
the macro project.&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';color:blue;"&gt;private&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; EnsureIDE()&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;{&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:blue;"&gt;this&lt;/span&gt;.dte == &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span&gt;IDTEProvider&lt;/span&gt; dteProvider = (&lt;span&gt;IDTEProvider&lt;/span&gt;)&lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;VSTADTEProviderClass&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;();&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.dte = (EnvDTE.&lt;span&gt;DTE&lt;/span&gt;)dteProvider.GetDTE(&lt;span&gt;"ShapeAppCSharp"&lt;/span&gt;,
0);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;System.Diagnostics.&lt;span&gt;Debug&lt;/span&gt;.Assert(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.dte != &lt;span style="color:blue;"&gt;null&lt;/span&gt;);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;catch&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style="color:green;"&gt;// If DTEProvider does not work, try
co-creating DTE instead.&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style="color:blue;"&gt;object&lt;/span&gt; objDTE = &lt;span style="color:blue;"&gt;new&lt;/span&gt;
&lt;span&gt;DTE&lt;/span&gt;();&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.dte = (EnvDTE.&lt;span&gt;DTE&lt;/span&gt;)objDTE;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;}&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;// Save a copy of the event sync locations so they don't
get&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;// garbage collected.&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.buildEvents = dte.Events.BuildEvents;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.solutionEvents = dte.Events.SolutionEvents;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.dteEvents = dte.Events.DTEEvents;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.buildEvents.OnBuildDone += &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;EnvDTE.&lt;span&gt;_dispBuildEvents_OnBuildDoneEventHandler&lt;/span&gt;(BuildEvents_OnBuildDone);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.solutionEvents.AfterClosing += &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;EnvDTE.&lt;span&gt;_dispSolutionEvents_AfterClosingEventHandler&lt;/span&gt;(solutionEvents_AfterClosi&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;ng);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.dteEvents.OnBeginShutdown
+= &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;EnvDTE.&lt;span&gt;_dispDTEEvents_OnBeginShutdownEventHandler&lt;/span&gt;(dteEvents_OnBeginShutdown);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.buildEvents.OnBuildProjConfigBegin += &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;EnvDTE.&lt;span&gt;_dispBuildEvents_OnBuildProjConfigBeginEventHandler&lt;/span&gt;(buildEvents_OnBuil&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;dProjConfigBegin);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.buildEvents.OnBuildProjConfigDone += &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;EnvDTE.&lt;span&gt;_dispBuildEvents_OnBuildProjConfigDoneEventHandler&lt;/span&gt;(buildEvents_OnBuild&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;ProjConfigDone);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;}&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';color:blue;"&gt;void&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;
buildEvents_OnBuildProjConfigDone(&lt;span style="color:blue;"&gt;string&lt;/span&gt;
Project, &lt;span style="color:blue;"&gt;string&lt;/span&gt; ProjectConfig, &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';color:blue;"&gt;string&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt; Platform, &lt;span style="color:blue;"&gt;string&lt;/span&gt; SolutionConfig, &lt;span style="color:blue;"&gt;bool&lt;/span&gt;
Success)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;{&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;System.Diagnostics.&lt;span&gt;Debug&lt;/span&gt;.Write(&lt;span&gt;"\n\n Try OnBuildProjconfigDone"&lt;/span&gt;);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;System.Diagnostics.&lt;span&gt;Debug&lt;/span&gt;.Write(&lt;span&gt;"\n\t ProjectConfig "&lt;/span&gt; + ProjectConfig);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;System.Diagnostics.&lt;span&gt;Debug&lt;/span&gt;.Write(&lt;span&gt;"\n\t SolutionConfig "&lt;/span&gt; +
SolutionConfig);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;GetAssemblyPath(macroProject);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;}&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';color:blue;"&gt;void&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;
buildEvents_OnBuildProjConfigBegin(&lt;span style="color:blue;"&gt;string&lt;/span&gt;
Project, &lt;span style="color:blue;"&gt;string&lt;/span&gt; ProjectConfig,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';color:blue;"&gt;string&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt; Platform, &lt;span style="color:blue;"&gt;string&lt;/span&gt; SolutionConfig)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;{&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;System.Diagnostics.&lt;span&gt;Debug&lt;/span&gt;.Write(&lt;span&gt;"\n\n Try OnBuildProjConfigBegin"&lt;/span&gt;);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;System.Diagnostics.&lt;span&gt;Debug&lt;/span&gt;.Write(&lt;span&gt;"\n\t ProjectConfig "&lt;/span&gt; + ProjectConfig);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;System.Diagnostics.&lt;span&gt;Debug&lt;/span&gt;.Write(&lt;span&gt;"\n\t SolutionConfig "&lt;/span&gt; +
SolutionConfig);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;GetAssemblyPath(macroProject);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;}&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';color:blue;"&gt;static&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; GetAssemblyPath(EnvDTE.&lt;span&gt;Project&lt;/span&gt; vsProject)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;{&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; fullPath = vsProject.Properties.Item(&lt;span&gt;"FullPath"&lt;/span&gt;).Value.ToString();&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; outputPath = &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;vsProject.ConfigurationManager.ActiveConfiguration.Properties.Item(&lt;span&gt;"OutputPat&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;h"&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;).Value.ToString();&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; outputDir = &lt;span&gt;Path&lt;/span&gt;.Combine(fullPath,
outputPath);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; outputFileName = &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;vsProject.Properties.Item(&lt;span&gt;"OutputFileName"&lt;/span&gt;).Value.ToString();&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; assemblyPath = &lt;span&gt;Path&lt;/span&gt;.Combine(outputDir,
outputFileName);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;System.Diagnostics.&lt;span&gt;Debug&lt;/span&gt;.Write(&lt;span&gt;"\n\n Try #"&lt;/span&gt;);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;System.Diagnostics.&lt;span&gt;Debug&lt;/span&gt;.Write(&lt;span&gt;"\n ActiveConfig:&lt;span&gt;&amp;nbsp;
&lt;/span&gt;"&lt;/span&gt; + &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;vsProject.ConfigurationManager.ActiveConfiguration.ConfigurationName);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;System.Diagnostics.&lt;span&gt;Debug&lt;/span&gt;.Write(&lt;span&gt;"\n fullPath: "&lt;/span&gt; + fullPath);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;System.Diagnostics.&lt;span&gt;Debug&lt;/span&gt;.Write(&lt;span&gt;"\n outputPath: "&lt;/span&gt; + outputPath);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;System.Diagnostics.&lt;span&gt;Debug&lt;/span&gt;.Write(&lt;span&gt;"\n outputDir: "&lt;/span&gt; + outputDir);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;System.Diagnostics.&lt;span&gt;Debug&lt;/span&gt;.Write(&lt;span&gt;"\n outputFileName: "&lt;/span&gt; + outputFileName);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;System.Diagnostics.&lt;span&gt;Debug&lt;/span&gt;.Write(&lt;span&gt;"\n assemblyPath: "&lt;/span&gt; + assemblyPath);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; assemblyPath;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;}&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1146" width="1" height="1"&gt;</description><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/VSTA+1/default.aspx">VSTA 1</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/VSTA+v+2/default.aspx">VSTA v 2</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/visual+studio/default.aspx">visual studio</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/VSTA+2/default.aspx">VSTA 2</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/macro/default.aspx">macro</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/project+build+path/default.aspx">project build path</category></item><item><title>ProjectGen Gotcha:  Updating the Host Item Name when using a Project Descriptor File as Input</title><link>http://www.summsoft.com/blogs/melodys_vsta_blog/archive/2008/06/12/projectgen-gotcha-updating-the-host-item-name-when-using-a-project-descriptor-file-as-input.aspx</link><pubDate>Thu, 12 Jun 2008 15:48:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:1145</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>

&lt;p class="MsoNormal"&gt;On the third screen of ProjectGen there is an item to fill
in titled “Host item name”.&lt;span&gt;&amp;nbsp; &lt;/span&gt;This item is
used in two places in the project descriptor file and three places in projects
based off the template:&lt;/p&gt;

&lt;table class="MsoNormalTable" style="border:medium none;margin-left:0.5in;border-collapse:collapse;" cellpadding="0" cellspacing="0"&gt;
 &lt;tr&gt;
  &lt;td style="border:1pt solid black;padding:0in 5.4pt;width:221.5pt;"&gt;
  &lt;p class="MsoNormal" style="margin-bottom:0.0001pt;text-align:center;line-height:normal;" align="center"&gt;&lt;b&gt;Project
  template descriptor file:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="border-style:solid solid solid none;border-color:black black black -moz-use-text-color;border-width:1pt 1pt 1pt medium;padding:0in 5.4pt;width:221.3pt;"&gt;
  &lt;p class="MsoListParagraph" style="margin:0in 0in 0.0001pt;text-align:center;line-height:normal;" align="center"&gt;&lt;b&gt;Projects based off the template:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td rowspan="2" style="border-style:none solid solid;border-color:-moz-use-text-color black black;border-width:medium 1pt 1pt;padding:0in 5.4pt;width:221.5pt;"&gt;
  &lt;p class="MsoListParagraphCxSpFirst" style="margin:0in 0in 0.0001pt;line-height:normal;"&gt;Host Item Name&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="border-style:none solid solid none;border-color:-moz-use-text-color black black -moz-use-text-color;border-width:medium 1pt 1pt medium;padding:0in 5.4pt;width:221.3pt;"&gt;
  &lt;p class="MsoListParagraphCxSpLast" style="margin:0in 0in 0.0001pt;line-height:normal;"&gt;Main code file&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td style="border-style:none solid solid none;border-color:-moz-use-text-color black black -moz-use-text-color;border-width:medium 1pt 1pt medium;padding:0in 5.4pt;width:221.3pt;"&gt;
  &lt;p class="MsoListParagraphCxSpLast" style="margin:0in 0in 0.0001pt;line-height:normal;"&gt;Startup Class&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td style="border-style:none solid solid;border-color:-moz-use-text-color black black;border-width:medium 1pt 1pt;padding:0in 5.4pt;width:221.5pt;"&gt;
  &lt;p class="MsoListParagraphCxSpFirst" style="margin:0in 0in 0.0001pt;line-height:normal;"&gt;PrimaryCookie&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="border-style:none solid solid none;border-color:-moz-use-text-color black black -moz-use-text-color;border-width:medium 1pt 1pt medium;padding:0in 5.4pt;width:221.3pt;"&gt;
  &lt;p class="MsoListParagraphCxSpLast" style="margin:0in 0in 0.0001pt;line-height:normal;"&gt;PrimaryCookie &lt;span&gt;&amp;nbsp;&lt;/span&gt;(MainCode.designer.xml file)&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;In VSTA v 1 the host does not need to be aware of any of
these.&lt;/p&gt;

&lt;p class="MsoNormal"&gt;In VSTA v 2, the startup class is used when loading add-ins
and the PrimaryCookie is used in DPM scenarios.&lt;/p&gt;

&lt;p class="MsoNormal"&gt;ProjectGen offers the option of using a project descriptor
file as input instead of manually entering all of the information.&lt;span&gt;&amp;nbsp; &lt;/span&gt;This is where the Gotcha comes in.&lt;span&gt;&amp;nbsp; &lt;/span&gt;If you use a project template descriptor file
as input for ProjecGen and change the host item name on the third screen, in
the new project template descriptor file and the resulting template only the
host item name will be updated.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The
PrimaryCookie will remain unchanged.&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Workarounds:&lt;/p&gt;

&lt;p class="MsoListParagraphCxSpFirst" style="text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;1)&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Manually
change the PrimaryCookie in the project template descriptor file before use as
input for ProjectGen.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Then use the
descriptor file as input- no additional steps are required.&lt;/p&gt;

&lt;p class="MsoListParagraphCxSpMiddle" style="text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;2)&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Manually
change the PrimaryCookie attribute in the xml designer file for the main code
file.&lt;span&gt;&amp;nbsp; &lt;/span&gt;To do this:&lt;/p&gt;

&lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:1in;text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;a.&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Create
the template with ProjectGen&lt;/p&gt;

&lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:1in;text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;b.&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Extract
the templates (both CSharp and VB).&lt;/p&gt;

&lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:1in;text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;c.&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Open
the xml designer file for the main code file (MainCode.designer.xml).&lt;/p&gt;

&lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:1in;text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;d.&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Update
the PrimaryCookie attribute of the HostItem element.&lt;/p&gt;

&lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:1in;text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;e.&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Save
the file.&lt;/p&gt;

&lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:1in;text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;f.&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Zip the updated template (zip the items
individually- do not zip the folder which contains them).&lt;/p&gt;

&lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:1in;text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;g.&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Place
the template in the ProjectTemplateLocation if not already there.&lt;/p&gt;

&lt;p class="MsoListParagraphCxSpLast" style="margin-left:1in;text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;h.&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Run
setup for the host.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1145" width="1" height="1"&gt;</description><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/projectgen/default.aspx">projectgen</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/VSTA+2.0/default.aspx">VSTA 2.0</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/VSTA+1/default.aspx">VSTA 1</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/project+template+descriptor+file/default.aspx">project template descriptor file</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/Project+Template/default.aspx">Project Template</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/HostItemName/default.aspx">HostItemName</category><category domain="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/tags/Primary+Cookie/default.aspx">Primary Cookie</category></item><item><title>CLS-Compliant Warning in VB Add-ins</title><link>http://www.summsoft.com/blogs/melodys_vsta_blog/archive/2008/06/09/cls-compliant-warning-in-vb-add-ins.aspx</link><pubDate>Mon, 09 Jun 2008 20:01:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:1144</guid><dc:creator>Me