<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.summsoft.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Gary Depue's VSTA Blog</title><subtitle type="html">VSTA Integration experiences and discussion</subtitle><id>http://www.summsoft.com/blogs/garyvsta/atom.aspx</id><link rel="alternate" type="text/html" href="http://www.summsoft.com/blogs/garyvsta/default.aspx" /><link rel="self" type="application/atom+xml" href="http://www.summsoft.com/blogs/garyvsta/atom.aspx" /><generator uri="http://communityserver.org" version="4.0.30619.63">Community Server</generator><updated>2008-03-13T18:29:00Z</updated><entry><title>64-bit setup script for ShapeAppMacroRecordingCSHarp sample</title><link rel="alternate" type="text/html" href="/blogs/garyvsta/archive/2010/01/06/64-bit-setup-script-for-shapeappmacrorecordingcsharp-sample.aspx" /><link rel="enclosure" type="application/octet-stream" length="8382" href="http://www.summsoft.com/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.00.20.14/SetupShapeAppMacroRecordingCSharp64.js" /><id>/blogs/garyvsta/archive/2010/01/06/64-bit-setup-script-for-shapeappmacrorecordingcsharp-sample.aspx</id><published>2010-01-06T15:10:00Z</published><updated>2010-01-06T15:10:00Z</updated><content type="html">&lt;p&gt;With 64-bit Windows,&amp;nbsp;vsta registry entries&amp;nbsp;must be changed from &lt;/p&gt;
&lt;p&gt;32-bit registry: HKLM\\SOFTWARE\\ &lt;/p&gt;
&lt;p&gt;TO&lt;/p&gt;
&lt;p&gt;64-bit registry: HKLM\\SOFTWARE\\Wow6432Node\\&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve attached &lt;span id="ctl00_ctl00_OuterTaskRegion_TaskRegion_TaskRegion_CreatePost_ctl03_PostAttachment_ctl00_serverfilename"&gt;SetupShapeAppMacroRecordingCSharp64.js to demonstrate these changes.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Since&amp;nbsp;setup scripts write to the registry,&amp;nbsp;remember to run the setup scripts as administrator in Windows Vista and Windows 7.&amp;nbsp; &amp;quot;run as administrator&amp;quot; can be accomplished by running&amp;nbsp;CMD (commandline window)&amp;nbsp;as adminstrator or by right-clicking on an executable and selecting run as administrator.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=2014" width="1" height="1"&gt;</content><author><name>Gary</name><uri>http://www.summsoft.com/members/Gary/default.aspx</uri></author></entry><entry><title>How to add a global variable to your AddIn project (VB)</title><link rel="alternate" type="text/html" href="/blogs/garyvsta/archive/2009/04/24/how-to-add-a-global-variable-to-your-addin-project-vb.aspx" /><id>/blogs/garyvsta/archive/2009/04/24/how-to-add-a-global-variable-to-your-addin-project-vb.aspx</id><published>2009-04-24T19:06:00Z</published><updated>2009-04-24T19:06:00Z</updated><content type="html">&lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;It&amp;#39;s simple for&amp;nbsp;your Visual Basic add-in projects/project template to provide a global variable, like &amp;#39;ThisApplication&amp;#39;.&amp;nbsp; This kind of variable gives the end user convenient, VBA-like access to&amp;nbsp;your host application&amp;#39;s object model.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;To&amp;nbsp;define a project-wide global variable, you can declare a &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;Friend&lt;/span&gt;&lt;span style="color:#1f497d;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt; &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;or &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;Public&lt;/span&gt;&lt;span style="color:#1f497d;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt; variable inside a Module:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;Module&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt; globalsMod&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Friend&lt;/span&gt; ThisApplication &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; ApplicationObject&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;End&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;Module&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;We&amp;#39;ve declared a global variable&amp;nbsp;&lt;span style="font-size:x-small;color:#000000;font-family:Courier New;"&gt;ThisApplication &lt;/span&gt;as an instance of the host application&amp;#39;s object model, the type &amp;#39;ApplicationObject&amp;#39;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&lt;span style="font-size:x-small;color:#000000;font-family:Courier New;"&gt;&lt;span style="font-size:small;color:#1f497d;font-family:Calibri;"&gt;When&amp;nbsp;declared as a &lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;Friend&lt;/span&gt;&lt;span style="color:#1f497d;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt; &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;or &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;Public&lt;/span&gt;&lt;span style="color:#1f497d;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt; variable,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;ThisApplication&lt;/span&gt; can be used by any class or module in the project.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Notice below, that the global variable &amp;nbsp;&lt;span style="font-size:x-small;color:#000000;font-family:Courier New;"&gt;ThisApplication&lt;/span&gt; is assigned in &lt;span style="font-size:x-small;color:#000000;font-family:Courier New;"&gt;MacroAddIn_Startup() &lt;/span&gt;in the entrypoint class&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;color:#1f497d;font-family:Calibri;"&gt;Notice the assignment of &lt;span style="font-size:x-small;color:#000000;font-family:Courier New;"&gt;ThisApplication&lt;/span&gt; in&amp;nbsp; MacroAddIn class and its use in both MacroAddIn.Macro1() and Module1.TestModule():&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;Module&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt; Module1&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Sub&lt;/span&gt; TestModule()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;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;MsgBox(ThisApplication.Caption)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;End&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;Module&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;==&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;System.AddIn.AddIn(&lt;span style="color:#a31515;"&gt;&amp;quot;AppAddIn&amp;quot;&lt;/span&gt;, Version:=&lt;span style="color:#a31515;"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;, Publisher:=&lt;span style="color:#a31515;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;, Description:=&lt;span style="color:#a31515;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;Partial&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;Class&lt;/span&gt; MacroAddIn&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Sub&lt;/span&gt; Macro1()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;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;MsgBox(ThisApplication.Caption)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;#Region&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#a31515;"&gt;&amp;quot;Startup Code&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Sub&lt;/span&gt; MacroAddIn_Startup(&lt;span style="color:#0000ff;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Object&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;ByVal&lt;/span&gt; e &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color:#0000ff;"&gt;Handles&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Me&lt;/span&gt;.Startup&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;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;ThisApplication = &lt;span style="color:#0000ff;"&gt;CType&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;Me&lt;/span&gt;.GetOM(), ApplicationObject)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Sub&lt;/span&gt; MacroAddIn_Shutdown(&lt;span style="color:#0000ff;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Object&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;ByVal&lt;/span&gt; e &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color:#0000ff;"&gt;Handles&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Me&lt;/span&gt;.Shutdown&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;#End&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;Region&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;End&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;Class &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:x-small;color:#0000ff;font-family:Courier New;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;The variable declaration and hookup code should be concealed from the end user by hiding them in a&amp;nbsp;hidden file (see &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#0000ff;"&gt;&lt;a href="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/2009/01/22/Adding-a-Hidden-File-to-a-Project-Template.aspx"&gt;&lt;span style="color:#003399;font-family:Verdana;"&gt;Adding a Hidden File to a Project Template&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:small;color:#1f497d;font-family:Calibri;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;color:#1f497d;font-family:Calibri;"&gt;Since our global &lt;span style="font-size:x-small;color:#000000;font-family:Courier New;"&gt;ThisApplication &lt;/span&gt;is a reference to the host application&amp;#39;s object model, it should never be assigned by the end user.&amp;nbsp; A better and safer approach would be to expose the global variable as a ReadOnly Property like this:&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Module&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; globalModule&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Private&lt;/span&gt; _thisApplication &lt;span style="color:blue;"&gt;As&lt;/span&gt; ApplicationObject&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&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;ReadOnly&lt;/span&gt; &lt;span style="color:blue;"&gt;Property&lt;/span&gt; ThisApplication() &lt;span style="color:blue;"&gt;As&lt;/span&gt; ApplicationObject&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;Get&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;Return&lt;/span&gt; _thisApplication&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Get&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Property&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Sub&lt;/span&gt; _AssignApplicationObject(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; thisApplication &lt;span style="color:blue;"&gt;As&lt;/span&gt; ApplicationObject)&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;_thisApplication = thisApplication&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;End&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;Module&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;System.AddIn.AddIn(&lt;span style="color:#a31515;"&gt;&amp;quot;AppAddIn&amp;quot;&lt;/span&gt;, Version:=&lt;span style="color:#a31515;"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;, Publisher:=&lt;span style="color:#a31515;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;, Description:=&lt;span style="color:#a31515;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Partial&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;Class&lt;/span&gt; MacroAddIn&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&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;Sub&lt;/span&gt; Macro1()&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;MsgBox(ThisApplication.Caption)&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;#Region&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#a31515;"&gt;&amp;quot;Startup Code&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Private&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt; MacroAddIn_Startup(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Object&lt;/span&gt;, &lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; e &lt;span style="color:blue;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color:blue;"&gt;Handles&lt;/span&gt; &lt;span style="color:blue;"&gt;Me&lt;/span&gt;.Startup&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;_AssignApplicationObject(&lt;span style="color:blue;"&gt;CType&lt;/span&gt;(&lt;span style="color:blue;"&gt;Me&lt;/span&gt;.GetOM(), ApplicationObject))&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Private&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt; MacroAddIn_Shutdown(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Object&lt;/span&gt;, &lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; e &lt;span style="color:blue;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color:blue;"&gt;Handles&lt;/span&gt; &lt;span style="color:blue;"&gt;Me&lt;/span&gt;.Shutdown&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;#End&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;Region&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;End&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1738" width="1" height="1"&gt;</content><author><name>Gary</name><uri>http://www.summsoft.com/members/Gary/default.aspx</uri></author><category term="Friend" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/Friend/default.aspx" /><category term="global variable" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/global+variable/default.aspx" /><category term="Object  Model" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/Object++Model/default.aspx" /><category term="hidden file" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/hidden+file/default.aspx" /></entry><entry><title>Improvements to IPHTerminateOrphanedVSTA sample</title><link rel="alternate" type="text/html" href="/blogs/garyvsta/archive/2009/04/10/improvements-to-iphterminateorphanedvsta-sample.aspx" /><id>/blogs/garyvsta/archive/2009/04/10/improvements-to-iphterminateorphanedvsta-sample.aspx</id><published>2009-04-10T20:57:00Z</published><updated>2009-04-10T20:57:00Z</updated><content type="html">&lt;p&gt;&lt;span style="font-size:11pt;color:#1f497d;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;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;"&gt;Below are significant improvements to the IPH sample &lt;a href="http://www.summsoft.com/media/p/1292.aspx"&gt;posted here&lt;/a&gt;&amp;nbsp; through the use of global mutexes for cross-process synchronization.&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11pt;color:#1f497d;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;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;"&gt;Question:&amp;nbsp; What does the IPHTerminateOrphanedVSTA sample do?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11pt;color:#1f497d;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;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;"&gt;Answer:&amp;nbsp; You may have noticed that the IDE process (vsta.exe) may be orphaned if the host application crashes or abnormally terminates.&amp;nbsp; The IPHTerminateOrphanedVSTA sample uses an &lt;a href="http://msdn.microsoft.com/en-us/library/cc175661.aspx"&gt;in-process host&lt;/a&gt; to watch for an&amp;nbsp;orphaned vsta process (its own process) and terminates it.&amp;nbsp;&amp;nbsp; It does not interfere when VSTA projects are opened with the standalone VSTA IDE (no host application process).&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;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;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;After you have installed the original&amp;nbsp;IPH sample, the following improvements can be applied to that sample:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11pt;color:#1f497d;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;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:dark2;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;span style="mso-spacerun:yes;"&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#000000;"&gt;VstaRuntimeIntegration.cs&amp;nbsp;: &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#000000;"&gt;Connect() creates a global mutex named after the host app PID, owned by the host process, and stored as &lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;VSTAMutex.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#000000;"&gt;When application Disconnect()s VSTA (when host app exits), it releases the mutex properly.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#1f497d;mso-themecolor:dark2;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#000000;"&gt;VstaRuntimeIntegration.cs&amp;nbsp;: &lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#1f497d;mso-themecolor:dark2;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Mutex&lt;/span&gt;&lt;span style="color:#000000;"&gt; VSTAMutex;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;internal&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; Connect(&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Application&lt;/span&gt;&lt;span style="color:#000000;"&gt; hostApplication)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;&lt;span style="color:#000000;"&gt;.application = hostApplication;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;// Get the current process.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Process&lt;/span&gt;&lt;span style="color:#000000;"&gt; currentProcess = &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Process&lt;/span&gt;&lt;span style="color:#000000;"&gt;.GetCurrentProcess();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;span style="color:#2b91af;"&gt;Mutex&lt;/span&gt;&lt;span style="color:#000000;"&gt;.OpenExisting(&lt;/span&gt;&lt;span style="color:#a31515;"&gt;@&amp;quot;Global\&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;+ &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;Visual Studio Tools for Applications Host Process&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; + currentProcess.Id.ToString());&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;catch&lt;/span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt;&lt;span style="color:#000000;"&gt; ex)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// Create a global mutex with a unique name based on the application&amp;rsquo;s processID.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;VSTAMutex = &lt;/span&gt;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Mutex&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&lt;span style="color:#000000;"&gt;, &lt;/span&gt;&lt;span style="color:#a31515;"&gt;@&amp;quot;Global\&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; + &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;Visual Studio Tools for Applications Host Process&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; + currentProcess.Id.ToString());&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;// Create a Service Provider.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;InstantiateServiceProvider();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;// Load Application Level AddIns.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;LoadAppLevelAddIns();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;// Load Macros In-Process.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;LoadMacrosInProcess();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#1f497d;mso-themecolor:dark2;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;internal&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; Disconnect()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;VSTAMutex.ReleaseMutex();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;VSTAMutex.Close();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;catch&lt;/span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt;&lt;span style="color:#000000;"&gt; ex)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#1f497d;mso-themecolor:dark2;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#000000;"&gt;IPH.cs&amp;nbsp;: &lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#000000;"&gt;Notice that the polling loop has been replaced with two global mutexes (or system mutexes).&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#000000;"&gt;The IPH looks through all processes for the host application process with a unique global mutex&amp;nbsp;name originating with the host application:&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#a31515;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;@&amp;quot;Global\&amp;quot;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt; + &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;Visual Studio Tools for Applications Host Process&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; + hostproc.Id.ToString()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#000000;"&gt;When this process is found the IPH creates a unique global mutex (VSTAHostMonitorMutex) with the name:&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#a31515;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;@&amp;quot;Global\&amp;quot;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt; + &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;Visual Studio Tools for Applications Host Monitor&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; + hostProc.Id.ToString());&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#000000;"&gt;and creates a monitor thread.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The monitor thread will open the existing host mutex (&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;VSTAHostMutex&lt;/span&gt;) and block or &amp;lsquo;wait&amp;rsquo; for the host process to release its mutex (when the host closes or crashes).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If the VSTA IDE process (vsta.exe) is orphaned, the thread will terminate its process, vsta.exe (the IDE).&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#000000;"&gt;VSTAHostMonitorMutex is assigned when the IPH is loaded for the first time only because OpenExisting() fails with an exception this first time:&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Mutex&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;.OpenExisting(&lt;/span&gt;&lt;span style="color:#a31515;"&gt;@&amp;quot;Global\&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; + &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;Visual Studio Tools for Applications Host Monitor&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; + vstaHostProc.Id.ToString());&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#000000;"&gt;When the IPH is loaded additional times, OpenExisting() of the host monitor mutex does not fail, which means that no duplicate monitor threads are created.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#000000;"&gt;IPH.cs&amp;nbsp;: &lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:#1f497d;mso-themecolor:dark2;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt; System;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt; System.Collections.Generic;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt; System.Linq;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt; System.Text;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt; Microsoft.VisualStudio.Tools.Applications.DesignTime;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt; Microsoft.VisualStudio.Tools.Applications.DesignTime.Interop;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt; System.Diagnostics;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt; System.Threading;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;//IPHTerminateOrphanedVSTA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5993c97a24fb6aa3, processorArchitecture=MSIL&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;//{2CD68381-5859-4afe-88AC-42D13CD4B335}&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;namespace&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt; IPHTerminateOrphanedVSTA&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;class&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IPH&lt;/span&gt;&lt;span style="color:#000000;"&gt; : &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IInProcessHost&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//To debug this IPH follow this sequence:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//1. start ShapeAppMacroRecordingCSharp sample directly from .exe or select &amp;#39;Debug | Start Without Debugging&amp;#39; in VS &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//2. Launch VSTA IDE (Alt + F11), should load a macro project with no IPH&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;(if macro project has IPH, just remove entry &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;InProcHost&amp;gt;{2CD68381-5859-4afe-88AC-42D13CD4B335}&amp;lt;/InProcHost&amp;gt; from ShapeAppMacros.csproj before &amp;#39;Tools | ShowIDE&amp;#39; opens it).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//3. In VS, &amp;#39;Debug | Attach To Process...&amp;#39;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;select vsta.exe&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//4. In VSTA IDE, &amp;#39;File | New Project&amp;#39;, select CSharp template, discard open project and this IPH (IPHTerminateOrphanedVSTA.IPH.SetAdapter() should be called.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//5. From &amp;#39;Task Manager&amp;#39;, kill ShapeAppCSharp.exe and the CheckForHostObserverThread.CheckforHostProcess should drop into section where this call is made:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.Diagnostics.Process vstaProc = System.Diagnostics.Process.GetCurrentProcess(); so that vsta.exe can be terminated.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//mutex is used to block monitor thread executing shutdown until host closes or crashes&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Mutex&lt;/span&gt;&lt;span style="color:#000000;"&gt; VSTAHostMutex;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Process&lt;/span&gt;&lt;span style="color:#000000;"&gt; vstaHostProc;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//mutex is used create single monitor thread (thread ensures vsta.exe is always terminated when host terminates)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Mutex&lt;/span&gt;&lt;span style="color:#000000;"&gt; VSTAHostMonitorMutex;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:blue;font-family:&amp;#39;Courier New&amp;#39;;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;#region&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt; IInProcessHost Members&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; SetAdapter(&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IVstaHostAdapter&lt;/span&gt;&lt;span style="color:#000000;"&gt; newHostAdapter)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//get vstaHostProc from globalMutex created by host&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Process&lt;/span&gt;&lt;span style="color:#000000;"&gt;[] procs = System.Diagnostics.&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Process&lt;/span&gt;&lt;span style="color:#000000;"&gt;.GetProcesses();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Process&lt;/span&gt;&lt;span style="color:#000000;"&gt; proc &lt;/span&gt;&lt;span style="color:blue;"&gt;in&lt;/span&gt;&lt;span style="color:#000000;"&gt; procs)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Mutex&lt;/span&gt;&lt;span style="color:#000000;"&gt;.OpenExisting(&lt;/span&gt;&lt;span style="color:#a31515;"&gt;@&amp;quot;Global\&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; + &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;Visual Studio Tools for Applications Host Process&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; + proc.Id.ToString());&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//we identified host application process via the global mutex it created with its own procid &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;vstaHostProc = proc;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;break&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;span style="color:blue;"&gt;catch&lt;/span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//if no mutex, then try the next proc&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (vstaHostProc != &lt;/span&gt;&lt;span style="color:blue;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;span style="color:green;"&gt;//create an exclusive VSTAHostMonitorMutex, based on unique PID, to assure that only one monitor thread exists&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Mutex&lt;/span&gt;&lt;span style="color:#000000;"&gt;.OpenExisting(&lt;/span&gt;&lt;span style="color:#a31515;"&gt;@&amp;quot;Global\&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; + &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;Visual Studio Tools for Applications Host Monitor&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; + vstaHostProc.Id.ToString());&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;span style="color:blue;"&gt;catch&lt;/span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//first instance creating this unique mutex, so create monitor thread&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;VSTAHostMonitorMutex = &lt;/span&gt;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Mutex&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&lt;span style="color:#000000;"&gt;, &lt;/span&gt;&lt;span style="color:#a31515;"&gt;@&amp;quot;Global\&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; + vstaHostProc.Id.ToString());&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//thread will wait on host mutex for host to terminiate terminate vsta.exe (IDE) if needed&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;ThreadStart&lt;/span&gt;&lt;span style="color:#000000;"&gt; MonitorThread = &lt;/span&gt;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;ThreadStart&lt;/span&gt;&lt;span style="color:#000000;"&gt;(MonitorThreadMethod);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Thread&lt;/span&gt;&lt;span style="color:#000000;"&gt; t = &lt;/span&gt;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Thread&lt;/span&gt;&lt;span style="color:#000000;"&gt;(MonitorThread);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;t.Start();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:blue;font-family:&amp;#39;Courier New&amp;#39;;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;#endregion&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt; IInProcessHost Members&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:blue;font-family:&amp;#39;Courier New&amp;#39;;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;#region&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt; MonitorThread &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; MonitorThreadMethod()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//Console.WriteLine(&amp;quot;VSTA.exe Monitor thread - Started&amp;quot;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;span style="color:green;"&gt;//monitoring thread opens the first global mutex, named after the vstaHostProcID, and waits for it&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;VSTAHostMutex = &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Mutex&lt;/span&gt;&lt;span style="color:#000000;"&gt;.OpenExisting(&lt;/span&gt;&lt;span style="color:#a31515;"&gt;@&amp;quot;Global\&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; + &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;Visual Studio Tools for Applications Host Process&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; + vstaHostProc.Id.ToString());&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;VSTAHostMutex.WaitOne();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//proper shutdown does not require call to &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//TerminateVSTA();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;span style="color:blue;"&gt;catch&lt;/span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;AbandonedMutexException&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//If I get an Abandoned mutex exception, it means that the host app has crashed without releasing properly the global mutex. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//Hence I quit the DTE. . . . . &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;TerminateVSTA();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;span style="color:blue;"&gt;catch&lt;/span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//If it cannot be opened (exception), it is a fatal error. . . . . &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;TerminateVSTA();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;span style="color:blue;"&gt;finally&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//Otherwise, my host&amp;#39;s mutex was released properly at the end of life of the host app, &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//I release it too properly and exit my thread. . . . . &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;VSTAHostMutex.ReleaseMutex();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;&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;VSTAHostMutex.Close();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//Console.WriteLine(&amp;quot;VSTA.exe Monitor thread - Returned&amp;quot;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; TerminateVSTA()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;// ...time to close vsta.exe and wind down this thread.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;System.Diagnostics.&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Process&lt;/span&gt;&lt;span style="color:#000000;"&gt; vstaProc = System.Diagnostics.&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Process&lt;/span&gt;&lt;span style="color:#000000;"&gt;.GetCurrentProcess();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (!vstaProc.HasExited)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;vstaProc.Kill();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;span style="color:blue;"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//safety check:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;//if no vsta.exe -- vstaProc.HasExited, and somehow this thread is still running, then abort this thread &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;System.Threading.&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Thread&lt;/span&gt;&lt;span style="color:#000000;"&gt;.CurrentThread.Abort();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;catch&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="color:blue;font-family:&amp;#39;Courier New&amp;#39;;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;#endregion&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt; MonitorThread &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1727" width="1" height="1"&gt;</content><author><name>Gary</name><uri>http://www.summsoft.com/members/Gary/default.aspx</uri></author><category term="VSTA 2.0" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/VSTA+2.0/default.aspx" /><category term="global mutex" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/global+mutex/default.aspx" /><category term="In-process host" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/In-process+host/default.aspx" /><category term="mutex" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/mutex/default.aspx" /></entry><entry><title>Plain speak on VSTA add-in versioning and compatibility </title><link rel="alternate" type="text/html" href="/blogs/garyvsta/archive/2009/03/20/plain-speak-on-vsta-add-in-versioning-and-compatibility.aspx" /><id>/blogs/garyvsta/archive/2009/03/20/plain-speak-on-vsta-add-in-versioning-and-compatibility.aspx</id><published>2009-03-20T15:47:00Z</published><updated>2009-03-20T15:47:00Z</updated><content type="html">&lt;p style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;Recent discussions have helped me&amp;nbsp;clarify this confusing topic of versioning and compatibility.&amp;nbsp; Maybe this will help you too.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;VSTA add-ins assemblies are created by building a VSTA add-in project.&amp;nbsp; Add-in &lt;em&gt;assemblies&lt;/em&gt; and add-in &lt;em&gt;projects&lt;/em&gt; are seperate, but related entities.&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;1)&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&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:11pt;color:#1f497d;font-family:Calibri;"&gt;VSTA Project backwards compatibility &amp;ndash; i.e. add-in projects created in older versions of VSTA will open in future version of the VSTA.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;sect;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;"&gt;Supported&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;2)&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&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:11pt;color:#1f497d;font-family:Calibri;"&gt;VSTA Project forwards compatibility &amp;ndash; i.e. add-in projects created in newer version of VSTA will open in older versions of the VSTA.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;sect;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;"&gt;Not supported&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;"&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;3)&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&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:11pt;color:#1f497d;font-family:Calibri;"&gt;Round-trip compatibility of an project &amp;ndash; i.e., a project can open in &lt;i style="mso-bidi-font-style:normal;"&gt;any&lt;/i&gt; version of a VSTA, older or newer.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;sect;&lt;span style="font-family:&amp;#39;Times New Roman&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;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;"&gt;Not supported&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;font color="#1f497d" face="Calibri" style="FONT-SIZE:11pt;"&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;4)&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&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:11pt;color:#1f497d;font-family:Calibri;"&gt;Binary backwards compatibility of add-in assembly &amp;ndash; i.e. add-ins created in older version of VSTA-enabled application can still run without recompilation in future versions of the VSTA-enabled application.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;sect;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;"&gt;Supported&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;5)&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&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:11pt;color:#1f497d;font-family:Calibri;"&gt;Source level, backwards compatibility of add-in assembly (whenever binary compatibility is not required or not an option) &amp;ndash; i.e. add-ins created in an older version of VSTA-enabled application must be recompiled to run in a newer version, but no source code needs to change.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;sect;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;"&gt;Supported&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;6)&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&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:11pt;color:#1f497d;font-family:Calibri;"&gt;Binary &lt;i&gt;forwards&lt;/i&gt; compatibility where an add-in assembly created in a newer version of VSTA-enabled application can still run against an older version of the app without recompilation, provided that its code logic is aware of the older app&amp;rsquo;s functional limitations.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;sect;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;"&gt;Supported&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;"&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;7)&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&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:11pt;color:#1f497d;font-family:Calibri;"&gt;Round-trip compatibility of an add-in &amp;ndash; i.e., an add-in assembly can run in &lt;i style="mso-bidi-font-style:normal;"&gt;any&lt;/i&gt; version of a VSTA-enabled application, older or newer.
&lt;p style="margin:0in 0in 0pt 1in;text-indent:-0.25in;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;sect;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;"&gt;Supported&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:Calibri;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1716" width="1" height="1"&gt;</content><author><name>Gary</name><uri>http://www.summsoft.com/members/Gary/default.aspx</uri></author><category term="versioning" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/versioning/default.aspx" /><category term="compatibility" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/compatibility/default.aspx" /></entry><entry><title>Nullable&lt;T&gt; types:  Reflection doesn't determine a Nullable type, overloadng is cool solution, but using inferred types is better!</title><link rel="alternate" type="text/html" href="/blogs/garyvsta/archive/2009/03/05/Nullable-T-types_3A00_-Reflection-doesn_2700_t-determine-a-Nullable-type_2C00_-overloadng-is-cool-solution_2C00_-but-using-inferred-types-is-better_2100_.aspx" /><id>/blogs/garyvsta/archive/2009/03/05/Nullable-T-types_3A00_-Reflection-doesn_2700_t-determine-a-Nullable-type_2C00_-overloadng-is-cool-solution_2C00_-but-using-inferred-types-is-better_2100_.aspx</id><published>2009-03-05T16:45:00Z</published><updated>2009-03-05T16:45:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;To get the type of a variable, we can usually use instance.GetType();&amp;nbsp; But for Nullable&amp;lt;T&amp;gt; types, GetType reflection &lt;a href="http://msdn.microsoft.com/en-us/library/ms366789.aspx"&gt;&lt;span style="color:windowtext;text-decoration:none;text-underline:none;"&gt;returns the &lt;/span&gt;&lt;/a&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms366789.aspx"&gt;&lt;span style="font-size:xx-small;font-family:Verdana;"&gt;returns the underlying type&lt;/span&gt;&lt;/a&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms366789.aspx"&gt;&lt;span style="font-size:xx-small;font-family:Verdana;"&gt;.&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;That is:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Courier New;"&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;int&lt;/span&gt; i = 0;&lt;/span&gt;&lt;/p&gt;
&lt;span style="font-family:Courier New;"&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;isInteger = i.GetType().Equals(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;)); &lt;span style="color:#008000;"&gt;//isInteger == true&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="font-size:xx-small;color:#000000;font-family:Verdana;"&gt;but reflection on a Nullable&amp;lt;T&amp;gt; varaible returns the underlying type&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&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;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Nullable&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;gt; iNullable = 0;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="color:#000000;"&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;isNullable = iNullable.GetType().Equals(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Nullable&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;lt;&amp;gt;)); &lt;/span&gt;&lt;span style="color:#008000;"&gt;//isNullable == false; GetType returns int32&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Courier New;"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;Overloading is cool way to test for Nullable&amp;lt;T&amp;gt; variable instance, but inferred typing is even better!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#008000;"&gt;//Using overloading, you can determine if a varaible is a nullable type, but you must know all possible test types:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#808080;"&gt;///&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color:#008000;"&gt;Identify a Nullable Type&lt;/span&gt;&lt;span style="color:#808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; IsNullableType(&lt;span style="color:#2b91af;"&gt;Nullable&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&amp;gt; n)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; IsNullableType(&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; i)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#008000;"&gt;//Using an inferred TypeParam, you can determine if a varaible is a nullable type for any variable type!:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#808080;"&gt;///&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color:#008000;"&gt;Identify a Nullable Type&lt;/span&gt;&lt;span style="color:#808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; NullableType&amp;lt;T&amp;gt;(T value)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; type = &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(T);&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; (type.IsGenericType &amp;amp;&amp;amp; type.GetGenericTypeDefinition() == &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Nullable&lt;/span&gt;&amp;lt;&amp;gt;));&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Main()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;bool&lt;/span&gt; isNullable;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;int&lt;/span&gt; i = 0;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;bool&lt;/span&gt; isInteger = i.GetType().Equals(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;)); &lt;span style="color:#008000;"&gt;//isInteger == false;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;isNullable = IsNullableType(i); &lt;span style="color:#008000;"&gt;//isNullable == false;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;isNullable = NullableType(i); &lt;span style="color:#008000;"&gt;//isNullable == false;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#2b91af;"&gt;Nullable&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&amp;gt; iNullable = 0;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;isNullable = iNullable.GetType().Equals(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;Nullable&lt;/span&gt;&amp;lt;&amp;gt;)); &lt;span style="color:#008000;"&gt;//isNullable == false;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;isNullable = IsNullableType(iNullable); &lt;span style="color:#008000;"&gt;//isNullable == true;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;isNullable = NullableType(iNullable); &lt;span style="color:#008000;"&gt;//isNullable == true;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#2b91af;"&gt;Nullable&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff;"&gt;double&lt;/span&gt;&amp;gt; d = 0;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;isNullable = d.GetType().Equals(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;Nullable&lt;/span&gt;&amp;lt;&amp;gt;)); &lt;span style="color:#008000;"&gt;//isNullable == false;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;isNullable = IsNullableType(d); &lt;span style="color:#008000;"&gt;//Compiler Error&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;1&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;The best overloaded method match for xxx.Program.IsNullableType(int?)&amp;#39; has some invalid arguments&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;isNullable = NullableType(d); &lt;span style="color:#008000;"&gt;//isNullable == true;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;
&lt;p&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;
&lt;p&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1708" width="1" height="1"&gt;</content><author><name>Gary</name><uri>http://www.summsoft.com/members/Gary/default.aspx</uri></author></entry><entry><title>Preserving 'hidden' elements in a COM interop assembly </title><link rel="alternate" type="text/html" href="/blogs/garyvsta/archive/2009/02/06/preserving-hidden-elements-in-a-com-interop-assembly.aspx" /><id>/blogs/garyvsta/archive/2009/02/06/preserving-hidden-elements-in-a-com-interop-assembly.aspx</id><published>2009-02-06T20:42:00Z</published><updated>2009-02-06T20:42:00Z</updated><content type="html">&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;mso-bidi-font-family:Arial;"&gt;&lt;span style="font-family:Calibri;"&gt;If you are shipping interop assemblies or PIAs of COM type libraries, you may have some elements in your type library marked as hidden.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;But, C# and VB Intellisense show these hidden elements anyway.&amp;nbsp; This problem can be fixed with some low level work.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This information may help you with the task.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;mso-bidi-font-family:Arial;"&gt;&lt;span style="font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;mso-bidi-font-family:Arial;"&gt;&lt;span style="font-family:Calibri;"&gt;To create interop assemblies, Tlbimp.exe takes as input your COM type libraries.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Tlbimp.exe does preserve the &amp;quot;hidden&amp;quot; flag in the interop assembly it generates, in fact, the VS 2008 Object Browser correctly interprets the flag but C# and VB Intellisense doesn&amp;#39;t. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;mso-bidi-font-family:Arial;"&gt;&lt;span style="font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;mso-bidi-font-family:Arial;"&gt;&lt;span style="font-family:Calibri;"&gt;To fix this problem we must add an attribute to any members in the interop assembly that shouldn&amp;rsquo;t appear in IntelliSense.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Here is the attribute: [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)].&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;mso-bidi-font-family:Arial;"&gt;&lt;span style="font-family:Calibri;"&gt;By modifying the interop assembly, we can add this attribute to the interop assembly.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Editing an interop assembly is called &amp;lsquo;round-tripping&amp;rsquo; the Interop assembly. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;mso-bidi-font-family:Arial;"&gt;&lt;span style="font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;mso-bidi-font-family:Arial;"&gt;&lt;span style="font-family:Calibri;"&gt;&amp;lsquo;Round-tripping&amp;rsquo; the Interop assembly is accomplished by modifying the IL code of your interop assembly.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The IL is generated by feeding ILDASM the interop assembly.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Next, add the EditorBrowsable attribute on hidden members in the IL code.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Finally re-assemble the IL code into the Interop assembly again.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This is quickly described by the authority, Adam Nathan, in this blog,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt; &lt;span style="color:#000080;"&gt;&lt;a href="http://www.informit.com/articles/article.aspx?p=26996"&gt;Tricks for Modifying Interop Assemblies&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12pt;mso-bidi-font-family:Arial;"&gt;&lt;span style="font-family:Calibri;"&gt;and described&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;mso-bidi-font-family:Arial;"&gt;&lt;span style="font-family:Calibri;"&gt;in detail in the boo&lt;span style="color:#000080;"&gt;k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#000080;font-family:Arial;"&gt; &lt;a href="http://www.amazon.com/NET-COM-Complete-Interoperability-Guide/dp/067232170X/"&gt;.NET and COM: The Complete Interoperability Guide&lt;/a&gt; &lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:12pt;color:#000080;mso-bidi-font-family:Arial;"&gt;by Adam Nathan.&lt;/span&gt;&lt;span style="font-size:10pt;color:#000080;font-family:Arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#000080;font-family:Arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;mso-bidi-font-family:Arial;"&gt;&lt;span style="font-family:Calibri;"&gt;The hidden flag is manifested in&amp;nbsp;interop assembly metadata as a&amp;nbsp; System.Runtime.InteropServices.TypeLibFuncAttribute(64)]where 64 == FUNCFLAGS Enumeration value of&amp;nbsp; FUNCFLAG_FHIDDEN&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#8064a2;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;"&gt;Like this:&lt;/span&gt;&lt;span style="color:#8064a2;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" style="width:100%;mso-cellspacing:0in;mso-padding-alt:0in 0in 0in 0in;" class="MsoNormalTable"&gt;

&lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;td style="padding-right:3.75pt;padding-left:3.75pt;padding-bottom:3pt;padding-top:3pt;background-color:transparent;border:#ece9d8;"&gt;
&lt;span style="font-size:x-small;font-family:Consolas;"&gt;[&lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplAttribute/.ctor(System.Runtime.CompilerServices.MethodImplOptions)" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplAttribute/.ctor(System.Runtime.CompilerServices.MethodImplOptions)
System.Runtime.CompilerServices.MethodImplAttribut"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;MethodImpl&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;(&lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplOptions" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplOptions
System.Runtime.CompilerServices.MethodImplOptions"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;MethodImplOptions&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;.&lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplOptions/InternalCall" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplOptions/InternalCall
MethodImplOptions System.Runtime.CompilerServices.MethodImplOptions.InternalCall;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;InternalCall&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;, &lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplAttribute/MethodCodeType:System.Runtime.CompilerServices.MethodCodeType" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplAttribute/MethodCodeType:System.Runtime.CompilerServices.MethodCodeType
MethodCodeType System.Runtime.CompilerService"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;MethodCodeType&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;=&lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodCodeType" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodCodeType
System.Runtime.CompilerServices.MethodCodeType"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;MethodCodeType&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;.&lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodCodeType/Runtime" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodCodeType/Runtime
MethodCodeType System.Runtime.CompilerServices.MethodCodeType.Runtime;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;Runtime&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;), &lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.InteropServices.DispIdAttribute/.ctor(Int32)" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.InteropServices.DispIdAttribute/.ctor(Int32)
System.Runtime.InteropServices.DispIdAttribute.DispIdAttribute(int);"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;DispId&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;(&lt;span style="color:#800000;"&gt;6&lt;/span&gt;), &lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.InteropServices.TypeLibFuncAttribute/.ctor(Int16)" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.InteropServices.TypeLibFuncAttribute/.ctor(Int16)
System.Runtime.InteropServices.TypeLibFuncAttribute.TypeLibFuncAttribute(short);"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="font-size:13.5pt;font-family:Consolas;"&gt;TypeLibFunc&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;span style="font-size:13.5pt;font-family:Consolas;"&gt;((&lt;/span&gt;&lt;/strong&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int16" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int16
System.Int16"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="font-size:13.5pt;font-family:Consolas;"&gt;short&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;span style="font-size:13.5pt;font-family:Consolas;"&gt;) &lt;span style="color:#800000;"&gt;0x40&lt;/span&gt;)]&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Void" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Void
System.Void"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;void&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt; &lt;b&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://ShapeAppMFC.interop:1.0.0.0:0a5661036478897f/ShapeApp.Proxy.IShape/Draw(IntPtr)" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://ShapeAppMFC.interop:1.0.0.0:0a5661036478897f/ShapeApp.Proxy.IShape/Draw(IntPtr)"&gt;Draw&lt;/a&gt;&lt;/b&gt;([&lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.InteropServices.InAttribute/.ctor()" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.InteropServices.InAttribute/.ctor()
System.Runtime.InteropServices.InAttribute.InAttribute();"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;In&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;] &lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IntPtr" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IntPtr
System.IntPtr"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;IntPtr&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Consolas;"&gt; hdc);&lt;/span&gt;&lt;/span&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Here&amp;#39;s what I&amp;#39;ve discovered with my own investigation using the ShapeAppMFC sample:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;[Note: the source&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;files -- ShapeAppMFC.idl, &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;ShapeAppMFC.tlb, ShapeAppMFC.interop.dll are all available in the VSTA 2.0 SDK]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#8064a2;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;"&gt;1.&amp;nbsp; The ShapeAppMFC sample in&amp;nbsp;the VSTA SDK includes a COM typelibrarywith an interface that has a hidden method marked in the ShapeAppMFC.idl file:&lt;/span&gt;&lt;span style="color:#8064a2;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#8064a2;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#8064a2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [id(6), helpstring(&amp;quot;method Draw&amp;quot;), &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size:12pt;color:#8064a2;font-family:Calibri;"&gt;hidden&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#8064a2;"&gt;] HRESULT Draw([in] PVOID hdc);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp; This&amp;nbsp;method is defined in IDL&amp;nbsp;interface IShape : IDispatch{&lt;/span&gt;&lt;span style="color:#8064a2;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#8064a2;"&gt;[&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; object,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uuid(AA4B9334-63A0-4C8B-AEE1-A759C0E66209),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dual,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nonextensible,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; helpstring(&amp;quot;IShape Interface&amp;quot;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pointer_default(unique)&lt;br /&gt;]&lt;br /&gt;interface IShape : IDispatch{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [propget, id(1), helpstring(&amp;quot;property Color&amp;quot;)] HRESULT Color([out, retval] IColorInfo** pVal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [propput, id(1), helpstring(&amp;quot;property Color&amp;quot;)] HRESULT Color([in] IColorInfo* newVal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [propget, id(2), helpstring(&amp;quot;property Size&amp;quot;)] HRESULT Size([out, retval] ISizeInfo** pVal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [propput, id(2), helpstring(&amp;quot;property Size&amp;quot;)] HRESULT Size([in] ISizeInfo* newVal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [propget, id(3), helpstring(&amp;quot;property Location&amp;quot;)] HRESULT Location([out, retval] IPointInfo** pVal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [propput, id(3), helpstring(&amp;quot;property Location&amp;quot;)] HRESULT Location([in] IPointInfo* newVal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [propget, id(4), helpstring(&amp;quot;property Name&amp;quot;)] HRESULT Name([out, retval] BSTR* pVal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [id(5), helpstring(&amp;quot;method ContainsPoint&amp;quot;)] HRESULT ContainsPoint([in] IPointInfo* p, [out,retval] VARIANT_BOOL* retVal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [id(6), helpstring(&amp;quot;method Draw&amp;quot;), hidden] HRESULT Draw([in] PVOID hdc);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [id(7), helpstring(&amp;quot;method Load&amp;quot;)] HRESULT Load(SAFEARRAY(BYTE) savedState);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [id(8), helpstring(&amp;quot;method Save&amp;quot;)] HRESULT Save([out, retval] SAFEARRAY(BYTE) *savedState);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [id(9), helpstring(&amp;quot;method Clone&amp;quot;)] HRESULT Clone([out, retval] IShape **ppNewShape);&lt;br /&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:12pt;"&gt;2. ShapeAppMFC.idl&amp;nbsp;is used to generate the typelibrary, &amp;quot;ShapeAppMFC.tlb&amp;quot; which I&amp;#39;ve also attached.&lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:12pt;"&gt;3. ShapeAppMFC.tlb is consumed by tlbimp to generate a PIA, ShapeAppMFC.interop.dll :&lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:10pt;"&gt;call &amp;quot;%WindowsSDKPath%bin\tlbimp&amp;quot; &amp;quot;%ShapeAppDir%\ShapeAppMFC.exe&amp;quot; /out:&amp;quot;%PIADir%\ShapeAppMFC.interop.dll&amp;quot; /keyfile:&amp;quot;%KeyPath%&amp;quot; /primaryI &lt;/span&gt;&lt;span style="font-size:7.5pt;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:12pt;"&gt;4. Using .Net Reflector, I open ShapeAppMFC.interop.dll and disassemble the method&amp;nbsp;IShape.Draw, Tools &lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" style="width:100%;mso-cellspacing:0in;mso-padding-alt:0in 0in 0in 0in;" class="MsoNormalTable"&gt;

&lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;td style="padding-right:3.75pt;padding-left:3.75pt;padding-bottom:3pt;padding-top:3pt;background-color:transparent;border:#ece9d8;"&gt;
&lt;span style="font-size:x-small;font-family:Consolas;"&gt;[&lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplAttribute/.ctor(System.Runtime.CompilerServices.MethodImplOptions)" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplAttribute/.ctor(System.Runtime.CompilerServices.MethodImplOptions)
System.Runtime.CompilerServices.MethodImplAttribut"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;MethodImpl&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;(&lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplOptions" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplOptions
System.Runtime.CompilerServices.MethodImplOptions"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;MethodImplOptions&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;.&lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplOptions/InternalCall" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplOptions/InternalCall
MethodImplOptions System.Runtime.CompilerServices.MethodImplOptions.InternalCall;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;InternalCall&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;, &lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplAttribute/MethodCodeType:System.Runtime.CompilerServices.MethodCodeType" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplAttribute/MethodCodeType:System.Runtime.CompilerServices.MethodCodeType
MethodCodeType System.Runtime.CompilerService"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;MethodCodeType&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;=&lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodCodeType" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodCodeType
System.Runtime.CompilerServices.MethodCodeType"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;MethodCodeType&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;.&lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodCodeType/Runtime" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodCodeType/Runtime
MethodCodeType System.Runtime.CompilerServices.MethodCodeType.Runtime;"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;Runtime&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;), &lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.InteropServices.DispIdAttribute/.ctor(Int32)" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.InteropServices.DispIdAttribute/.ctor(Int32)
System.Runtime.InteropServices.DispIdAttribute.DispIdAttribute(int);"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;DispId&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;(&lt;span style="color:#800000;"&gt;6&lt;/span&gt;), &lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.InteropServices.TypeLibFuncAttribute/.ctor(Int16)" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.InteropServices.TypeLibFuncAttribute/.ctor(Int16)
System.Runtime.InteropServices.TypeLibFuncAttribute.TypeLibFuncAttribute(short);"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;TypeLibFunc&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;((&lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int16" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int16
System.Int16"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;short&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Consolas;"&gt;) &lt;span style="color:#800000;"&gt;0x40&lt;/span&gt;)]&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Void" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Void
System.Void"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;void&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt; &lt;b&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://ShapeAppMFC.interop:1.0.0.0:0a5661036478897f/ShapeApp.Proxy.IShape/Draw(IntPtr)" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://ShapeAppMFC.interop:1.0.0.0:0a5661036478897f/ShapeApp.Proxy.IShape/Draw(IntPtr)"&gt;Draw&lt;/a&gt;&lt;/b&gt;([&lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.InteropServices.InAttribute/.ctor()" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.InteropServices.InAttribute/.ctor()
System.Runtime.InteropServices.InAttribute.InAttribute();"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;In&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;] &lt;/span&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IntPtr" title="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IntPtr
System.IntPtr"&gt;&lt;span style="font-size:x-small;font-family:Consolas;"&gt;IntPtr&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Consolas;"&gt; hdc);&lt;/span&gt;&lt;/span&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:12pt;"&gt;5.&amp;nbsp; I noticed that there was a unique TypeLibFunc((short)0x40) in the .NET Reflector dissassembly for ISharp.Draw.&lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:12pt;"&gt;6.&amp;nbsp;&amp;nbsp;This typlibfunc attribute also shows up in VS2008 Object Browser: &lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="msonospacing"&gt;&lt;span style="font-size:10pt;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="msonospacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;void Draw(&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#215dc6;"&gt;IntPtr&lt;/span&gt;&lt;/span&gt; &lt;i&gt;hdc&lt;/i&gt;)&lt;/span&gt;&lt;span style="font-size:10pt;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="msonospacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Member of &lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#215dc6;"&gt;ShapeApp.Proxy&lt;/span&gt;&lt;/span&gt;.&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#215dc6;"&gt;IShape&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="msonospacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Summary:&lt;/span&gt;&lt;span style="font-size:10pt;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="msonospacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;method Draw&lt;/span&gt;&lt;span style="font-size:10pt;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="msonospacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Attributes:&lt;/span&gt;&lt;span style="font-size:10pt;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="msonospacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;[System.Runtime.InteropServices.DispIdAttribute(6),&lt;/span&gt;&lt;span style="font-size:10pt;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="msonospacing"&gt;&lt;span style="font-size:small;"&gt;&lt;strong&gt;&lt;span style="font-family:Calibri;"&gt;System.Runtime.InteropServices.TypeLibFuncAttribute(64)]&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size:10pt;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="msonospacing"&gt;&lt;span style="font-size:10pt;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="msonospacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Notice that VS 2008 Object Browser correctly interprets System.Runtime.InteropServices.TypeLibFuncAttribute(64) as a hidden member, and hides the &amp;#39;Draw()&amp;#39; method&amp;nbsp;unless &amp;#39;Show Hidden Types and Members&amp;#39; is switched on in the Object Browser Settings.&amp;nbsp; When the &amp;#39;Draw()&amp;#39; method&amp;nbsp; is shown, it is &lt;span style="color:#808080;"&gt;gray &lt;/span&gt;&lt;span style="color:#000000;"&gt;colored&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;7. MSDN (&lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.funcflags(VS.71).aspx)" title="http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.funcflags(VS.71).aspx)"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span&gt;&lt;span style="font-size:small;"&gt;http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.funcflags(VS.71).aspx)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;"&gt;&lt;span style="font-family:Calibri;"&gt;documents the FUNCFLAGS Enumeration value of &amp;#39;60&amp;#39; as the &lt;strong&gt;&lt;span style="font-family:Calibri;"&gt;FUNCFLAG_FHIDDEN&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1670" width="1" height="1"&gt;</content><author><name>Gary</name><uri>http://www.summsoft.com/members/Gary/default.aspx</uri></author><category term="COM Interop" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/COM+Interop/default.aspx" /><category term="EditorBrowsableAttribute" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/EditorBrowsableAttribute/default.aspx" /><category term="Tlbimp.exe" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/Tlbimp.exe/default.aspx" /><category term="hidden" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/hidden/default.aspx" /><category term="Object Browser" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/Object+Browser/default.aspx" /><category term="PIA" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/PIA/default.aspx" /><category term="VB" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/VB/default.aspx" /><category term="Intellisense" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/Intellisense/default.aspx" /><category term="FUNCFLAG_FHIDDEN" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/FUNCFLAG_5F00_FHIDDEN/default.aspx" /><category term="C#" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/C_2300_/default.aspx" /></entry><entry><title>Using custom adapters with VSTA 2.0 pipeline - Part 3, the ShapeAppBasicCSharpGenericCollectionIndexAdapter sample</title><link rel="alternate" type="text/html" href="/blogs/garyvsta/archive/2009/01/26/using-custom-adapters-with-vsta-2-0-pipeline-part-3-the-shapeappbasiccsharpgenericcollectionindexadapter-sample.aspx" /><id>/blogs/garyvsta/archive/2009/01/26/using-custom-adapters-with-vsta-2-0-pipeline-part-3-the-shapeappbasiccsharpgenericcollectionindexadapter-sample.aspx</id><published>2009-01-26T21:16:00Z</published><updated>2009-01-26T21:16:00Z</updated><content type="html">&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="font-size:18pt;color:#000000;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;ShapeAppBasicCSharpGenericCollectionIndexAdapter &lt;a href="http://www.summsoft.com/media/p/1658.aspx"&gt;sample&lt;/a&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size:11.5pt;color:#000000;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;We&amp;rsquo;ll assume that you&amp;rsquo;ve looked over the previous &lt;a href="http://www.summsoft.com/media/p/1640.aspx"&gt;sample&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;;"&gt;&amp;nbsp;&lt;a href="http://www.summsoft.com/blogs/garyvsta/archive/2009/01/19/using-custom-adapters-with-vsta-2-0-pipeline-part-2-the-shapeappbasiccsharpgenericcollectionadapter-sample.aspx"&gt;&lt;span style="color:#800080;"&gt;from part 2&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:12pt;color:#000000;line-height:115%;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;a href="http://www.summsoft.com/media/p/1658.aspx"&gt;This sample&lt;/a&gt; will demonstrate how to pass a&lt;/span&gt;&lt;span style="font-size:small;"&gt; System.Collections.Generic.IList&amp;lt;ShapeAppCSharp.&lt;span style="color:#2b91af;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt; Document&lt;/span&gt; &lt;span style="font-size:12pt;line-height:115%;font-family:&amp;#39;;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;line-height:115%;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;instance, as a &amp;lsquo;by reference&amp;rsquo; parameter, from an AddIn to&amp;nbsp; ShapeAppBasicCSharp host application.&amp;nbsp; This is accomplished by extending the VSTA pipeline with generic list adapters and converters that provide Host application with a (cross-AppDomain) reference to a generic collection passed from a VSTA AddIn.&amp;nbsp; The host application will, in-turn, populate the AddIn collection parameter with host-side Document objects (as RemoteObject instances).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;To illustrate, here&amp;#39;s an add-in example calling&lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;this&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;[&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;), doctypedocs];:&lt;/span&gt;&lt;span style="font-size:7.5pt;color:#000000;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; AppAddIn_Startup(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt; doctypedocs = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt;();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; count = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;[&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;), doctypedocs];&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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; &lt;/span&gt;testdoc = doctypedocs[0];&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; dwgName2 = doctypedocs[0].Drawings[0].Name;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;span style="font-size:7.5pt;color:#000000;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;Our&amp;nbsp;design goal is for the Add-in author to pass a generic collection parameter to the host application and receive it back populated with host elements.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;In this case, we&amp;rsquo;re using the generic collection&lt;/span&gt;&lt;span style="font-size:7.5pt;font-family:&amp;#39;;"&gt; ( &lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;;"&gt;System.Collections.Generic.&lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;;"&gt;IList&lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&amp;gt;) as the parameter passed to the host.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;span style="font-family:Calibri;"&gt;To accomplish this we&amp;rsquo;ll add a new property to the host class &amp;lsquo;Application&amp;rsquo; in the sample&amp;rsquo;s Application.cs (which contains the main object model class&amp;rsquo; source code): &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;public&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;partial&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;class&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;Application&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt; : System.Windows.Forms.&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;IWin32Window&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;[System.&lt;span style="color:#2b91af;"&gt;Type&lt;/span&gt; type, &lt;span style="color:#2b91af;"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt; documents]&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;get&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;if&lt;/span&gt; (type.FullName.Contains(&lt;span style="color:#a31515;"&gt;&amp;quot;Document&amp;quot;&lt;/span&gt;))&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;// Create a test collection of documents.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt; tempdocs = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt;();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;tempdocs.Add(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.document);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;// add test collection of documents to (byref) document collection parameter.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt; doc &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; tempdocs)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;documents.Add(doc);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;return&lt;/span&gt; documents.Count;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:7.5pt;font-family:&amp;#39;;"&gt;. . .&lt;/span&gt;&lt;span style="font-size:7.5pt;color:#000000;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;Then we add the host method&amp;rsquo;s complement into the proxy object model assembly source in the sample&amp;rsquo;s proxy.cs class,&lt;/span&gt;&lt;span style="font-size:7.5pt;font-family:&amp;#39;;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12pt;color:#2b91af;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;ApplicationEntryPoint&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:7.5pt;font-family:&amp;#39;;"&gt;:&lt;/span&gt;&lt;span style="font-size:7.5pt;color:#000000;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:12pt;color:#0000ff;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;global&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;::System.AddIn.Pipeline.&lt;/span&gt;&lt;span style="font-size:12pt;color:#2b91af;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;AddInBaseAttribute&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;(ActivatableAs = &lt;/span&gt;&lt;span style="font-size:12pt;color:#0000ff;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;new&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;color:#0000ff;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;global&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;::System.&lt;/span&gt;&lt;span style="font-size:12pt;color:#2b91af;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;Type&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;[] { &lt;/span&gt;&lt;span style="font-size:12pt;color:#0000ff;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;typeof&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;(ShapeAppCSharp.&lt;/span&gt;&lt;span style="font-size:12pt;color:#2b91af;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;IShapeAppEntryPoint&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;) })]&lt;/span&gt;&lt;span style="font-size:7.5pt;color:#000000;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12pt;color:#0000ff;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;color:#0000ff;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;partial&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;color:#0000ff;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;class&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;color:#2b91af;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;ApplicationEntryPoint&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt; : &lt;/span&gt;&lt;span style="font-size:12pt;color:#0000ff;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;global&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;::ShapeAppCSharp.&lt;/span&gt;&lt;span style="font-size:12pt;color:#2b91af;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;IShapeAppEntryPoint&lt;/span&gt;&lt;span style="font-size:7.5pt;color:#000000;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;span style="font-size:7.5pt;color:#000000;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&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&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;/*uses Custom Adapter for System.Collections.Generic.IList*/&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;[System.&lt;span style="color:#2b91af;"&gt;Type&lt;/span&gt; type, System.Collections.Generic.&lt;span style="color:#2b91af;"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt; documents]&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;get&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#008000;"&gt;//IList&amp;lt;Document&amp;gt; adapter returns a RemoteObjectContract-to-Document converter, so we&amp;#39;ll get list&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;System.Collections.Generic.&lt;span style="color:#2b91af;"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt; tempdocs = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; System.Collections.Generic.&lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt;();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;int&lt;/span&gt; count = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.RemoteObject[type, tempdocs];&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt; doc &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; tempdocs)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ShapeAppCSharp.AddInSideAdapters.&lt;span style="color:#2b91af;"&gt;IRemoteObjectContractToViewAddInAdapter&lt;/span&gt; adapter = tempdocs[0] &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; ShapeAppCSharp.AddInSideAdapters.&lt;span style="color:#2b91af;"&gt;IRemoteObjectContractToViewAddInAdapter&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;documents.Add(adapter.GetView());&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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; &lt;/span&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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;return&lt;/span&gt; documents.Count;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#008000;"&gt;//return this.RemoteObject[type, documents];&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:7.5pt;font-family:&amp;#39;;"&gt;. . . &lt;/span&gt;&lt;span style="font-size:7.5pt;color:#000000;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;Notice that fix-up code replaces the expected&lt;/span&gt;&lt;span style="font-size:7.5pt;font-family:&amp;#39;;"&gt; &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;return&lt;/span&gt;&lt;span style="font-size:10pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;this.RemoteObject[type, documents];&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;The meta OM method description is included in the abstract proxy class&lt;/span&gt;&lt;span style="font-size:7.5pt;font-family:&amp;#39;;"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;Application:&lt;/span&gt;&lt;span style="font-size:7.5pt;color:#000000;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;[&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;global&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;::Microsoft.VisualStudio.Tools.Applications.Runtime.&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;HostTypeAttribute&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;(&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;&amp;quot;ShapeAppCSharp, Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp.Applic&amp;quot;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt; +&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&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&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;&amp;quot;ation&amp;quot;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;)]&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;public&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;abstract&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;partial&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;class&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;Application&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt; : &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;global&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;::System.&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;MarshalByRefObject&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;, &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;global&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;::System.Windows.Forms.&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;IWin32Window&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;{&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&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&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;/*uses Custom Adapter for System.Collections.Generic.IList*/&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;[System.&lt;span style="color:#2b91af;"&gt;Type&lt;/span&gt; type, System.Collections.Generic.&lt;span style="color:#2b91af;"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt; documents]&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;[&lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::Microsoft.VisualStudio.Tools.Applications.Runtime.&lt;span style="color:#2b91af;"&gt;HostMemberAttribute&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Item&amp;quot;&lt;/span&gt;, BindingFlags = &lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::System.Reflection.&lt;span style="color:#2b91af;"&gt;BindingFlags&lt;/span&gt;.Instance | &lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::System.Reflection.&lt;span style="color:#2b91af;"&gt;BindingFlags&lt;/span&gt;.Public | &lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::System.Reflection.&lt;span style="color:#2b91af;"&gt;BindingFlags&lt;/span&gt;.GetProperty)]&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;span style="color:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::System.&lt;span style="color:#2b91af;"&gt;NotImplementedException&lt;/span&gt;(); }&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;. . .&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:13.5pt;color:#000000;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;Adding &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b&gt;&lt;span style="font-size:13.5pt;font-family:&amp;#39;;"&gt;IList&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size:13.5pt;font-family:&amp;#39;;"&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size:13.5pt;font-family:&amp;#39;;"&gt;Document&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size:13.5pt;font-family:&amp;#39;;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:13.5pt;color:#000000;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt; to the VSTA Pipeline &amp;ndash; bi-directional support&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size:9pt;color:#000000;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;We must use custom adapters to pass the&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt; System.Collections.Generic.&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;IList&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt; type through the VSTA pipeline from addIn to host as a reference parameter.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The host must be able to alter the collection&amp;rsquo;s contents.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This is accomplished by overriding, or hooking into the standard VSTA pipeline&amp;rsquo;s view, host adapter, and addin adapter assemblies. &lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;To do this, I revised the pipeline segment assemblies created previously in my part 2 sample.&lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:13.5pt;color:#000000;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;Let&amp;rsquo;s watch it all go&amp;hellip;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h3 style="margin:auto 0in;"&gt;&lt;span style="font-weight:normal;font-size:12pt;color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;We&amp;rsquo;ll look at these interesting snippets in the sequence called by from the AddIn code:&lt;/span&gt;&lt;/h3&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;int&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; count = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;[&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;), doctypedocs];&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="font-size:12pt;color:#4f81bd;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;HostTypeMapProvider&amp;rsquo;s GetTypeForCanonicalName:&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="font-size:12pt;color:#4f81bd;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;In the HostTypeMapProvider&amp;rsquo;s GetTypeForCanonicalName(), we add the VSTA generated -canonical name mapping for &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;IList&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt; ,&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt; the type our addIn passes as parameter.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This causes, ProxyResolve, and AdapterResolve to be fired when passing parameter types with a canonical name that does not exist in the host type map.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; System.&lt;span style="color:#2b91af;"&gt;Type&lt;/span&gt; GetTypeForCanonicalName(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; canonicalName)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (canonicalName == &lt;span style="color:#a31515;"&gt;&amp;quot;Microsoft.VisualStudio.Tools.Applications.Adapter.v9.0, Microsoft.VisualStudio.Tools.Applications.DynamicProxy`1[[System.Collections.Generic.IList`1[[Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp.Document, ShapeAppCSharpProxy, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3c3c0c46dd27dbcf]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(System.Collections.Generic.&lt;span style="color:#2b91af;"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//default fetch from the dictionary&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (canonicalToTypeName.ContainsKey(canonicalName))&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; canonicalToTypeName[canonicalName];&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color:#4f81bd;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color:#4f81bd;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;AddIn-side AdapterResolve:&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;When the AddIn passes a generic collection parameter to the host for its use, the VSTA pipeline calls TypeInfrastructureManager_AdapterResolve to explicitly resolve the &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IList&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;gt; type, and pass a collection contract adapter to the host AppDomain.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;void&lt;/span&gt; TypeInfrastructureManager_AdapterResolve(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;AdapterResolveEventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;if&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(System.Collections.Generic.&lt;span style="color:#2b91af;"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt;).IsAssignableFrom(e.ExpectedType))&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;e.AdapterToReturn = System.AddIn.Pipeline.&lt;span style="color:#2b91af;"&gt;CollectionAdapters&lt;/span&gt;.ToIListContract&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;RemoteObjectAdapter&lt;/span&gt;&amp;gt;(e.ObjectToPack &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; System.Collections.Generic.&lt;span style="color:#2b91af;"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt;, &lt;span style="color:#2b91af;"&gt;DocumentAddInAdapter&lt;/span&gt;.ViewToContractAdapter, &lt;span style="color:#2b91af;"&gt;DocumentAddInAdapter&lt;/span&gt;.ContractToViewAdapter);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color:#4f81bd;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color:#4f81bd;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;Host-side ProxyResolve:&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;When the host receives the IListContract from the AddIn-side adapter, the VSTA pipeline calls TypeInfrastructureManager_ProxyResolve to resolve AddIn&amp;rsquo;s IListContract to a Document List &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;passed to the host application. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;[Find in ShapeAppCSharp.HostSideAdapters.&lt;span style="color:#2b91af;"&gt;IShapeAppEntryPointHostAdapter.&lt;/span&gt; TypeInfrastructureManager_AdapterResolve()]&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;void&lt;/span&gt; TypeInfrastructureManager_ProxyResolve(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;ProxyResolveEventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;if&lt;/span&gt; (e.Adapter &lt;span style="color:#0000ff;"&gt;is&lt;/span&gt; System.AddIn.Contract.&lt;span style="color:#2b91af;"&gt;IListContract&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;RemoteObjectAdapter&lt;/span&gt;&amp;gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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; &lt;/span&gt;e.ProxyToReturn = System.AddIn.Pipeline.&lt;span style="color:#2b91af;"&gt;CollectionAdapters&lt;/span&gt;.ToIList&amp;lt;&lt;span style="color:#2b91af;"&gt;RemoteObjectAdapter&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt;(e.Adapter &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; System.AddIn.Contract.&lt;span style="color:#2b91af;"&gt;IListContract&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;RemoteObjectAdapter&lt;/span&gt;&amp;gt;, &lt;span style="color:#2b91af;"&gt;DocumentHostAdapter&lt;/span&gt;.ContractToViewAdapter, &lt;span style="color:#2b91af;"&gt;DocumentHostAdapter&lt;/span&gt;.ViewToContractAdapter);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color:#4f81bd;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color:#4f81bd;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color:#4f81bd;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;DocumentHostAdapter:&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color:#4f81bd;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;The host application populates the generic document list, via ContractListAdapter.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;When populated, System.AddIn.Pipeline.ListContractAdapter, in turn, hooks up Document pipeline segments to make host documents added into the document list available to the AddIn via a &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;DocumentViewToContractHostAdapter&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;[Find in ShapeAppCSharp.HostSideAdapters]&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DocumentHostAdapter&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&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;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;RemoteObjectAdapter&lt;/span&gt; ViewToContractAdapter(&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt; view)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;if&lt;/span&gt; (view.GetType().Equals(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;IRemoteObjectContractToViewHostAdapter&lt;/span&gt;)))&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;return&lt;/span&gt; ((&lt;span style="color:#2b91af;"&gt;IRemoteObjectContractToViewHostAdapter&lt;/span&gt;)(view)).GetSourceContract();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DocumentViewToContractHostAdapter&lt;/span&gt;(view);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color:#4f81bd;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;DocumentAddInAdapter:&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color:#4f81bd;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;Next, the System.AddIn.Pipeline.ListContractAdapter passes the &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;RemoteObjectAdapter&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt; contract to the AddIn-side Document adapter which holds the contract until the Addin uses one of the Document elements in the generic collection.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DocumentAddInAdapter&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt; ContractToViewAdapter(&lt;span style="color:#2b91af;"&gt;RemoteObjectAdapter&lt;/span&gt; contract)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;if&lt;/span&gt; (((System.Runtime.Remoting.&lt;span style="color:#2b91af;"&gt;RemotingServices&lt;/span&gt;.IsObjectOutOfAppDomain(contract) != &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;amp;&amp;amp; contract.GetType().Equals(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;DocumentViewToContractAddInAdapter&lt;/span&gt;))))&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;return&lt;/span&gt; ((&lt;span style="color:#2b91af;"&gt;DocumentViewToContractAddInAdapter&lt;/span&gt;)(contract)).GetSourceView();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;IRemoteObjectContractToViewAddInAdapter&lt;/span&gt;(contract);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color:#4f81bd;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color:#4f81bd;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;IRemoteObjectContractToViewAddInAdapter&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;To use the Documents in its generic Document collection, the Addin calls the contract to view converter: &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;IRemoteObjectContractToViewAddInAdapter.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;This code converts the &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;RemoteObjectAdapter&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;contract to a &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Document&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; proxy object. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;It is called from the addIn&amp;rsquo;s proxy class &lt;/span&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="color:#2b91af;mso-no-proof:yes;"&gt;ApplicationEntryPoint.&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;IRemoteObjectContractToViewAddInAdapter&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;RemoteObjectAdapter&lt;/span&gt; _contract;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;private&lt;/span&gt; System.AddIn.Pipeline.&lt;span style="color:#2b91af;"&gt;ContractHandle&lt;/span&gt; _handle;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;static&lt;/span&gt; IRemoteObjectContractToViewAddInAdapter()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;public&lt;/span&gt; IRemoteObjectContractToViewAddInAdapter(&lt;span style="color:#2b91af;"&gt;RemoteObjectAdapter&lt;/span&gt; contract)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;_contract = contract;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;_handle = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; System.AddIn.Pipeline.&lt;span style="color:#2b91af;"&gt;ContractHandle&lt;/span&gt;(contract);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#008000;"&gt;// convert RemoteObjectAdapter contract list element to a Document instance&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt; GetView()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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;System.AddIn.Contract.&lt;span style="color:#2b91af;"&gt;IContract&lt;/span&gt; roc = _contract.QueryContract(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(System.AddIn.Contract.Automation.&lt;span style="color:#2b91af;"&gt;IRemoteObjectContract&lt;/span&gt;).AssemblyQualifiedName);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;TypeServices&lt;/span&gt;.ObjectFromContract(roc, &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;), &lt;span style="color:#2b91af;"&gt;IShapeAppEntryPointAddInAdapter&lt;/span&gt;.tim) &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:13.5pt;color:#000000;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:13.5pt;color:#000000;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;In conclusion&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size:9pt;color:#000000;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;ShapeAppBasicCSharpGenericCollectionIndexAdapter shows the use of custom adapters, tightly integrated with the ShapeAppBasicCSharp object model types and the VSTA pipeline, to pass a custom type (generic &lt;/span&gt;&lt;span style="font-size:12pt;color:#2b91af;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;Document&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;list) as a parameter from the addIn to the host.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;By hooking System.AddIn.Pipeline.&lt;/span&gt;&lt;span style="font-size:12pt;color:#2b91af;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;CollectionAdapters&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt; &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;and converters into the VSTA pipeline, and using &lt;/span&gt;&lt;span style="font-size:12pt;color:#2b91af;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;RemoteObjectAdapters &lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;to marshal Document instances across the AppDomain as list elements, the VSTA pipeline is extended,&lt;/span&gt;&lt;span style="font-size:12pt;color:#2b91af;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt; &lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;making it possible for the AddIn to create a generic Document list, pass the Document list to the host application and receive it back, populated with host documents. &amp;nbsp;&lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;By testing, we demonstrated that bi-directional support for &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;IList&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;;"&gt;&amp;gt;, &lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;is available to the VSTA Add-In author.&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:12pt;color:#000000;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1659" width="1" height="1"&gt;</content><author><name>Gary</name><uri>http://www.summsoft.com/members/Gary/default.aspx</uri></author><category term="Addin.Contract" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/Addin.Contract/default.aspx" /><category term="Contract" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/Contract/default.aspx" /><category term="Adapter" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/Adapter/default.aspx" /><category term="VSTA 2.0" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/VSTA+2.0/default.aspx" /><category term="ProxyResolve" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/ProxyResolve/default.aspx" /><category term="AdapterResolve" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/AdapterResolve/default.aspx" /><category term="System.AddIn" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/System.AddIn/default.aspx" /><category term="pipeline" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/pipeline/default.aspx" /><category term="System.AddIn.Pipeline.CollectionAdapters" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/System.AddIn.Pipeline.CollectionAdapters/default.aspx" /><category term="ByRef" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/ByRef/default.aspx" /><category term="converters" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/converters/default.aspx" /><category term="RemoteObjectAdapters" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/RemoteObjectAdapters/default.aspx" /></entry><entry><title>Sequential Description of Host Automation via System.AddIn</title><link rel="alternate" type="text/html" href="/blogs/garyvsta/archive/2009/01/19/sequential-description-of-host-automation-via-system-addin.aspx" /><id>/blogs/garyvsta/archive/2009/01/19/sequential-description-of-host-automation-via-system-addin.aspx</id><published>2009-01-20T02:54:00Z</published><updated>2009-01-20T02:54:00Z</updated><content type="html">&lt;h2 style="margin:10pt 0in 0pt;"&gt;&lt;span style="font-size:medium;color:#4f81bd;font-family:Cambria;"&gt;Add-in activation&lt;/span&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Host app calls System.AddIn.Hosting.AddInToken.Activate.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;System.AddIn Activate, loads the Add-in.dll creating addin instance that implements the Add-In (entrypoint) interface.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Next, System.AddIn loads AddInSideAdapter.dll creating Add-In side Automation Adapter and passes it the AddIn instance to hold as the view.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Add-In side Automation Adapter implements the Automation (entrypoint) contract.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Next, System.AddIn creates a Host-side automation adapter and passes it the AddIn-side adapter instance to hold as the add-in-side contract.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Host-side Automation Adapter implements the Automation view.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="margin:10pt 0in 0pt;"&gt;&lt;span style="font-size:medium;color:#4f81bd;font-family:Cambria;"&gt;Add-in initialization&lt;/span&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Host app calls Automation initialize method of Host-side adapter (view), passing host object model (view) instance as parameter.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Host-side automation adapter converts host objectmodel view to objectmodel contract by creating instance of Object model host adapter contract.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&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;&amp;nbsp; Object model host adapter contract holds host Object model view instance.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Host-side adapter (view) calls AddIn side automation adapter (contract) initialize method, passing object model host adapter contract instance as parameter.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Add-in side automation adapter contract Initialize converts Objectmodel host adapter contract to add-in adapter view by creating instance of Object model addin adapter contract.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&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;&amp;nbsp; Object model AddIn adapter view holds host-side adapter object model contract.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;AddIn side&amp;nbsp; automation adapter calls Add-in (view) Initialize method, passing object model addIn adapter (view) instance.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="margin:10pt 0in 0pt;"&gt;&lt;span style="font-size:medium;color:#4f81bd;font-family:Cambria;"&gt;Host Automation via method call&lt;/span&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Add-in automates host by calling method on object model addin adapter (view). &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Add-in side object model adapter (view) method calls host-side adapter object model contract instance method.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Host-side adapter object model contract method calls host app object model (view) method. &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="margin:10pt 0in 0pt;"&gt;&lt;span style="font-size:medium;color:#4f81bd;font-family:Cambria;"&gt;Host Automation via method call with parameter&lt;/span&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Add-in automates host by calling method on object model addin adapter (view) with custom type parameter view.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Add-in side object model adapter (view) method converts custom type view to add-in side custom type contract parameter. &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Add-in side object model adapter (view) method calls host-side adapter object model contract instance method with add-in side custom type contract parameter.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Host-side adapter object model contract method converts add-in side custom type contract parameter to host-side adapter view type parameter.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Host-side adapter object model contract method calls host app object model (view) method with host-side adapter view type parameter.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1642" width="1" height="1"&gt;</content><author><name>Gary</name><uri>http://www.summsoft.com/members/Gary/default.aspx</uri></author><category term="Addin.Contract" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/Addin.Contract/default.aspx" /><category term="Contract" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/Contract/default.aspx" /><category term="Adapter" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/Adapter/default.aspx" /><category term="System.AddIn" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/System.AddIn/default.aspx" /><category term="pipeline" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/pipeline/default.aspx" /></entry><entry><title>Using custom adapters with VSTA 2.0 pipeline - Part 2, the ShapeAppBasicCSharpGenericCollectionAdapter sample</title><link rel="alternate" type="text/html" href="/blogs/garyvsta/archive/2009/01/19/using-custom-adapters-with-vsta-2-0-pipeline-part-2-the-shapeappbasiccsharpgenericcollectionadapter-sample.aspx" /><id>/blogs/garyvsta/archive/2009/01/19/using-custom-adapters-with-vsta-2-0-pipeline-part-2-the-shapeappbasiccsharpgenericcollectionadapter-sample.aspx</id><published>2009-01-19T19:44:00Z</published><updated>2009-01-19T19:44:00Z</updated><content type="html">&lt;h2 style="margin:12pt 0in 3pt;"&gt;&lt;em&gt;&lt;span style="font-size:large;font-family:Cambria;"&gt;ShapeAppBasicCSharpGenericCollectionAdapter sample&lt;/span&gt;&lt;/em&gt;&lt;/h2&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#000000;line-height:115%;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;This &lt;a href="http://www.summsoft.com/media/p/1640.aspx"&gt;&lt;span style="color:#800080;"&gt;sample&lt;/span&gt;&lt;/a&gt; shows how to pass a System.Collections.Generic.&lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;line-height:115%;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IList&lt;/span&gt;&lt;span style="font-size:10pt;color:#000000;line-height:115%;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;ShapeAppCSharp.&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt; Document&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#000000;line-height:115%;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; &amp;gt; instance from the ShapeAppBasicCSharp host application to its add-in by extending the&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt; VSTA pipeline with adapters&lt;span style="color:#2b91af;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;The list provided to the add-in is a generic, non-serialized list of &lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt; objects that actually exist in the host application.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;To illustrate, here&amp;#39;s an add-in example calling &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;this&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;.GetDocuments();:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; AppAddIn_Startup(&lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;object&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; sender, &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;EventArgs&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; e)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:1;"&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;// get &lt;/span&gt;list of documents from the host&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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; System.Collections.Generic.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IList&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;gt; documents = &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;this&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;.GetDocuments();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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; &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; document = documents[0];&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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; &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; dwgName1 = document.Drawings[0].Name;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#2b91af;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="margin:12pt 0in 3pt;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="font-family:Cambria;"&gt;Adding &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IList&lt;/span&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family:Cambria;"&gt; to the ShapeAppCSharp object model &lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;In the ShapeAppBasicCSharp SDK sample, the type Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#0000ff;"&gt;.&lt;/span&gt;&lt;span style="color:#2b91af;"&gt; Document&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; is already represented on the proxy side with this&amp;nbsp;type definition (generated by proxygen):&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;[&lt;span style="color:#0000ff;"&gt;assembly&lt;/span&gt;: &lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::Microsoft.VisualStudio.Tools.Applications.Runtime.&lt;span style="color:#2b91af;"&gt;HostAssemblyAttribute&lt;/span&gt;()]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;namespace&lt;/span&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::Microsoft.VisualStudio.Tools.Applications.Runtime.&lt;span style="color:#2b91af;"&gt;HostTypeAttribute&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;ShapeAppCSharp, Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp.Docume&amp;quot;&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#a31515;"&gt;&amp;quot;nt&amp;quot;&lt;/span&gt;)]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;abstract&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-weight:normal;color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-theme-font:major-fareast;mso-bidi-font-weight:bold;"&gt;Document&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; : &lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::System.&lt;span style="color:#2b91af;"&gt;MarshalByRefObject&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {...}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Our&amp;nbsp;design goal is for the Add-in author to pass instances of ShapeApp&amp;#39;s host-side&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;type (via &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;add-in side proxy &lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; type) from host to add-in, &lt;em&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;within&amp;nbsp;&lt;/span&gt;&lt;/em&gt;a generic collection: &lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;System.Collections.Generic.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IList&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;To accomplish this we&amp;rsquo;ll add a new &lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;GetDocuments()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; method to the host class &amp;lsquo;Application&amp;rsquo; in the sample&amp;rsquo;s Application.cs (which contains the main object model class&amp;rsquo; source code): &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Application&lt;/span&gt; : System.Windows.Forms.&lt;span style="color:#2b91af;"&gt;IWin32Window&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#2b91af;"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt; docs = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt; GetDocuments()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:2;"&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;// for simplicity, we&amp;rsquo;ll return the default document in the IList&lt;span style="mso-tab-count:1;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;if&lt;/span&gt; (docs == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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;docs = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt;();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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;docs.Add(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.document);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;return&lt;/span&gt; docs;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;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&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;. . .&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Then we add the host method&amp;rsquo;s complement into the proxy object model assembly source in the sample&amp;rsquo;s proxy.cs class, &lt;/span&gt;&lt;span style="color:#2b91af;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;ApplicationEntryPoint&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::System.AddIn.Pipeline.&lt;span style="color:#2b91af;"&gt;AddInBaseAttribute&lt;/span&gt;(ActivatableAs = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::System.&lt;span style="color:#2b91af;"&gt;Type&lt;/span&gt;[] { &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(ShapeAppCSharp.&lt;span style="color:#2b91af;"&gt;IShapeAppEntryPoint&lt;/span&gt;) })]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ApplicationEntryPoint&lt;/span&gt; : &lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::ShapeAppCSharp.&lt;span style="color:#2b91af;"&gt;IShapeAppEntryPoint&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#008000;"&gt;/*uses Custom Adapter for System.Collections.Generic.IList*/&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;public&lt;/span&gt; System.Collections.Generic.&lt;span style="color:#2b91af;"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt; GetDocuments()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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;&lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.RemoteObject.GetDocuments();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;. . . &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Notice a new entry point interface: &lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="color:#0000ff;mso-no-proof:yes;"&gt;global&lt;/span&gt;&lt;span style="mso-no-proof:yes;"&gt;::ShapeAppCSharp.&lt;span style="color:#2b91af;"&gt;IShapeAppEntryPoint &lt;/span&gt;&lt;/span&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;which we&amp;rsquo;ll define later)&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="color:#2b91af;mso-no-proof:yes;"&gt;, &lt;/span&gt;is implemented by &lt;span style="color:#2b91af;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;ApplicationEntryPoint&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;The &lt;i style="mso-bidi-font-style:normal;"&gt;meta&lt;/i&gt; OM method description is included in the abstract proxy class &lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Application:&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;[&lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::Microsoft.VisualStudio.Tools.Applications.Runtime.&lt;span style="color:#2b91af;"&gt;HostTypeAttribute&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;ShapeAppCSharp, Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp.Applic&amp;quot;&lt;/span&gt; +&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#a31515;"&gt;&amp;quot;ation&amp;quot;&lt;/span&gt;)]&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;abstract&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Application&lt;/span&gt; : &lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::System.&lt;span style="color:#2b91af;"&gt;MarshalByRefObject&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::System.Windows.Forms.&lt;span style="color:#2b91af;"&gt;IWin32Window&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#008000;"&gt;/*uses Custom Adapter for System.Collections.Generic.IList*/&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;global&lt;/span&gt;::Microsoft.VisualStudio.Tools.Applications.Runtime.&lt;span style="color:#2b91af;"&gt;HostMemberAttribute&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;GetDocuments&amp;quot;&lt;/span&gt;, BindingFlags = &lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::System.Reflection.&lt;span style="color:#2b91af;"&gt;BindingFlags&lt;/span&gt;.Instance | &lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::System.Reflection.&lt;span style="color:#2b91af;"&gt;BindingFlags&lt;/span&gt;.Public | &lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::System.Reflection.&lt;span style="color:#2b91af;"&gt;BindingFlags&lt;/span&gt;.InvokeMethod)]&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; System.Collections.Generic.&lt;span style="color:#2b91af;"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt; GetDocuments() { &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::System.&lt;span style="color:#2b91af;"&gt;NotImplementedException&lt;/span&gt;(); }&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;. . .&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="margin:12pt 0in 3pt;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="font-family:Cambria;"&gt;Adding &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IList&lt;/span&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family:Cambria;"&gt; to the VSTA Pipeline &lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Since generic collections are not supported with the VSTA proxy/runtime, we cannot simply add the type &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;System.Collections.Generic.&lt;span style="color:#2b91af;"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;gt; into the HostTypeMapProvider as one would normally do to support a new type in their object model.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Instead, we must use custom adapters to pass the&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt; System.Collections.Generic.&lt;span style="color:#2b91af;"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#000000;line-height:115%;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt; type through the VSTA pipeline from host to addIn.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This is accomplished by overriding, or hooking into the standard VSTA pipeline&amp;rsquo;s view, host adapter, and addin adapter assemblies. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 style="margin:10pt 0in 0pt;"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;em&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;How the VSTA pipeline segments work together&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;VSTA 2.0 add-ins are System.AddIn add-in assemblies.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;System.AddIn add-in assemblies are discovered and activated (loaded) by the host application using a special protocol contained in System.AddIn.&lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;AddInToken.&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;Activate&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;, which is called by the host application to initialize the pipeline:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;First, System.AddIn loads the add-in, which in turn, loads its &amp;lsquo;view&amp;rsquo; pipeline segment (aka: &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;the &amp;lsquo;proxy&amp;rsquo; assembly);&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;System.AddIn creates the addIn-side adapter &amp;lsquo;contract&amp;rsquo; pipeline segment, passing &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;an instance of the add-in&amp;rsquo;s view segment;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;System.AddIn creates the host-side adapter &amp;lsquo;view&amp;rsquo; pipeline segment, passing a remote instance of the addIn-side adapter contract;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Finally, System.AddIn&amp;rsquo;s&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt; &lt;span style="color:#2b91af;"&gt;AddInToken&lt;/span&gt; Activate&amp;lt;&lt;span style="color:#2b91af;"&gt;IShapeAppEntryPoint&lt;/span&gt;&amp;gt; &lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;method returns the host-side adapter &amp;lsquo;view&amp;rsquo; to the host as an IShapeAppEntryPoint instance, which the host considers to be the add-in it loaded.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This completes the pipeline initialization, with all pipeline segments holding its neighbor segment, linked from addin back to the host.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;When the host releases the host-side adapter instance, the pipeline segments are disposed of in reverse sequence and the add-in unloads from memory.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;I created the pipeline segment assemblies using the &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.codeplex.com/clraddins"&gt;&lt;span style="font-size:small;color:#800080;font-family:Calibri;"&gt;System.AddIn Tools and Samples&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt; pipeline generator &lt;span style="mso-no-proof:yes;"&gt;utility, which is fed this contract definition to create the rest of the pipeline segments:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;namespace&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt; ShapeAppCSharp.Contracts&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="color:#2b91af;"&gt;AddInContract&lt;/span&gt;]&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;interface&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;IShapeAppEntryPointContract&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;IContract&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;void&lt;/span&gt; HookCustomAdapter();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;After the bare bones pipeline is generated, we edit all the segments to implement the standard VSTA pipeline IEntryPointContract2.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 style="margin:10pt 0in 0pt;"&gt;&lt;em&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;&lt;span style="mso-no-proof:yes;"&gt;Contract:&lt;/span&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/h4&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;namespace&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt; ShapeAppCSharp.Contracts&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="color:#2b91af;"&gt;AddInContract&lt;/span&gt;]&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;interface&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;IShapeAppEntryPointContract&lt;/span&gt; : &lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#2b91af;"&gt;IEntryPointContract2&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#2b91af;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;void&lt;/span&gt; HookCustomAdapter();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Notice that the contract segment now implements IEntryPointContract2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 style="margin:10pt 0in 0pt;"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;em&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;View:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;namespace&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt; ShapeAppCSharp&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[System.AddIn.Pipeline.&lt;span style="color:#2b91af;"&gt;AddInBaseAttribute&lt;/span&gt;()]&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;interface&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;IShapeAppEntryPoint&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;IExtendedEntryPoint&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;void&lt;/span&gt; HookCustomAdapters();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#2b91af;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;IShapeAppEntryPoint &lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;interface type is the view of the pipeline &amp;lsquo;seen&amp;rsquo; by both the host and add-in.&lt;/span&gt;&lt;/p&gt;
&lt;h4 style="margin:10pt 0in 0pt;"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;em&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Host-side Adapter:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;namespace&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt; ShapeAppCSharp.HostSideAdapters&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[System.AddIn.Pipeline.&lt;span style="color:#2b91af;"&gt;HostAdapterAttribute&lt;/span&gt;()]&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;IShapeAppEntryPointHostAdapter&lt;/span&gt; : Microsoft.VisualStudio.Tools.Applications.&lt;span style="color:#2b91af;"&gt;EntryPointHostAdapter&lt;/span&gt;, ShapeAppCSharp.&lt;span style="color:#2b91af;"&gt;IShapeAppEntryPoint&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#008000;"&gt;//Implement view: IShapeAppEntryPoint &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; HookCustomAdapters()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;if&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.TypeInfrastructureManager != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;this&lt;/span&gt;.TypeInfrastructureManager.AdapterResolve += &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;AdapterResolveEventArgs&lt;/span&gt;&amp;gt;(TypeInfrastructureManager_AdapterResolve);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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;_contract.HookCustomAdapter();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Notice that the Host-side adapter is a view that derives from VSTA&amp;rsquo;s &lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;EntryPointHostAdapter&lt;/span&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; and implements a view &lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;IShapeAppEntryPoint&lt;/span&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; .&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This is the face of the VSTA pipeline seen by the host.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4 style="margin:10pt 0in 0pt;"&gt;&lt;em&gt;&lt;span style="font-size:small;color:#4f81bd;font-family:Cambria;"&gt;AddIn-Side Adapter:&lt;/span&gt;&lt;/em&gt;&lt;/h4&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;namespace&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt; ShapeAppCSharp.AddInSideAdapters&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;{&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[System.AddIn.Pipeline.&lt;span style="color:#2b91af;"&gt;AddInAdapterAttribute&lt;/span&gt;()]&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;IShapeAppEntryPointAddInAdapter&lt;/span&gt; : Microsoft.VisualStudio.Tools.Applications.&lt;span style="color:#2b91af;"&gt;AddInAdapter&lt;/span&gt;, ShapeAppCSharp.Contracts.&lt;span style="color:#2b91af;"&gt;IShapeAppEntryPointContract&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; HookCustomAdapter()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;if&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.TypeInfrastructureManager != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;this&lt;/span&gt;.TypeInfrastructureManager.ProxyResolve += &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;ProxyResolveEventArgs&lt;/span&gt;&amp;gt;(TypeInfrastructureManager_ProxyResolve);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Notice that the AddIn-side adapter is a contract that derives from VSTA&amp;rsquo;s &lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;AddInAdapter&lt;/span&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; and implements a contract &lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;IShapeAppEntryPointContract&lt;/span&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This contract is the segment of the VSTA pipeline seen by the addIn&amp;rsquo;s view (the ShapeAppCSharp proxy, in proxy.cs).&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4 style="margin:10pt 0in 0pt;"&gt;&lt;em&gt;&lt;span style="font-size:small;color:#4f81bd;font-family:Cambria;"&gt;AddIn-side View (proxy.cs) &lt;/span&gt;&lt;/em&gt;&lt;/h4&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ApplicationEntryPoint&lt;/span&gt; : &lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::ShapeAppCSharp.&lt;span style="color:#2b91af;"&gt;IShapeAppEntryPoint&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:Calibri;"&gt;Notice that the proxy assembly implements the view&lt;b&gt;&lt;i&gt; &lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#2b91af;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;IShapeAppEntryPoint&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 style="margin:10pt 0in 0pt;"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;em&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;AddIn Entry Point (.designer.cs)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;namespace&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt; ShapeAppCSharpAppAddIn {&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::System.CodeDom.Compiler.&lt;span style="color:#2b91af;"&gt;GeneratedCodeAttribute&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Microsoft.VisualStudio.Tools.Applications.ProgrammingModel.dll&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;9.0.0.0&amp;quot;&lt;/span&gt;)]&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;sealed&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;AppAddIn&lt;/span&gt; : Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp.&lt;span style="color:#2b91af;"&gt;ApplicationEntryPoint&lt;/span&gt;, ShapeAppCSharp.&lt;span style="color:#2b91af;"&gt;IShapeAppEntryPoint&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Notice that the AddIn entrypoint class derives from &lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;ApplicationEntryPoint&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt; , as expected, and as implemented in the proxy assembly (the pipeline view segment with new GetDocuments() method described above), and explicitly implements the new view &lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;ShapeAppCSharp.&lt;span style="color:#2b91af;"&gt;IShapeAppEntryPoint. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;**Note:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Each of these assemblies are completely implemented in the &lt;/span&gt;&lt;span style="font-size:10pt;color:#000000;line-height:115%;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;a href="http://www.summsoft.com/media/p/1640.aspx"&gt;&lt;span style="color:#800080;"&gt;sample&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;To load an add-in that implements the &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;ShapeAppCSharp.&lt;span style="color:#2b91af;"&gt;IShapeAppEntryPoint&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; , the host application must discover and activate (load) those kinds of AddIns: &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4 style="margin:10pt 0in 0pt;"&gt;&lt;em&gt;&lt;span style="font-size:small;color:#4f81bd;font-family:Cambria;"&gt;Host application &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;(VstaRuntimeIntegration.cs)&lt;/span&gt;&lt;/em&gt;&lt;/h4&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; LoadAddIn(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; addInPath, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; startUpClass)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#008000;"&gt;// Update VSTA pipeline.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;string&lt;/span&gt;[] warnings2 = &lt;span style="color:#2b91af;"&gt;AddInStore&lt;/span&gt;.Update(&lt;span style="color:#2b91af;"&gt;AddInStoreExtensions&lt;/span&gt;.DefaultPipelinePath);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;if&lt;/span&gt; (warnings2.Length &amp;gt; 0)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; one &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; warnings2)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(one);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#0000ff;"&gt;try&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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;Collection&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;AddInToken&lt;/span&gt;&amp;gt; addInToken = &lt;span style="color:#2b91af;"&gt;AddInStore&lt;/span&gt;.FindAddIn(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;IShapeAppEntryPoint&lt;/span&gt;), &lt;span style="color:#2b91af;"&gt;AddInStoreExtensions&lt;/span&gt;.DefaultPipelinePath, addInPath, startUpClass);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;. . .&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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;IShapeAppEntryPoint&lt;/span&gt; addIn = addInToken[0].Activate&amp;lt;&lt;span style="color:#2b91af;"&gt;IShapeAppEntryPoint&lt;/span&gt;&amp;gt;(&lt;span style="color:#2b91af;"&gt;AddInSecurityLevel&lt;/span&gt;.FullTrust);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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:#008000;"&gt;// Initialize AddIn by calling into functions of the AddIn EntryPoint instance.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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;addIn.Initialize(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.serviceProvider);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;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;addIn.HookCustomAdapters();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Notice that the VSTA pipeline is updated by calling &lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;AddInStore&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;.Update&lt;/span&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;, to include the new segments copied into the appropriate VSTA pipeline subdirectories.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#000000;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Notice that the kind of Add-ins to be found and activated must connect with the host application via a host view adapter that implements: &lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;typeof&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;(&lt;span style="color:#2b91af;"&gt;IShapeAppEntryPoint&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Earlier we noticed that &lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;IShapeAppEntryPoint&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt; view is implemented by our host-side adapter pipeline segment.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Notice that after the normal addIn.Initialize(), the host calls &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt;addIn.HookCustomAdapters, &lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;which calls similar methods from host-side adapter to addIn-side adapter, hooking up the VSTA runtime&amp;rsquo;s &lt;span style="color:#000000;"&gt;TypeInfrastructureManager &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;events needed to move the document list (&lt;span style="color:#000000;"&gt;System.Collections.Generic.&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IList&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;gt;) from host to&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;add-in.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="margin:12pt 0in 3pt;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="font-family:Cambria;"&gt;Execution of &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;&lt;span style="color:#000000;"&gt;.GetDocuments();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Let&amp;rsquo;s watch it all go&amp;hellip;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;When, the host application calls&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt; addIn.FinishInitialization();, the add-in&amp;rsquo;s &lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;"&gt;AppAddIn_Startup() event is fired and &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;&lt;span style="color:#000000;"&gt;.GetDocuments(); executes.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This results in a remoteObject. GetDocuments() call to the host Application. GetDocuments() method.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;h4 style="margin:10pt 0in 0pt;"&gt;&lt;em&gt;&lt;span style="font-size:small;color:#4f81bd;font-family:Cambria;"&gt;AddIn code execution:&lt;/span&gt;&lt;/em&gt;&lt;/h4&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; AppAddIn_Startup(&lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;object&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; sender, &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;EventArgs&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; e)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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; System.Collections.Generic.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IList&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;gt; documents = &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;this&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;.GetDocuments();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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; &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; document = documents[0];&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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; &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; dwgName1 = document.Drawings[0].Name;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 style="margin:10pt 0in 0pt;"&gt;&lt;em&gt;&lt;span style="font-size:small;color:#4f81bd;font-family:Cambria;"&gt;Host-side AdapterResolve:&lt;/span&gt;&lt;/em&gt;&lt;/h4&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;When the host application passes a type back to the Add-in, the VSTA pipeline calls TypeInfrastructureManager_AdapterResolve to resolve Host-Side types that are not in the HostTypeMap and pass their host adapters across the AppDomain boundary to the Add-In.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;In this example, the type that is resolved and passed is System.Collections.Generic.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IList&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The generic Document list elements are enumerated, wrapped in a list of RemoteObjectAdapter, and passed across the AppDomain boundary via System.AddIn.Pipeline.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;CollectionAdapters&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;.ToIListContract.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; TypeInfrastructureManager_AdapterResolve(&lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;object&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; sender, &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;AdapterResolveEventArgs&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; e)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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; &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; (&lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;typeof&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;(System.Collections.Generic.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IList&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;gt;).IsAssignableFrom(e.ExpectedType))&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IRemoteObjectContract&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;[] remoteObjectContractArray = &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;List&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;System.AddIn.Contract.Automation.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IRemoteObjectContract&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;gt; remoteObjectContractList = &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;List&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;System.AddIn.Contract.Automation.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IRemoteObjectContract&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;gt;();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;//create list of contracts from objects &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;foreach&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; (&lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;object&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; obj &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;in&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; (System.Collections.Generic.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IList&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;gt;)e.ObjectToPack)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&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&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; remoteObjectContractList.Add(&lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;RemoteObjectAdapter&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;(obj.GetType(), obj, &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;this&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;.TypeInfrastructureManager));&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&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&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&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; remoteObjectContractArray = remoteObjectContractList.ToArray();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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;&amp;nbsp; e.AdapterToReturn = System.AddIn.Pipeline.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;CollectionAdapters&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;.ToIListContract&amp;lt;&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IRemoteObjectContract&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;List&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; &amp;lt; System.AddIn.Contract.Automation.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IRemoteObjectContract&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; &amp;gt;) remoteObjectContractList);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&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&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;span style="font-size:11pt;color:#4f81bd;line-height:115%;font-family:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-theme-font:major-fareast;mso-themecolor:accent1;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;br style="page-break-before:always;" /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h4 style="margin:10pt 0in 0pt;"&gt;&lt;em&gt;&lt;span style="font-size:small;color:#4f81bd;font-family:Cambria;"&gt;AddIn-side ProxyResolve:&lt;/span&gt;&lt;/em&gt;&lt;/h4&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;When the host-side add-in adapter&amp;rsquo;s TypeInfrastructureManager_AdapterResolve event handler completes, the VSTA pipeline calls TypeInfrastructureManager_ ProxyResolve to explicitly resolve host Adapter contracts to Add-in Side adapters, which yield types defined in the Add-in proxy (also called the AddIn-Side &amp;lsquo;View&amp;rsquo;).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Then the proxy can pass them to the Add-in.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;In this contract the type resolved and passed is System.AddIn.Contract.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IListContract&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;System.AddIn.Contract.Automation.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IRemoteObjectContract&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The generic &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IListContract&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; is converted to &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IList of RemoteObjectAdapters, &lt;/span&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;each containing a document element references connected to &lt;span style="color:#000000;"&gt;the host side .&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;RemoteObjectAdapters&lt;/span&gt;&lt;span style="color:#000000;"&gt; yield their &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Document &lt;/span&gt;&lt;span style="color:#000000;"&gt;objects, which populate a new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IList&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;gt; which the proxy passes to the Add-In, completing &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;&lt;span style="color:#000000;"&gt;.GetDocuments();. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; TypeInfrastructureManager_ProxyResolve(&lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;object&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; sender, &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;ProxyResolveEventArgs&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; e)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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; &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; (e.Adapter &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;is&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; System.AddIn.Contract.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IListContract&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;System.AddIn.Contract.Automation.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IRemoteObjectContract&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IList&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; &amp;lt; System.AddIn.Contract.Automation.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IRemoteObjectContract&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; &amp;gt; remoteObjectContractList = &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.AddIn.Pipeline.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;CollectionAdapters&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;.ToIList&amp;lt;&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IRemoteObjectContract&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;gt;(e.Adapter &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;as&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; System.AddIn.Contract.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IListContract&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IRemoteObjectContract&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&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&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IList&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;gt; docs = &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;List&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;gt;();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&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&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#008000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;//create list of objects from adapters&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;foreach&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; (&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;RemoteObjectAdapter&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; roa &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;in&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; remoteObjectContractList)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&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&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.AddIn.Contract.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IContract&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; roc = roa.QueryContract(&lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;typeof&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;(System.AddIn.Contract.Automation.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;IRemoteObjectContract&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;).AssemblyQualifiedName);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp.&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; doc = &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;TypeServices&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;.ObjectFromContract(roc, &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;typeof&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;(&lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;), &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;this&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;.TypeInfrastructureManager) &lt;/span&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;as&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; &lt;/span&gt;&lt;span style="color:#2b91af;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Document&lt;/span&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&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; docs.Add(doc);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&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&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&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; e.ProxyToReturn = docs;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="margin:12pt 0in 3pt;"&gt;&lt;span style="font-size:medium;font-family:Cambria;"&gt;In conclusion&lt;/span&gt;&lt;/h3&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;ShapeAppBasicCSharpGenericListAdapter shows the use of custom adapters, tightly integrated with the ShapeAppBasicCSharp object model types and the VSTA pipeline, to pass a custom type (generic &lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt; &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;list) across the host/add-in appdomain boundary.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#000000;"&gt;By hooking System.AddIn.Pipeline.&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;CollectionAdapters&lt;/span&gt;&lt;span style="color:#000000;"&gt; into the VSTA pipeline, and using &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;RemoteObjectAdapters &lt;/span&gt;to marshal Document instances across the AppDomain as list elements, the VSTA pipeline is extended,&lt;span style="color:#2b91af;"&gt; &lt;/span&gt;making it possible for the AddIn to automate &lt;span style="color:#1f497d;"&gt;a &lt;/span&gt;&lt;span style="color:#000000;"&gt;generic collection of non-serializable &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Document &lt;/span&gt;objects on the host-side.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;By testing, we confirmed that a new Host API type, &lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;IList&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Document&lt;/span&gt;&amp;gt;, &lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;is available to the VSTA Add-In author.&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;In the my next post (part 3) we&amp;#39;ll demonstrate passing Generic collections from the AddIn to the Host application by reference. &lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1641" width="1" height="1"&gt;</content><author><name>Gary</name><uri>http://www.summsoft.com/members/Gary/default.aspx</uri></author><category term="Addin.Contract" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/Addin.Contract/default.aspx" /><category term="Contract" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/Contract/default.aspx" /><category term="Adapter" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/Adapter/default.aspx" /><category term="VSTA 2.0" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/VSTA+2.0/default.aspx" /><category term="ProxyResolve" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/ProxyResolve/default.aspx" /><category term="AdapterResolve" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/AdapterResolve/default.aspx" /><category term="System.AddIn" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/System.AddIn/default.aspx" /><category term="pipeline" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/pipeline/default.aspx" /></entry><entry><title>Using custom adapters with VSTA 2.0 pipeline - Part 1 </title><link rel="alternate" type="text/html" href="/blogs/garyvsta/archive/2009/01/19/using-custom-adapters-with-vsta-2-0-pipeline-part-1.aspx" /><id>/blogs/garyvsta/archive/2009/01/19/using-custom-adapters-with-vsta-2-0-pipeline-part-1.aspx</id><published>2009-01-19T19:39:00Z</published><updated>2009-01-19T19:39:00Z</updated><content type="html">&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;The VSTA team provides an overview on how to hook custom adapters with VSTA pipeline&lt;a href="http://blogs.msdn.com/sandeep_bhatia/archive/2008/12/24/hook-custom-adapters-to-vsta-pipeline.aspx"&gt; here &lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;a href="http://blogs.msdn.com/sandeep_bhatia/"&gt;&lt;span style="color:#800080;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1639" width="1" height="1"&gt;</content><author><name>Gary</name><uri>http://www.summsoft.com/members/Gary/default.aspx</uri></author><category term="Adapter" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/Adapter/default.aspx" /><category term="VSTA 2.0" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/VSTA+2.0/default.aspx" /><category term="ProxyResolve" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/ProxyResolve/default.aspx" /><category term="AdapterResolve" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/AdapterResolve/default.aspx" /><category term="System.AddIn" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/System.AddIn/default.aspx" /><category term="pipeline" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/pipeline/default.aspx" /></entry><entry><title>After ~5 minutes of idle time debugging macro projects fails with an IPC Port error.</title><link rel="alternate" type="text/html" href="/blogs/garyvsta/archive/2008/10/22/after-5-minutes-of-idle-time-debugging-macro-projects-fails-with-an-ipc-port-error.aspx" /><id>/blogs/garyvsta/archive/2008/10/22/after-5-minutes-of-idle-time-debugging-macro-projects-fails-with-an-ipc-port-error.aspx</id><published>2008-10-22T20:00:00Z</published><updated>2008-10-22T20:00:00Z</updated><content type="html">&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://www.summsoft.com/aggbug.aspx?PostID=1419" width="1" height="1"&gt;</content><author><name>Gary</name><uri>http://www.summsoft.com/members/Gary/default.aspx</uri></author><category term="IPC Port" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/IPC+Port/default.aspx" /><category term="Debugger" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/Debugger/default.aspx" /><category term="InitializeLifetimeService" scheme="http://www.summsoft.com/blogs/garyvsta/archive/tags/InitializeLifetimeService/default.aspx" /></entry><entry><title>Sample: Watchdog to terminate orphaned VSTA process</title><link rel="alternate" type="text/html" href="/blogs/garyvsta/archive/2008/09/26/sample-watchdog-to-terminate-orphaned-vsta-process.aspx" /><id>/blogs/garyvsta/archive/2008/09/26/sample-watchdog-to-terminate-orphaned-vsta-process.aspx</id><published>2008-09-26T18:43:00Z</published><updated>2008-09-26T18:43:00Z</updated><content type="html">&lt;p&gt;&lt;span style="font-size:x-small;color:#000080;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#000080;"&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:black;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;This is an &lt;a href="http://www.summsoft.com/media/p/1292.aspx"&gt;IPH sample&lt;/a&gt;, &lt;b&gt;IPHTerminateOrphanedVSTA.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color:navy;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;It uses a global mutext to start one, and only one, simple observer thread. The observer thread continues to execute while the vsta&lt;/span&gt;&lt;span style="color:black;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt; &lt;/span&gt;&lt;span style="color:navy;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;process is alive, whether or not a project is open..&lt;/span&gt;&lt;span style="color:black;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt; &lt;/span&gt;&lt;span style="color:navy;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;The observer thread periodically checks for existence of the hostProcess. If there is no hostProcess running, and there is an orphaned vsta.exe, the observer thread shuts down the orphan vsta process before exiting. The IPH allows opening the VSTA as a standlone IDE (observer thread is not started). &lt;/span&gt;&lt;/span&gt;&lt;span style="color:black;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#000080;"&gt;&lt;a href="http://www.summsoft.com/media/p/1292.aspx"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.summsoft.com/aggbug.aspx?PostID=1345" width="1" height="1"&gt;</content><author><name>Gary</name><uri>http://www.summsoft.com/members/Gary/default.aspx</uri></author></entry><entry><title>Add your proxy assemblies to .NET Add Reference tab in Visual Studio/VSTA IDE</title><link rel="alternate" type="text/html" href="/blogs/garyvsta/archive/2008/04/04/add-your-proxy-assemblies-to-net-add-reference-tab-in-visual-studio-vsta-ide.aspx" /><id>/blogs/garyvsta/archive/2008/04/04/add-your-proxy-assemblies-to-net-add-reference-tab-in-visual-studio-vsta-ide.aspx</id><published>2008-04-04T13:49:00Z</published><updated>2008-04-04T13:49:00Z</updated><content type="html">&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://www.summsoft.com/aggbug.aspx?PostID=1007" width="1" height="1"&gt;</content><author><name>Gary</name><uri>http://www.summsoft.com/members/Gary/default.aspx</uri></author></entry><entry><title>VSTO/VSTA Power Tools v1.0 </title><link rel="alternate" type="text/html" href="/blogs/garyvsta/archive/2008/03/28/vsto-vsta-power-tools-v1-0.aspx" /><id>/blogs/garyvsta/archive/2008/03/28/vsto-vsta-power-tools-v1-0.aspx</id><published>2008-03-28T14:02:00Z</published><updated>2008-03-28T14:02:00Z</updated><content type="html">&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://www.summsoft.com/aggbug.aspx?PostID=994" width="1" height="1"&gt;</content><author><name>Gary</name><uri>http://www.summsoft.com/members/Gary/default.aspx</uri></author></entry><entry><title>ISV's proxy assemblies and references to proxy assemblies in add-in project templates and projects require unique version information</title><link rel="alternate" type="text/html" href="/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" /><id>/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</id><published>2008-03-13T22:29:00Z</published><updated>2008-03-13T22:29:00Z</updated><content type="html">&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://www.summsoft.com/aggbug.aspx?PostID=955" width="1" height="1"&gt;</content><author><name>Gary</name><uri>http://www.summsoft.com/members/Gary/default.aspx</uri></author></entry></feed>