<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://yalecny.org/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Gary Depue's VSTA Blog</title><link>http://yalecny.org/blogs/garyvsta/default.aspx</link><description>VSTA Integration experiences and discussion</description><dc:language>en</dc:language><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>After ~5 minutes of idle time debugging macro projects fails with an IPC Port error.</title><link>http://yalecny.org/blogs/garyvsta/archive/2008/10/22/after-5-minutes-of-idle-time-debugging-macro-projects-fails-with-an-ipc-port-error.aspx</link><pubDate>Wed, 22 Oct 2008 20:00:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:1419</guid><dc:creator>Gary</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://yalecny.org/blogs/garyvsta/rsscomments.aspx?PostID=1419</wfw:commentRss><comments>http://yalecny.org/blogs/garyvsta/archive/2008/10/22/after-5-minutes-of-idle-time-debugging-macro-projects-fails-with-an-ipc-port-error.aspx#comments</comments><description>&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;After ~5 minutes of idle time, &amp;nbsp;VSTA macro projects are unable to debug and VSTA IDE displays a &amp;ldquo;Failed to write to an IPC Port:&amp;nbsp; The pipe is being closed&amp;rdquo;&amp;nbsp; or similar.&amp;nbsp; Second attempt produces this error message &amp;ldquo;Requested Service not found&amp;rdquo; error message dialog.&amp;nbsp; Loaded add-ins do not timeout (that was fixed in .Net 3.5 SP1).&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Periodically &amp;lsquo;Start Debugging&amp;rsquo; manually or programmatically (DTE.Debugger.Go()) debugging the open project prevents this problem from occurring, but this not an acceptable workaround . &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Steps to repro:&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Build the ShapeAppMacroRecordingCSharp sample.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;2)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Run the associated setup .js&amp;nbsp;file.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;3)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Run the ShapeAppMacroRecordingCSharp sample.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;4)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Launch the IDE.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;5)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set a break point in the OnStartup method of the ide.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;6)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug from the IDE&amp;nbsp; and confirm the break point is hit when debugging.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;7)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Leave the host application and IDE idle for 5 minutes or more.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lsquo;Start&amp;rsquo; Debug from the IDE: &amp;ldquo;Failed to write to an IPC Port:&amp;nbsp; The pipe is being closed&amp;rdquo; message will appear.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;9)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lsquo;Start&amp;rsquo; Debug from the IDE again: &amp;ldquo;Requested Service not found&amp;rdquo; message will appear.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Solution:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;This is a bug in the sample.&amp;nbsp; The ShapeAppMacroRecordingCSharp sample should add InitializeLifetimeService() method with infinite timeout to the class VstaDesignTimeIntegration as shown below&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Provides Designtime VSTA Integration for ShapeAppCSharp.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal sealed class VstaDesignTimeIntegration : MarshalByRefObject, IExternalDebugHost&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region MarshalByRefObject&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override object InitializeLifetimeService()&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return null; // Allows remoting from VS as long as we live.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&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; #endregion MarshalByRefObject&amp;nbsp; public override object InitializeLifetimeService()&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:7.5pt;color:blue;font-family:&amp;#39;MS Shell Dlg&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . . .&lt;/span&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt 0.25in;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://yalecny.org/aggbug.aspx?PostID=1419" width="1" height="1"&gt;</description><category domain="http://yalecny.org/blogs/garyvsta/archive/tags/IPC+Port/default.aspx">IPC Port</category><category domain="http://yalecny.org/blogs/garyvsta/archive/tags/Debugger/default.aspx">Debugger</category><category domain="http://yalecny.org/blogs/garyvsta/archive/tags/InitializeLifetimeService/default.aspx">InitializeLifetimeService</category></item><item><title>Sample: Watchdog to terminate orphaned VSTA process</title><link>http://yalecny.org/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><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://yalecny.org/blogs/garyvsta/rsscomments.aspx?PostID=1345</wfw:commentRss><comments>http://yalecny.org/blogs/garyvsta/archive/2008/09/26/sample-watchdog-to-terminate-orphaned-vsta-process.aspx#comments</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://yalecny.org/aggbug.aspx?PostID=1345" width="1" height="1"&gt;</description></item><item><title>Add your proxy assemblies to .NET Add Reference tab in Visual Studio/VSTA IDE</title><link>http://yalecny.org/blogs/garyvsta/archive/2008/04/04/add-your-proxy-assemblies-to-net-add-reference-tab-in-visual-studio-vsta-ide.aspx</link><pubDate>Fri, 04 Apr 2008 13:49:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:1007</guid><dc:creator>Gary</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://yalecny.org/blogs/garyvsta/rsscomments.aspx?PostID=1007</wfw:commentRss><comments>http://yalecny.org/blogs/garyvsta/archive/2008/04/04/add-your-proxy-assemblies-to-net-add-reference-tab-in-visual-studio-vsta-ide.aspx#comments</comments><description>&lt;DIV&gt;&lt;FONT face=Arial color=#000000 size=2&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Your VSTA Project template includes a reference to your proxy assembly.&amp;nbsp;&amp;nbsp; If the end user manually deletes the proxy assembly reference, they will not find the proxy assembly listed under the .NET&amp;nbsp;tab.&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#000000 size=2&gt;To add your own assemblies to the .NET tab&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#000000 size=2&gt;Create a new registry key (for example, one called ProxyAssembly) beneath either of the following registry keys: &lt;BR&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders &lt;BR&gt;HKEY_CURRENT_USER\Software\Microsoft\.NETFramework\AssemblyFolders &lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#000000 size=2&gt;Set the new key's default value to point to the folder that contains your assemblies. &lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;For instance:&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\MyProxy]&lt;BR&gt;@="C:\\Documents and Settings\\gdepue\\Desktop\\VSTA2.0Samples\\ShapeAppBasicMFC\\Proxy\\bin\\Debug"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#000000 size=2&gt;If you have Visual Studio/VSTA IDE&amp;nbsp;open, you must close it and then launch it again for the change to take effect.&lt;/FONT&gt;&lt;/DIV&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://yalecny.org/aggbug.aspx?PostID=1007" width="1" height="1"&gt;</description></item><item><title>VSTO/VSTA Power Tools v1.0 </title><link>http://yalecny.org/blogs/garyvsta/archive/2008/03/28/vsto-vsta-power-tools-v1-0.aspx</link><pubDate>Fri, 28 Mar 2008 14:02:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:994</guid><dc:creator>Gary</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://yalecny.org/blogs/garyvsta/rsscomments.aspx?PostID=994</wfw:commentRss><comments>http://yalecny.org/blogs/garyvsta/archive/2008/03/28/vsto-vsta-power-tools-v1-0.aspx#comments</comments><description>&lt;P&gt;Andrew Whitechapel announces &lt;A href="http://blogs.msdn.com/andreww/archive/2008/02/21/vsto-vsta-power-tools-v1-0.aspx"&gt;VSTO/VSTA Power Tools&lt;/A&gt; for developers working with VSTA which includes the Pipeline Verifier.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE class=MsoNormalTable style="MARGIN:auto auto auto 4.65pt;WIDTH:383.25pt;BORDER-COLLAPSE:collapse;mso-yfti-tbllook:1184;mso-padding-alt:0in 5.4pt 0in 5.4pt;" cellSpacing=0 cellPadding=0&gt;

&lt;TR style="HEIGHT:45pt;mso-yfti-irow:7;"&gt;
&lt;TD class="" style="BORDER-RIGHT:white 1pt solid;PADDING-RIGHT:5.4pt;PADDING-LEFT:5.4pt;BORDER-LEFT-COLOR:#f0f0f0;BACKGROUND:#b8cce4;PADDING-BOTTOM:0in;WIDTH:108.75pt;BORDER-TOP-COLOR:#f0f0f0;PADDING-TOP:0in;BORDER-BOTTOM:white 1pt solid;HEIGHT:45pt;mso-border-bottom-alt:solid white .5pt;mso-border-right-alt:solid white .5pt;"&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="COLOR:black;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;VSTO/VSTA Pipeline Verifier&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:white 1pt solid;PADDING-RIGHT:5.4pt;PADDING-LEFT:5.4pt;BORDER-LEFT-COLOR:#f0f0f0;BACKGROUND:#b8cce4;PADDING-BOTTOM:0in;WIDTH:189pt;BORDER-TOP-COLOR:#f0f0f0;PADDING-TOP:0in;BORDER-BOTTOM:white 1pt solid;HEIGHT:45pt;mso-border-bottom-alt:solid white .5pt;mso-border-right-alt:solid white .5pt;"&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="COLOR:black;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;A GUI tool that reflects over custom pipeline assemblies to validate the complete VSTA pipeline.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:white 1pt solid;PADDING-RIGHT:5.4pt;PADDING-LEFT:5.4pt;BORDER-LEFT-COLOR:#f0f0f0;BACKGROUND:#b8cce4;PADDING-BOTTOM:0in;WIDTH:85.5pt;BORDER-TOP-COLOR:#f0f0f0;PADDING-TOP:0in;BORDER-BOTTOM:white 1pt solid;HEIGHT:45pt;mso-border-bottom-alt:solid white .5pt;mso-border-right-alt:solid white .5pt;"&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="COLOR:black;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Standalone Windows Forms application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Download the Power Tools &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=46B6BF86-E35D-4870-B214-4D7B72B02BF9&amp;amp;displaylang=en"&gt;here&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://yalecny.org/aggbug.aspx?PostID=994" width="1" height="1"&gt;</description></item><item><title>ISV's proxy assemblies and references to proxy assemblies in add-in project templates and projects require unique version information</title><link>http://yalecny.org/blogs/garyvsta/archive/2008/03/13/isv-s-proxy-assemblies-and-references-to-proxy-assemblies-in-add-in-project-templates-and-projects-require-unique-version-information.aspx</link><pubDate>Thu, 13 Mar 2008 22:29:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:955</guid><dc:creator>Gary</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://yalecny.org/blogs/garyvsta/rsscomments.aspx?PostID=955</wfw:commentRss><comments>http://yalecny.org/blogs/garyvsta/archive/2008/03/13/isv-s-proxy-assemblies-and-references-to-proxy-assemblies-in-add-in-project-templates-and-projects-require-unique-version-information.aspx#comments</comments><description>&lt;H2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;FONT size=4&gt;&lt;FONT color=#4f81bd&gt;&lt;FONT face=Cambria&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';"&gt;Description of the problem:&lt;/SPAN&gt;&lt;SPAN style="COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;On a machine with VSTA v1 and VSTA v2 installed, compile the v2 ShapeAppCSharpAppAddIn project&amp;nbsp;in the basic shapes sample.&amp;nbsp; You'll get this error:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;Error 1 The type or namespace name 'ApplicationEntryPoint' does not exist in the namespace 'Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp' (are you missing an assembly reference?) C:\ShapeAppSamples\ShapeAppBasicCSharp\sample addIns\CSharp\AppLevel\SampleAppAddIn.Designer.cs 16 103 ShapeAppCSharpAppAddIn&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;There is similar problem in other samples, ie: Dynamic shapes sample ('DocumentEntryPoint')&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;FONT size=4&gt;&lt;FONT color=#4f81bd&gt;&lt;FONT face=Cambria&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';"&gt;Repro Steps: &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Create machine with VSTA 1.0 and VSTA 2.0 installed side by side.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Install VSTA v 2, ShapeAppCSharp sample &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Open v2 ShapeAppCSharp sample add-in project and build.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Build fails due to incorrect proxy assembly reference in the add-in project.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;FONT size=4&gt;&lt;FONT color=#4f81bd&gt;&lt;FONT face=Cambria&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';"&gt;Why the failure?:&lt;/SPAN&gt;&lt;SPAN style="COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;ProjectGen creates the project templates with an indeterminate&amp;nbsp; reference to the proxy like this in shapeappcsharpappaddin.csproj:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Reference Include="ShapeAppCSharpProxy" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;Unfortunately, ProjectGen does not generate other the assembly attributes.&amp;nbsp; It should include the version number, at the&amp;nbsp;least.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;This ambiguity will cause build errors or runtime errors for&amp;nbsp;a VSTA add-in.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;As noted:&amp;nbsp;&amp;nbsp;for version 2 VSTA add-in sample projects, the&amp;nbsp;add-in projects incorrectly resolve the ShapeAppCSharpProxy reference to the VSTA v 1 reference if it is available.&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;( Even without a new version number, the ShapeAppCSharpProxy&amp;nbsp;assembly reference in the &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:7.5pt;COLOR:blue;FONT-FAMILY:'MS Shell Dlg','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;FONT size=4&gt;shapeappcsharpappaddin&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;FONT size=4&gt;.&lt;/FONT&gt;csproj &amp;nbsp;in the exsiting shapeappcsharpappaddin.csproj&amp;nbsp; can be made distinct enough by specifying the unique PublicKeyToken &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;lt;Reference Include="ShapeAppCSharpProxy, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3c3c0c46dd27dbcf" /&amp;gt; )&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;FONT size=4&gt;&lt;FONT color=#4f81bd&gt;&lt;FONT face=Cambria&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';"&gt;Impact on ISVs integrating VSTA:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;This is an important&amp;nbsp;issue to resolve&amp;nbsp;because&amp;nbsp;ISVs must properly create vNext proxy assemblies and project templates&amp;nbsp; for each version of their application.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;ISVs must properly create vNext proxy assemblies and project templates so that when&amp;nbsp;end users update&amp;nbsp;their application, they will not encounter a problem building their add-in projects, new and existing, due to the project referencing the wrong version of a proxy assembly.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;Renaming the proxy assembly for each version is not a desireable solution, from a maintenance perspective, but versioning the assembly is. &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;FONT size=4&gt;&lt;FONT color=#4f81bd&gt;&lt;FONT face=Cambria&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';"&gt;Steps to proper resolution of proxy assembly ambiguity:&lt;/SPAN&gt;&lt;SPAN style="COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN:10pt 0in 0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT color=#4f81bd&gt;&lt;FONT face=Cambria&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';"&gt;1. Version your proxy assembly. &lt;/SPAN&gt;&lt;SPAN style="COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;Using the SDK sample proxy and addin project shapeappcsharpappaddin.csproj&amp;nbsp; as an determinate example, we should&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;A. &amp;nbsp;update the version of&amp;nbsp;the&amp;nbsp;proxy assembly (ie: ShapeAppCSharpProxy, Version=2.0.0.0) and &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;B. include the correct version in the add-in project's reference to the ShapeAppCSharpProxy.dll:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;shapeappcsharpappaddin.csproj, referencing version 1 proxy assembly:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;lt;Reference Include="ShapeAppCSharpProxy, Version=1.0.0.0 /&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;shapeappcsharpappaddin.csproj, referencing&amp;nbsp;version 2 proxy assembly&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;lt;Reference Include="ShapeAppCSharpProxy, Version=2.0.0.0 /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN:10pt 0in 0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT color=#4f81bd&gt;&lt;FONT face=Cambria&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';"&gt;2.&amp;nbsp; There are other assembly reference attributes that ISVs might use to uniquely reference&amp;nbsp;proxy assembly in their projects:&lt;/SPAN&gt;&lt;SPAN style="COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;A.&amp;nbsp; If version-specific proxy assemblies are installed SxS in the GAC, they could use &lt;I style="mso-bidi-font-style:normal;"&gt;FusionName&lt;/I&gt;.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;B.&amp;nbsp; For a SxS proxy assembly installed to a known ISV/product location, they can provide a &lt;I style="mso-bidi-font-style:normal;"&gt;HintPath&lt;/I&gt; to the correct assembly location.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;For example, in &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:13.5pt;COLOR:blue;FONT-FAMILY:'MS Shell Dlg','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;shapeappcsharpappaddin.csproj&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;lt;Reference Include="ShapeAppCSharpProxy"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp; &amp;lt;Name&amp;gt;ShapeAppCSharpProxy&amp;lt;/Name&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp; &amp;lt;Aliases&amp;gt;ShapeApp Automation Library&amp;lt;/Aliases&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp; &amp;lt;&lt;B&gt;FusionName&lt;/B&gt;&amp;gt;ShapeAppCSharpProxy, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3c3c0c46dd27dbcf&amp;lt;/FusionName&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp; &amp;lt;&lt;B&gt;HintPath&lt;/B&gt;&amp;gt;C:\Program Files\ISVName\ShapeAppCSharpProxy\Common\VSTA\ShapeAppCSharpProxy.dll&amp;lt;/HintPath&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp; &amp;lt;SpecificVersion&amp;gt;True&amp;lt;/SpecificVersion&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp; &amp;lt;RequiredTargetFramework&amp;gt;3.5&amp;lt;/RequiredTargetFramework&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:black;FONT-FAMILY:'Times New Roman','serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&amp;lt;/Reference&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN:0in 0in 0pt 0.25in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';"&gt;&lt;FONT face=Cambria color=#4f81bd&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN style="FONT-SIZE:12pt;COLOR:blue;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';"&gt;&lt;FONT face=Cambria color=#4f81bd&gt;
&lt;H3 style="MARGIN:10pt 0in 0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT color=#4f81bd&gt;&lt;FONT face=Cambria&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';"&gt;3.&amp;nbsp; Version information added to the project's&amp;nbsp; assembly references should be included in the project template's copy of the project (.csproj or .vbproj) file.&amp;nbsp; This will create new projects with non-ambiguous assembly references&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://yalecny.org/aggbug.aspx?PostID=955" width="1" height="1"&gt;</description></item><item><title>InvalidOperationException: Cross-thread operation not valid: Control 'ShapeAppForm' accessed from a thread other than the thread it was created on.</title><link>http://yalecny.org/blogs/garyvsta/archive/2008/03/07/invalidoperationexception-cross-thread-operation-not-valid-control-shapeappform-accessed-from-a-thread-other-than-the-thread-it-was-created-on.aspx</link><pubDate>Fri, 07 Mar 2008 15:17:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:944</guid><dc:creator>Gary</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://yalecny.org/blogs/garyvsta/rsscomments.aspx?PostID=944</wfw:commentRss><comments>http://yalecny.org/blogs/garyvsta/archive/2008/03/07/invalidoperationexception-cross-thread-operation-not-valid-control-shapeappform-accessed-from-a-thread-other-than-the-thread-it-was-created-on.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;FONT face=Calibri&gt;I created this macro in SDK sample Shapeappmacrorecordingcsharp and built it:&lt;BR style="mso-special-character:line-break;"&gt;&lt;BR style="mso-special-character:line-break;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Macro3()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Visible = false;//&amp;lt;=set break point here&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Visible = true;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;1 Launch the IDE (out of process) from ShapeApp&lt;BR&gt;2 Set breakpoint at this.Visible = false;&lt;BR&gt;3 'Start Debugging' the macro project&lt;BR&gt;4 Open the application's MacroManager&lt;BR&gt;5 Run Macro3 and hit breakpoint at this.Visible = false;&lt;BR&gt;6 F10 or Run produces this error:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;FONT face=Calibri&gt;"InvalidOperationException: Cross-thread operation not valid: Control 'ShapeAppForm' accessed from a thread other than the thread it was created on."&lt;BR&gt;&lt;BR&gt;To 'fix' this, I set a property on ShapeAppForm:&amp;nbsp; CheckForIllegalCrossThreadCalls = false;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Internal constructor for this form.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="application"&amp;gt;The active ShapeApp application instance.&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal ShapeAppForm(Application application)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;CheckForIllegalCrossThreadCalls = false;&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.application = application;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sizeDialog = new SizeDialog();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; locationDialog = new LocationDialog();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;Re-build shapeappmacrorecordingcsharp, run and repeat steps 1-6&lt;BR&gt;And there's no error.&amp;nbsp;&lt;BR&gt;&lt;BR&gt;But cross thread calls to winform UI "&lt;EM&gt;often leads to unpredictable results&lt;/EM&gt;"&lt;BR&gt;This means that when ISVs want to support robust OOP debugging, they need to use thread safe calls on their UI, which is demonstrated with the MacroDialog, but not in the rest of the UI that can be called from an Add-in.&lt;BR&gt;&lt;BR&gt;For this one case, adding the asynch/thread safe Invoke to the Application Form &lt;B style="mso-bidi-font-weight:normal;"&gt;did not work&lt;/B&gt;&amp;nbsp;:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;bool&lt;/SPAN&gt; Visible&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;get&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.Visible;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;set&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;SetVisibleTS(&lt;SPAN style="COLOR:blue;"&gt;value&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;TEXT-INDENT:0.5in;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:blue;"&gt;delegate&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;VisibleDelegate&lt;/SPAN&gt;(&lt;SPAN style="COLOR:blue;"&gt;bool&lt;/SPAN&gt; isVisible);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; SetVisibleTS(&lt;SPAN style="COLOR:blue;"&gt;bool&lt;/SPAN&gt; isVisible)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;if&lt;/SPAN&gt; (InvokeRequired)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;VisibleDelegate&lt;/SPAN&gt; d = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;VisibleDelegate&lt;/SPAN&gt;(SetVisibleTS);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Invoke(d, &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;object&lt;/SPAN&gt;[] { &lt;SPAN style="COLOR:blue;"&gt;true&lt;/SPAN&gt; });//Nope, this just hangs&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;else&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.Visible = &lt;SPAN style="COLOR:blue;"&gt;true&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;FONT face=Calibri&gt;so I'll have to look further and find something that does work:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://yalecny.org/aggbug.aspx?PostID=944" width="1" height="1"&gt;</description><category domain="http://yalecny.org/blogs/garyvsta/archive/tags/VSTA+2.0/default.aspx">VSTA 2.0</category><category domain="http://yalecny.org/blogs/garyvsta/archive/tags/Out+of+process+debugger/default.aspx">Out of process debugger</category><category domain="http://yalecny.org/blogs/garyvsta/archive/tags/thread+safe/default.aspx">thread safe</category><category domain="http://yalecny.org/blogs/garyvsta/archive/tags/cross-thread+operation/default.aspx">cross-thread operation</category></item><item><title>ObjectModel Documentation </title><link>http://yalecny.org/blogs/garyvsta/archive/2008/02/07/objectmodel-documentation.aspx</link><pubDate>Thu, 07 Feb 2008 22:47:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:885</guid><dc:creator>Gary</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://yalecny.org/blogs/garyvsta/rsscomments.aspx?PostID=885</wfw:commentRss><comments>http://yalecny.org/blogs/garyvsta/archive/2008/02/07/objectmodel-documentation.aspx#comments</comments><description>&lt;P&gt;&lt;FONT face=Arial&gt;You've commented your ObjectModel thoroughly and now found out, that the Intellisens in the VSTA add-in doesn't show it. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Is there a way to make the Object Model comments of each class and member available into the proxy?&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Arial&gt;&lt;o:p&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#000000&gt;Answer:&amp;nbsp; &lt;FONT color=#800080&gt;/doc&lt;/FONT&gt; (Process Documentation Comments) (C# Compiler Options)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#000000&gt;This approach won’t require you to duplicate the comments in the proxy source.&amp;nbsp; Which is nice.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#000000&gt;For the ShapeAppCSharp sample, I 'checked'&amp;nbsp; the ‘XML documentation file’ output property of the ShapeAppBasicCSharp (host application) project &amp;nbsp;which contains the sample’s object model&amp;nbsp; (open the project properties, select the Build tab, and select the checkbox for ‘XML documentation file’ -- the last entry under the 'Output' category).&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#000000&gt;This setting generates an xml file during build time that can be used for intellisense and object browser documentation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#000000&gt;Now we’ll play a trick and use this file for the proxy assembly:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#000000&gt;1.&amp;nbsp; I changed the name of this file to ‘ShapeAppCSharpProxy.XML’&amp;nbsp; and edited the contents to rename the ‘assembly’name attribute to match the file name: ‘ShapeAppCSharpProxy’&amp;nbsp; as shown here:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#800080&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#800080&gt;&amp;lt;doc&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#800080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;assembly&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#800080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;ShapeAppCSharpProxy&amp;lt;/name&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#800080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/assembly&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#000000&gt;2.&amp;nbsp; Then I copied this XML documentation file into the same folder as the registered proxy assembly: \Proxy\bin\Debug\ShapeAppCSharpProxy.dll&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#000000&gt;3.&amp;nbsp; Now, if I reset a reference to the proxy assembly in my addin &amp;nbsp;project (ShapeAppCSharpProxy.dll), this XML file will be used for intellisense and object browser documentation.&amp;nbsp; You can also edit the documentation file&amp;nbsp;to match the proxy source more closely.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;FONT color=#000000&gt;Watch out, though.&amp;nbsp; If you rebuild the proxy asssembly, the documentation file will be erased, so you should keep te master copy in another place and copy the file into the proxy assembly folder as a post build step.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/o:p&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://yalecny.org/aggbug.aspx?PostID=885" width="1" height="1"&gt;</description></item><item><title>How to Integrate VSTA 2.0 (01/23/08 MSDN Webcast)</title><link>http://yalecny.org/blogs/garyvsta/archive/2008/01/29/how-to-integrate-vsta-2-0-01-23-08-msdn-webcast.aspx</link><pubDate>Tue, 29 Jan 2008 14:56:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:866</guid><dc:creator>Gary</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://yalecny.org/blogs/garyvsta/rsscomments.aspx?PostID=866</wfw:commentRss><comments>http://yalecny.org/blogs/garyvsta/archive/2008/01/29/how-to-integrate-vsta-2-0-01-23-08-msdn-webcast.aspx#comments</comments><description>&lt;P&gt;MSDN Webcast: How to Integrate Visual Studio Tools for Applications 2.0 (Level 200)&amp;nbsp; &lt;BR&gt;Event ID: 1032362710&lt;/P&gt;
&lt;P&gt;Webcast: &lt;A href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032362710&amp;amp;EventCategory=5&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;here&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Slides (with presenter's notes): &lt;A href="http://www.summsoft.com/files/folders/vstadoc/entry865.aspx"&gt;here&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Demo Source: &lt;/P&gt;
&lt;P&gt;WPF Addin -&amp;nbsp;&lt;A href="http://www.summsoft.com/files/folders/vsta_samples/entry855.aspx"&gt;here&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Integration Walkthrough -&amp;nbsp;&lt;A href="http://www.summsoft.com/files/folders/vsta_samples/entry854.aspx"&gt;here&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://yalecny.org/aggbug.aspx?PostID=866" width="1" height="1"&gt;</description><category domain="http://yalecny.org/blogs/garyvsta/archive/tags/VSTA+2.0/default.aspx">VSTA 2.0</category><category domain="http://yalecny.org/blogs/garyvsta/archive/tags/Webcast/default.aspx">Webcast</category><category domain="http://yalecny.org/blogs/garyvsta/archive/tags/WPF+Add-in/default.aspx">WPF Add-in</category><category domain="http://yalecny.org/blogs/garyvsta/archive/tags/MSDN/default.aspx">MSDN</category></item><item><title>Work around for event-related bugs we noticed in ShapeAppAdvancedMFC Sample </title><link>http://yalecny.org/blogs/garyvsta/archive/2007/08/30/work-around-for-event-related-bugs-we-noticed-in-shapeappadvancedmfc-sample.aspx</link><pubDate>Thu, 30 Aug 2007 18:24:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:582</guid><dc:creator>Gary</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://yalecny.org/blogs/garyvsta/rsscomments.aspx?PostID=582</wfw:commentRss><comments>http://yalecny.org/blogs/garyvsta/archive/2007/08/30/work-around-for-event-related-bugs-we-noticed-in-shapeappadvancedmfc-sample.aspx#comments</comments><description>&lt;FONT color=#0000ff size=1&gt;&lt;FONT size=2&gt;&lt;FONT color=#0000ff size=1&gt;
&lt;P&gt;&lt;FONT size=2&gt;Bugs we noticed&amp;nbsp;in ShapeAppAdvancedMFC Sample&lt;/FONT&gt; &lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT size=2&gt;1. When I File | Open an already created and saved doc from hard drive, it opens once but if I open it again after closing it once, it throws a Debug Assertion Failed error message. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;2. If I open a document through File | Open, then close it and again try to open it from the History list that is there in the File menu, the document does not open. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Observation: Problems 2 and 3 can be solved by removing the event handler from the AppAddIns and DocAddIns. i.e., commenting the event handler for the messagebox and the code for the messagebox itself. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Specifically: If we comment the following line in the function "public void AppAddIn_Startup(object sender, EventArgs e)" from the file ‘AppAddIn.cs’:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;this.CreatedDrawing += new CreatedDrawingEventHandler(ShapeApp_CreatedDrawing);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;If we comment the line from function "public void DocAddIn_Startup(object sender, EventArgs e)" in the file ‘DocAddIn.cs’:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;this.ShapeAdded += new ShapeAddedEventHandler(DocAddIn_ShapeAdded);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Without the event handler hookup, the documents open properly.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;So it may be that the MFC connection points for events are not releasing properly and that the associated MFC document is not completely released when it is closed by user. When user tries to open the document the second time, it fails with Debug Assert (#1) or silently (#2).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Possible workarounds:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial&gt;The issue seems to be that the COM adapter is not freeing its native resources on Add In Unload. The best way to verify the same is to make the application sleep after Unload on In Proc addins and before loading the addins in external proc. This does the Revoke on the COM adapter finally releasing the resources and thereafter the event hook up in the modified app seems to work.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN-LEFT:0.5in;TEXT-INDENT:-0.25in;mso-list:l2 level1 lfo5;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;1.&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';"&gt;Have the hook done in the unmanaged way as we do in the C# advanced MFC sample.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN-LEFT:0.5in;TEXT-INDENT:-0.25in;mso-list:l2 level1 lfo5;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;2.&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT size=2&gt;I&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';"&gt;ncreasing time span (sleep) between the unload and load in the external process (not&amp;nbsp;a clean soultion).&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://yalecny.org/aggbug.aspx?PostID=582" width="1" height="1"&gt;</description></item><item><title>Evaluating VSTA Chapter 2</title><link>http://yalecny.org/blogs/garyvsta/archive/2007/05/16/evaluating-vsta-chapter-2.aspx</link><pubDate>Wed, 16 May 2007 13:11:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:398</guid><dc:creator>Gary</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://yalecny.org/blogs/garyvsta/rsscomments.aspx?PostID=398</wfw:commentRss><comments>http://yalecny.org/blogs/garyvsta/archive/2007/05/16/evaluating-vsta-chapter-2.aspx#comments</comments><description>&lt;P&gt;(Further observations by our Summer Intern, Harish):&lt;/P&gt;
&lt;P&gt;The blog by MSDN for VSTA is a good source for moving ahead with VSTA understanding... &lt;A href="http://blogs.msdn.com/VSTA/"&gt;&lt;FONT color=#cc0000&gt;http://blogs.msdn.com/VSTA/&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;After the initial steps we should look at the zipped samples in the &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=7C2EA8AE-E051-449A-9051-3A351BF27B7F&amp;amp;displaylang=en"&gt;VSTA SDK&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The initial two applications (ShapeAppCSharp, ShapeAppMFC) do not integrate VSTA and do&amp;nbsp;not require registration (Registring an applicaiton helps to build and debug the sample add-in, and to use the project templates included with ShapeAppBasicMFC to create our own add-ins.)&lt;/P&gt;
&lt;P&gt;To get our hands on it we just need to unzip it and open the Project/Solution, Run the application through F5...&lt;/P&gt;
&lt;P&gt;The Basic and Advanced samples integrate VSTA.&amp;nbsp; So we need to register the other sample applications in order to use the add-ins in them. For registering we need to run a java script that is located in the unzipped folder. The steps and commands for executing the script are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;in the command prompt navigate to the unzipped folder where the script is located and then execute &lt;PRE&gt;cscript SetupShapeAppBasicMFC.js&lt;/PRE&gt;
&lt;LI&gt;
&lt;P&gt;each sample application has a similarly named .js script.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://yalecny.org/aggbug.aspx?PostID=398" width="1" height="1"&gt;</description></item><item><title>Evaluating VSTA Chapter 1</title><link>http://yalecny.org/blogs/garyvsta/archive/2007/05/09/getting-started-with-the-vsta-sdk.aspx</link><pubDate>Wed, 09 May 2007 18:52:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:381</guid><dc:creator>Gary</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://yalecny.org/blogs/garyvsta/rsscomments.aspx?PostID=381</wfw:commentRss><comments>http://yalecny.org/blogs/garyvsta/archive/2007/05/09/getting-started-with-the-vsta-sdk.aspx#comments</comments><description>&lt;DIV class=postcontent&gt;
&lt;P&gt;Here are some of the important steps to consider while installing VSTA SDK (as observed by our Summer Intern, Harish):&lt;/P&gt;
&lt;P&gt;The initial step is to watch the Intro video &lt;A href="http://go.microsoft.com/?linkid=6676089"&gt;&lt;FONT color=#4271d6&gt;http://go.microsoft.com/?linkid=6676089&lt;/FONT&gt;&lt;/A&gt;, which gives&amp;nbsp;a quick overview of the basics of VSTA. But does not provide us with enough information about setting up VSTA with pre-installed VS 2005.&lt;/P&gt;
&lt;P&gt;After downloading and running 'vsta_sdk.msi', the steps for setting up VSTA with VS 2005 are in a ReadMe file located in a folder :"%SYSTEMDRIVE%\Program Files\Visual Studio 2005 Tools for Applications SDK\2007.02\VisualStudioToolsForApplications".&lt;/P&gt;
&lt;P&gt;The two steps described are quite straight forward. But these are the most important steps... especially running the installer file 'vsta_aide.msi' with the command-line parameters "VSTAINVS = 1". This parameter is very important for the VSTA installation and setting up VSTA with VS 2005.&lt;/P&gt;
&lt;P&gt;To verify, open the IDE for VS 2005 -&amp;gt; go to "Help" menu and click "About Microsoft Visual Studio". There should be an entry of VSTA as "Microsoft Visual Studio 2005 Tools for Applications" under 'Installed Products'. If that entry is not there then uninstall the SDK and reinstall OR Repair the installation by running "vsta_sdk.msi" again. And then repeat the step of running installer file 'vsta_aide.msi' with&amp;nbsp;command-line parameters "VSTAINVS = 1".&lt;/P&gt;
&lt;P&gt;Above all, the best location to start with VSTA (after the SDK installation) is to refer VS 2005 IDE's "Help" menu -&amp;gt; click &lt;EM&gt;Contents &lt;/EM&gt;-&amp;gt; then go down to "Visual Studio 2005 Tools for Applications SDK" in the left pane. It's the most helpful resource (from those I have used) for any VSTA Beginner-level programmer...&lt;/P&gt;
&lt;P&gt;Summit has created some excellent micro-sample integrations that are smaller and as such easier to understand than the SDK samples.&lt;/P&gt;
&lt;P&gt;For C# managed applications: &lt;A id=ctl00_ctl01_bcr_ctl00___ctl00_Entrylisting1___Entries_ctl06_Name href="http://www.summsoft.com/files/folders/vsta_samples/entry248.aspx"&gt;&lt;FONT color=#3377a9&gt;TestCon - Minimal sample VSTA integration&lt;/FONT&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;For C++ COM applications (MFC, ATL): &lt;A id=ctl00_ctl01_bcr_ctl00___ctl00_Entrylisting1___Entries_ctl02_Name href="http://www.summsoft.com/files/folders/vsta_samples/entry321.aspx"&gt;&lt;FONT color=#3377a9&gt;COMClient easy integration - using generic COMProxy and VAO&lt;/FONT&gt;&lt;/A&gt;. This sample's approach is also compatible for VBA side-by-side integrations. &lt;/P&gt;
&lt;P&gt;For VB6 applications: &lt;A id=ctl00_ctl01_bcr_ctl00___ctl00_Entrylisting1___Entries_ctl07_Name href="http://www.summsoft.com/files/folders/vsta_samples/entry334.aspx"&gt;&lt;FONT color=#3377a9&gt;VB6 COMClient Easy Integration&lt;/FONT&gt;&lt;/A&gt;.&amp;nbsp; This sample's approach is also compatible for VBA side-by-side integrations.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;All of these samples show VSTA integrations using Summit's assembly/sample code, &lt;A id=ctl00_ctl01_bcr_ctl00___ctl00_Entrylisting1___Entries_ctl08_Name href="http://www.summsoft.com/files/folders/vsta_samples/entry191.aspx"&gt;&lt;FONT color=#3377a9&gt;VSTA Access Objects (VAO) Source&lt;/FONT&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;VAO contains similar integration source to the SDK samples, but it is consolidated into one place for ease of use.&amp;nbsp; VAO also implements VBA-Style "seamless, non-destructive debugging.&lt;/P&gt;&lt;/DIV&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://yalecny.org/aggbug.aspx?PostID=381" width="1" height="1"&gt;</description></item><item><title>Improvements to COMClient Easy Integration Sample</title><link>http://yalecny.org/blogs/garyvsta/archive/2007/04/30/improvements-to-comclient-easy-integration-sample.aspx</link><pubDate>Mon, 30 Apr 2007 21:20:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:350</guid><dc:creator>Gary</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://yalecny.org/blogs/garyvsta/rsscomments.aspx?PostID=350</wfw:commentRss><comments>http://yalecny.org/blogs/garyvsta/archive/2007/04/30/improvements-to-comclient-easy-integration-sample.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;The COMClient easy integration sample is a simple approach to bypassing the proxygen/proxy layer for COM object models.&amp;nbsp; It was recently improved (see description and helps&amp;nbsp;appended below)&amp;nbsp; These improvements are available in the updated sample for download:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;======&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;A href="http://www.summsoft.com/files/folders/vsta_samples/entry321.aspx"&gt;&lt;FONT face="Times New Roman"&gt;COMClient easy integration - using generic COMProxy and VAO&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Times New Roman"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;This example shows how simple it is to integrate VSTA into a COM application using a generic proxy and VAO (src included). The generic proxy can be used to expose any COM object model (type library) to VSTA &lt;/SPAN&gt;&lt;EM&gt;&lt;FONT size=3&gt;without using proxygen&lt;/FONT&gt;&lt;/EM&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;.&amp;nbsp; VAO is used to simplify the integration process, and it implements Non-Destructive Debugging.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;Synopsis:&amp;nbsp; The COMClient passes an IUnknown ptr to an instance of its COM object directly to the VSTA Addin via a Connector object: &lt;/SPAN&gt;&lt;STRONG&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;pConnector-&amp;gt;AssignHostObject(pDispMyCOMServer);&lt;/SPAN&gt;&lt;/B&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;FONT face="Times New Roman"&gt;The VSTA Addin obtains the same instance of the COM Object as a System.__ComObject.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman"&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;"&gt;object&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt; obj = &lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.GetHostObject();&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;The VSTA Addin uses a reference to the COMInterop assembly (created with tlbimp MSDNCOMServer.dll ) to provide strong type information for the COM&amp;nbsp;Object .&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman"&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;MSDNCOMServerLib.&lt;SPAN style="COLOR:teal;"&gt;IMyCOMServer&lt;/SPAN&gt; myOM = obj &lt;SPAN style="COLOR:blue;"&gt;as&lt;/SPAN&gt; MSDNCOMServerLib.&lt;SPAN style="COLOR:teal;"&gt;IMyCOMServer&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman"&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;myOM.MySimpleCOMServerMethod();&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;FONT face="Times New Roman"&gt;This approach uses a generic proxy layer (no need to run proxygen) that exposes one method to the Addin author.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman"&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;System.Object Connector.GetHostObject()&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;FONT face="Times New Roman"&gt;Although the sample macro does not demonstrate&amp;nbsp;it,&amp;nbsp;this hookup method can easily be hidden&amp;nbsp;in&amp;nbsp;a global property like 'Application' so that the Addin author can use normal syntax to access the Application object model:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;FONT face="Times New Roman"&gt;Application.&lt;STRONG&gt;MySimpleCOMServerMethod();&lt;o:p&gt;&lt;/o:p&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;FONT face="Times New Roman"&gt;==&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;FONT face="Times New Roman"&gt;This sample was recently updated…&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;Updated with revised VAO source and a revised COMClient sample that properly manages messageloop and the ComConnector ref count:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;The change in VAO is in VSTAHookup.cs, StopVSTA() method’s last few lines, which causes the connector object to be released immediately:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;[&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;mHostItemProvider = null;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;GC.Collect();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;GC.WaitForPendingFinalizers();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public void StopVSTA()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// Safely exit debug mode in the VSTA IDE before shutting VSTA down&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if (mDTE != null)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;StopDebugging();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;mDTE.Quit();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ExternalDebugging.UnregisterExternalDebugHost(mHostDebugUri);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;catch&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// Ignore the exception&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;UnloadAppAddIns();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;UnloadMacros();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if (mAddInProcess != null)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;mAddInProcess.AddInProcessExited -= new EventHandler(AddInProcess_AddInProcessExitedMacro);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;mAddInProcess.Dispose();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;mAddInProcess = null;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;catch&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// Ignore the exception&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;mHostItemProvider = null;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;GC.Collect();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;GC.WaitForPendingFinalizers();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;=============&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;The other changes – in COMClient.cpp and COMConnector, ConnectorClass.cpp&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;properly manages the messageloop and the Connector ref count for proper shut down.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;=============&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;Incidentally, if necessary, your COM application can force the CLR to release all its references to interface ptrs inside&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;RCWs (ie: like VSTA’s reference to CLSID_COMConnector instance) by calling CoEEShutDownCOM() as follows:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;#include "cor.h"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;…&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;CoEEShutDownCOM();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;This was not necessary in the sample, and usually should not be necessary.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;Also, your unmanaged application can instruct the CLR to shutdown in an orderly way&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;(includes CLR calling finalization of all unfinalized .NET objects) and exit process by calling CorExitProcess() with passed in error code.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;This may be needed by pre-VC++7 COM clients to assure that finalization occurs at shutdown as expected:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;#include "mscoree.h"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;…&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;CorExitProcess(0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;==========&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://yalecny.org/aggbug.aspx?PostID=350" width="1" height="1"&gt;</description></item><item><title>Expanding or Collapsing all nodes in the Solution Explorer</title><link>http://yalecny.org/blogs/garyvsta/archive/2007/04/18/Expanding-or-Collapsing-all-nodes-in-the-Solution-Explorer.aspx</link><pubDate>Wed, 18 Apr 2007 20:42:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:337</guid><dc:creator>Gary</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://yalecny.org/blogs/garyvsta/rsscomments.aspx?PostID=337</wfw:commentRss><comments>http://yalecny.org/blogs/garyvsta/archive/2007/04/18/Expanding-or-Collapsing-all-nodes-in-the-Solution-Explorer.aspx#comments</comments><description>&lt;P&gt;Here's a &lt;A href="http://www.falafel.com/community/blogs/vsnet/archive/2006/02/21/Expanding-or-Collapsing-all-nodes-in-the-Solution-Explorer.aspx"&gt;post showing&amp;nbsp;how to&amp;nbsp;collapse and expand all of the items in the Solution Explorer.&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;Your hosting application&amp;nbsp;can provide similar features for the VSTA DTE to make things easier for your VSTA authors.&lt;/P&gt;
&lt;P&gt;Get&amp;nbsp;underlying DTE object&amp;nbsp;from &lt;FONT color=#008080 size=2&gt;VSTADTEProviderClass&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#008080 size=2&gt;&lt;FONT color=#008080 size=2&gt;
&lt;P&gt;IDTEProvider&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; dteProvider = (&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;IDTEProvider&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;VSTADTEProviderClass&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;();&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;mDTE = (EnvDTE.&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;DTE&lt;/FONT&gt;&lt;FONT size=2&gt;)dteProvider.GetDTE(mHostID, 0);&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;and then your application can alter and manipulate the VSTA IDE to your end user's advantage.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://yalecny.org/aggbug.aspx?PostID=337" width="1" height="1"&gt;</description><category domain="http://yalecny.org/blogs/garyvsta/archive/tags/EnvDTE/default.aspx">EnvDTE</category></item><item><title>Macros versus Addins</title><link>http://yalecny.org/blogs/garyvsta/archive/2007/03/21/macros-versus-addins.aspx</link><pubDate>Wed, 21 Mar 2007 15:45:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:313</guid><dc:creator>Gary</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://yalecny.org/blogs/garyvsta/rsscomments.aspx?PostID=313</wfw:commentRss><comments>http://yalecny.org/blogs/garyvsta/archive/2007/03/21/macros-versus-addins.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;The VSTA SDK samples and &lt;A href="http://www.summsoft.com/files/folders/vsta_samples/entry191.aspx"&gt;VAO&lt;/A&gt; include code for ‘Macros’ and ‘Addins’, but this is&amp;nbsp;really nothing more than a conceptual difference created by the application's architecture.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; The SDK samples support a Macro Recorder, which allows the end user to create customizations (macros) without&amp;nbsp;any programming.&amp;nbsp; Your application may support one or both of these concepts.&amp;nbsp; &lt;/SPAN&gt;Any VSTA customization (including a macro) is authored in an addin project, creating an addin assembly.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;1.&amp;nbsp; Macros are typically a set of functions contained in one addin assembly ie:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:maroon;FONT-FAMILY:'Courier New';"&gt;ShapeAppAdvancedCSharpMacros.dll&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;This is the case in the SDK samples.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;Some characteristic typical of macros: &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;macros have no parameters, are recorded, are called from the host application. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;Macros are a specific kind of customization that are usually close to the end-user experience.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;For instance, a macro may be used to automate drawing a frame around a new document.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;The SDK samples load one ‘hardwired’ addin from a specific path that contains all macros recorded by the application’s macro recorder&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;2.&amp;nbsp; Microsoft has determined that &lt;A href="http://blogs.msdn.com/tq/archive/2005/09/13/464811.aspx"&gt;‘Addin’&lt;/A&gt; is the generic term for .Net customizations, extending the functionality of an application.&amp;nbsp; Addins can do most anything.&amp;nbsp; As the &lt;A href="http://www.summsoft.com/files/folders/vsta_samples/entry248.aspx"&gt;Testcon sample&lt;/A&gt; shows, the addin may even contain the bulk of an application.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;A set of Addins are typically a collection of assemblies; each one may serve a more complex purpose than a macro would serve.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;In the samples, there is a path to the application addin folder where all the app addins folders with assemblies are loaded.&amp;nbsp; But this is a completely arbitrary default -- an ISV may provide any number of places to discover and load addin assemblies.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&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; &lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;[] appAddInDirNames = System.IO.&lt;SPAN style="COLOR:teal;"&gt;Directory&lt;/SPAN&gt;.GetDirectories(&lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.appAddInPath);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&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; &lt;SPAN style="COLOR:blue;"&gt;foreach&lt;/SPAN&gt; (&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; appAddInDirName &lt;SPAN style="COLOR:blue;"&gt;in&lt;/SPAN&gt; appAddInDirNames)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&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; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&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; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&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; &lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; appAddInShortName = &lt;SPAN style="COLOR:teal;"&gt;String&lt;/SPAN&gt;.Format(&lt;SPAN style="COLOR:maroon;"&gt;"{0}.dll"&lt;/SPAN&gt;, System.IO.&lt;SPAN style="COLOR:teal;"&gt;Path&lt;/SPAN&gt;.GetFileName(appAddInDirName));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&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; &lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; appAddInFullName = System.IO.&lt;SPAN style="COLOR:teal;"&gt;Path&lt;/SPAN&gt;.Combine(appAddInDirName, appAddInShortName);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&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; &lt;SPAN style="COLOR:blue;"&gt;if&lt;/SPAN&gt; (!System.IO.&lt;SPAN style="COLOR:teal;"&gt;File&lt;/SPAN&gt;.Exists(appAddInFullName))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR:blue;"&gt;continue&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&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;&amp;nbsp; etc…&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&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; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;Addins may or may not be ‘close’ to the end user.&amp;nbsp; Addins may run in the background or in an administrative role