<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://vsa.summsoft.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><channel><title>Summit Software</title><link>http://vsa.summsoft.com/blogs/</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>.NET 4 and VSTA redistribution</title><link>http://vsa.summsoft.com/blogs/garyvsta/archive/2010/10/22/net-4-and-vsta-redistribution.aspx</link><pubDate>Fri, 22 Oct 2010 18:19:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:2344</guid><dc:creator>Gary</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;With the advent of .NET 4 and related questions about VSTA&amp;#39;s compatibility, we tested to confirm the following:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Redistribution of VSTA 2.0 (with your application) requires .Net 3.5 SP1 to be installed on the target machine.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Starting with a clean Windows computer and &lt;i&gt;only&lt;/i&gt; .NET 4.0 installed, run vsta20.exe to install VSTA 2.0 on the computer... no luck: &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img src="http://www.summsoft.com/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.44.10/vsta2.0redist.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Redistribution of VSTA 1.0 (with your application) requires .Net 2.0 to be installed on the target machine.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Starting with a clean Windows computer and &lt;i&gt;only&lt;/i&gt; .NET 4.0 installed, run vsta_aide.exe to install VSTA 1.0 on the computer... no luck:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img src="http://www.summsoft.com/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.44.10/vsta1.0redist.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;This means that your application installer should continue to follow VSTA SDK deployment guidelines and include the correct version of the .NET framework as a pre-requisite.&amp;nbsp; For instance, here are the prerequisites to &lt;a href="http://msdn.microsoft.com/en-us/library/cc175701(VS.90).aspx"&gt;deploy VSTA 2.0&lt;/a&gt; with an application:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The following components must be installed on the target computer before the Visual Studio Tools for Applications installer package is started: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Microsoft .NET Framework 3.5.&lt;/li&gt;
&lt;li&gt;MSXML6. You can download the installation package from &lt;a href="http://go.microsoft.com/fwlink/?LinkID=102047"&gt;Microsoft Core XML Services (MSXML) 6.0&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://vsa.summsoft.com/aggbug.aspx?PostID=2344" width="1" height="1"&gt;</description><category domain="http://vsa.summsoft.com/blogs/garyvsta/archive/tags/.NET+4.0/default.aspx">.NET 4.0</category><category domain="http://vsa.summsoft.com/blogs/garyvsta/archive/tags/redistribution/default.aspx">redistribution</category><category domain="http://vsa.summsoft.com/blogs/garyvsta/archive/tags/deployment/default.aspx">deployment</category></item><item><title>Supporting the “new” Operator in VSTA Add-Ins</title><link>http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/2010/10/20/supporting-the-new-operator-in-vsta-add-ins.aspx</link><pubDate>Wed, 20 Oct 2010 15:02:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:2343</guid><dc:creator>Melody</dc:creator><slash:comments>1</slash:comments><description>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;It is possible to support the &amp;ldquo;new&amp;rdquo; operator in VSTA
add-ins.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Integration styles which do not
use a full proxy, such as NoRuntime and ProxyShim, can easily support this
feature.&lt;span&gt;&amp;nbsp; &lt;/span&gt;All that is required is public
constructor methods in the host application.&lt;span&gt;&amp;nbsp;
&lt;/span&gt;In the ShapeAppDyanmicProgrammingModelCSharp sample an additional code
change is required in order to ensure all host items created in the add-in
using the &amp;ldquo;new&amp;rdquo; operator are hooked-up prior to building (for more information
on this please see the blog &lt;a href="http://www.summsoft.com/controlpanel/blogs/melodys_vsta_blog/archive/2010/10/19/dpm-ps-sample.aspx"&gt;ShapeAppDynamicProgrammingModelCSharp_ProxyShim
Sample&lt;/a&gt;).&lt;span&gt;&amp;nbsp; &lt;/span&gt;This is possible because
these styles of integration do not use a full proxy, which generally cannot
support the new operator and must instead use factory methods.&lt;span&gt;&amp;nbsp; &lt;/span&gt;One exception to this rule is for structs and
custom exceptions in VSTA v 2 add-ins.&lt;span&gt;&amp;nbsp;
&lt;/span&gt;Because structs and custom exceptions are reimplemented in the proxy
their public constructors are available for VSTA v 2 add-ins.&lt;span&gt;&amp;nbsp; &lt;/span&gt;For more information on the different styles
of integration, please see the blog &lt;a href="http://www.summsoft.com/controlpanel/blogs/melodys_vsta_blog/archive/2010/10/14/integration-styles-and-the-benefits-sdk-noruntime-and-proxyshim.aspx"&gt;Integration
Styles and the Benefits: SDK, NoRuntime, and ProxyShim&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;Below are code samples which show how to create a new Drawing
object for the ShapeAppCSharp samples in the SDK, NoRuntime, and ProxyShim
style integrations:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;b&gt;NoRuntime and ProxyShim:&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;Both integration styles can use public constructor
methods, in this example a public constructor for the Drawing class was added
by changing the existing private constructor to public.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Note that the factory method may still be
used.&lt;br /&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;"&gt;//create a new Drawing using a public constructor&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;Drawing&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; d = &lt;span style="color:blue;"&gt;new&lt;/span&gt;
&lt;span style="color:#2b91af;"&gt;Drawing&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Application,
&lt;span style="color:#a31515;"&gt;&amp;quot;Drawing4&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;br /&gt;
&lt;span style="color:green;"&gt;&amp;#39;create a new drawing using a public constructor&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; d &lt;span style="color:blue;"&gt;As&lt;/span&gt;
Drawing = &lt;span style="color:blue;"&gt;New&lt;/span&gt; Drawing(&lt;span style="color:blue;"&gt;Me&lt;/span&gt;.Application,
&lt;span style="color:#a31515;"&gt;&amp;quot;Drawing4&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;b&gt;SDK Factory Method:&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;This code utilizes the factory method Application.NewDrawing
(this is from the VSTA v 1 samples but applies to VSTA v 2 as well).&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;"&gt;//create a new drawing using the factory method&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;Drawing&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; d = &lt;span style="color:blue;"&gt;this&lt;/span&gt;.NewDrawing();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;"&gt;&lt;br /&gt;
&amp;#39;create a new drawing using the factory method&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; d &lt;span style="color:blue;"&gt;As&lt;/span&gt;
Drawing = &lt;span style="color:blue;"&gt;Me&lt;/span&gt;.NewDrawing()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;b&gt;SDK Structs and Custom Exceptions (VSTA v 2 only):&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;Because structs and custom exceptions are
reimplemented in the proxy layer, their public constructors are available.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;"&gt;//factory methods, these are static methods in
the application class&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;Color&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; cFM =
Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Application&lt;/span&gt;.CreateColor(System.Drawing.&lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.Green.ToArgb());&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;Point&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; pFM =
Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Application&lt;/span&gt;.CreatePoint(25, 25);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;Size&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; sFM =
Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Application&lt;/span&gt;.CreateSize(25, 25);&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;"&gt;//public constructos for structs and custom
exceptions&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;Color&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; cPC = &lt;span style="color:blue;"&gt;new&lt;/span&gt;
&lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;(System.Drawing.&lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.Green);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;Point&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; pPC = &lt;span style="color:blue;"&gt;new&lt;/span&gt;
&lt;span style="color:#2b91af;"&gt;Point&lt;/span&gt;(25,25);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;Size&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; sPC = &lt;span style="color:blue;"&gt;new&lt;/span&gt;
&lt;span style="color:#2b91af;"&gt;Size&lt;/span&gt;(25, 25);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;LocationInvalidException&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; liePC= &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;LocationInvalidException&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;invalid location&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;SizeInvalidException&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; siePC = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SizeInvalidException&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;invalid size&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;"&gt;&amp;#39;factory methods, these are static methods in the
application class&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; cFM &lt;span style="color:blue;"&gt;As&lt;/span&gt;
Color = Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp. _&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Application.CreateColor(System.Drawing.Color.Green.ToArgb())&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; pFM &lt;span style="color:blue;"&gt;As&lt;/span&gt;
Point = Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp. _&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Application.CreatePoint(25, 25)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; sFM &lt;span style="color:blue;"&gt;As&lt;/span&gt;
Size = Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp. _&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Application.CreateSize(25, 25)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;"&gt;&amp;#39;public constructos for structs and custom
exceptions&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; cPC &lt;span style="color:blue;"&gt;As&lt;/span&gt;
Color = &lt;span style="color:blue;"&gt;New&lt;/span&gt; Color(System.Drawing.Color.Green)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; pPC &lt;span style="color:blue;"&gt;As&lt;/span&gt;
Point = &lt;span style="color:blue;"&gt;New&lt;/span&gt; Point(25, 25)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; sPC &lt;span style="color:blue;"&gt;As&lt;/span&gt;
Size = &lt;span style="color:blue;"&gt;New&lt;/span&gt; Size(25, 25)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; liePC &lt;span style="color:blue;"&gt;As&lt;/span&gt;
LocationInvalidException = &lt;span style="color:blue;"&gt;New&lt;/span&gt;
LocationInvalidException(&lt;span style="color:#a31515;"&gt;&amp;quot;invalid
location&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; siePC &lt;span style="color:blue;"&gt;As&lt;/span&gt;
SizeInvalidException = &lt;span style="color:blue;"&gt;New&lt;/span&gt;
SizeInvalidException(&lt;span style="color:#a31515;"&gt;&amp;quot;invalid size&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://vsa.summsoft.com/aggbug.aspx?PostID=2343" width="1" height="1"&gt;</description><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/add-in/default.aspx">add-in</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/Proxy/default.aspx">Proxy</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/NoRuntime/default.aspx">NoRuntime</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/ProxyShim/default.aspx">ProxyShim</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/new+operator/default.aspx">new operator</category></item><item><title>ShapeAppDynamicProgrammingModelCSharp_ProxyShim Sample</title><link>http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/2010/10/19/dpm-ps-sample.aspx</link><pubDate>Tue, 19 Oct 2010 18:15:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:2341</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoNormal"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="color:#17365d;"&gt;
			Summit now offers the he ShapeAppDynamicProgrammingModelCSharp_ProxyShim
			sample which is based both the VSTA 2.0 SDK sample ShapeAppDyanmicProgrammingModelCSharp
			and the Microsoft endorsed ShapeAppMacroRecordingCSharp-NoRuntime sample.&lt;span&gt;&amp;nbsp; &lt;/span&gt;This sample references the VSTA runtime and
			uses the auto-generated designer files for the Dynamic Programming Model (DPM)
			add-ins; however, the VSTA runtime is not used to load the add-ins.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Instead a host type, IAddIn, is used along
			with AssemblyLoad and a customized ProxyShim to load the DPM add-ins.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The ProxyShim references the host application
			directly and contains type definitions only for the entry point types.&lt;span&gt;&amp;nbsp; &lt;/span&gt;These definitions have been modified for use
			with the IAddIn interface.&lt;span&gt;&amp;nbsp; &lt;/span&gt;All changes
			have been marked with a comment &amp;ldquo;SUMMIT CHANGE&amp;rdquo; and explanation.&amp;nbsp; To access this sample, please fill out the &lt;a title="VSTA Information Request Form" href="http://www2.summsoft.com/VSTAInfReq.asp"&gt;information form&lt;/a&gt;, then e-mail vstasupport@summsoft.com with your username and request.
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;b&gt;
			&lt;span style="color:#17365d;"&gt;Use of IAddIn:&lt;/span&gt;
		&lt;/b&gt;
		&lt;span style="color:#17365d;"&gt;
			&lt;br /&gt;
			As in the NoRuntime sample, the host application in this sample defines the
			interface IAddIn to use in much the same way that the VSTA Runtime&amp;rsquo;s
			IEntryPoint and IMultipleEntryPoint are used in SDK samples, mainly to start
			and stop the add-in.&lt;span&gt;&amp;nbsp; &lt;/span&gt;For NoRuntime and ProxyShim
			style integrations an additional file is required in the add-ins which
			implements the IAddIn interface.&lt;span&gt;&amp;nbsp; &lt;/span&gt;In this
			sample, that code file is called &amp;ldquo;IAddIn_Implementation&amp;rdquo; and it contains
			methods to instantiate all host items as well as the host item container,
			namely the host item container &amp;ldquo;ThisDocument.xx&amp;rdquo; and the host items
			&amp;ldquo;Drawing#.xx&amp;rdquo;.&lt;span&gt;&amp;nbsp; &lt;/span&gt;In order to keep the DPM
			add-in in sync with the host this file is regenerated after any host item
			additions or removals.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Hence, because
			the file is auto-generated and is regenerated during design time, this file
			should not be modified.
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;b&gt;
			&lt;span style="color:#17365d;"&gt;Improvements over the SDK DPM Sample:&lt;/span&gt;
		&lt;/b&gt;
		&lt;span style="color:#17365d;"&gt;
			&lt;br /&gt;
			The SDK DPM sample ShapeAppDynamicProgrammingModelCSharp allows for host objects
			within host items (in this case shapes within a drawing) to be referenced
			through local variables; however, host items within the host item container (in
			this case drawings within a document) cannot be referenced in the same manner.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Since the ProxyShim style integration is not
			limited by the VSTA runtime it is possible to reference host items through a
			named variable within the host item container.&lt;span&gt;
				&amp;nbsp;&amp;nbsp;
			&lt;/span&gt;See code sample below which contains the startup methods for a host item
			(Drawing1_Startup) and for the host item container (ThisDocument_Startup).
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;Private&lt;/span&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span style="color:blue;"&gt;Sub&lt;/span&gt; Drawing1_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;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:green;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;#39;refer to a host object by its variable
			name
		&lt;/span&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Me&lt;/span&gt;.Circle1.Size
			= &lt;span style="color:blue;"&gt;New&lt;/span&gt; Size(25, 25)
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&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;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;&amp;nbsp;&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;Private&lt;/span&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span style="color:blue;"&gt;Sub&lt;/span&gt; ThisDocument_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;/span&gt;
 &lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span style="color:green;"&gt;
				&amp;#39;CANNOT refer to
				a host item through a variable name
			&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
 &lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span style="color:green;"&gt;
				&amp;#39; using an SDK
				style integration,&lt;span&gt;&amp;nbsp; &lt;/span&gt;
			&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span style="color:green;"&gt;
				&amp;#39;CAN refer to a
				host item through a variable name with the
			&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
 &lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span style="color:green;"&gt;
				&amp;#39;ProxyShim style
				integration
			&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
 &lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Me&lt;/span&gt;.Drawing1.Circle1.Location
			= &lt;span style="color:blue;"&gt;New&lt;/span&gt; Point(100, 100)
		&lt;/span&gt;
	&lt;/span&gt;
 &lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;End&lt;/span&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span style="color:blue;"&gt;Sub&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
 &lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;&amp;nbsp;&lt;/span&gt;
	&lt;/span&gt;
 &lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;private&lt;/span&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span style="color:blue;"&gt;void&lt;/span&gt; Drawing1_Startup(&lt;span style="color:blue;"&gt;object&lt;/span&gt;
			sender, System.&lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt; e)
		&lt;/span&gt;
	&lt;/span&gt;
 &lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;{&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span style="color:green;"&gt;
				//refer to a host
				object by its variable name
			&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
 &lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Circle1.Size
			= &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Size&lt;/span&gt;(50,
			75);
		&lt;/span&gt;
	&lt;/span&gt;
 &lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;}&lt;/span&gt;
	&lt;/span&gt;
 &lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;
		&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;
		&lt;/span&gt;
		&lt;br /&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;private&lt;/span&gt;
	&lt;/span&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span style="color:blue;"&gt;void&lt;/span&gt; ThisDocument_Startup(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt;
			e)
		&lt;/span&gt;
	&lt;/span&gt;
 &lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;{&lt;/span&gt;
	&lt;/span&gt;
 &lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span style="color:green;"&gt;
				//CANNOT refer to
				a host item through a variable name
			&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span style="color:green;"&gt;
				// using an SDK
				style integration,&lt;span&gt;&amp;nbsp; &lt;/span&gt;
			&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
 &lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span style="color:green;"&gt;
				//CAN refer to a
				host item through a variable name with the
			&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span style="color:green;"&gt;
				//ProxyShim style
				integration
			&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Drawing1.Circle1.Location
			= &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Point&lt;/span&gt;(75,
			75);
		&lt;/span&gt;
	&lt;/span&gt;
 &lt;br /&gt;
	&lt;span class="MsoNormal"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;}&lt;/span&gt;
		&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;/span&gt;
	&lt;/span&gt;
 &lt;br /&gt;
&lt;p class="MsoNormal"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;"&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="color:#17365d;"&gt;
			Additionally, like the NoRuntime
			style integration the ProxyShim style integration supports the &amp;ldquo;new&amp;rdquo;
			operator.&lt;span&gt;&amp;nbsp; &lt;/span&gt;To use this feature with the
			ShapeApp samples, add public constructor methods to the desired classes.&lt;span&gt;&amp;nbsp; &lt;/span&gt;For the
			ShapeAppDynamicProgrammingModelCSharp_ProxyShim sample, the Drawing class was
			modified changing the constructor from private to public.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Another code change was required to the
			VSTADesignTimeIntegration class; the code to build an existing project when
			opening was moved from the EnsureIDE method to the end of the Connect method to
			avoid building prior to hooking-up any host items added with the &amp;ldquo;new&amp;rdquo; operator
			in the add-in.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The code sample below
			demonstrates use of this modification and the &amp;ldquo;new&amp;rdquo; operator.
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;Private&lt;/span&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span style="color:blue;"&gt;Sub&lt;/span&gt; ThisDocument_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;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span style="color:green;"&gt;
				&amp;#39;calculate a
				valid drawing name
			&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; name &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String&lt;/span&gt; = &lt;span style="color:#a31515;"&gt;&amp;quot;Drawing&amp;quot;&lt;/span&gt; &amp;amp; (&lt;span style="color:blue;"&gt;Me&lt;/span&gt;.Drawings.Count + 1).ToString()
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span style="color:green;"&gt;
				&amp;#39;create a new
				drawing and add it to the document
			&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; d &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;New&lt;/span&gt; Drawing(&lt;span style="color:blue;"&gt;Me&lt;/span&gt;.Application, name)
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Me&lt;/span&gt;.Drawings.Add(d)
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;End&lt;/span&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span style="color:blue;"&gt;Sub&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="color:#17365d;"&gt;&amp;nbsp;&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;private&lt;/span&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span style="color:blue;"&gt;void&lt;/span&gt; ThisDocument_Startup(&lt;span style="color:blue;"&gt;object&lt;/span&gt;
			sender, &lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt; e)
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;{&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span style="color:green;"&gt;
				//calculate a
				valid name for the drawing
			&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; name
			= &lt;span style="color:#a31515;"&gt;&amp;quot;Drawing&amp;quot;&lt;/span&gt; + (&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Drawings.Count + 1).ToString();
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span style="color:green;"&gt;
				//create the new
				drawing and add it to this document
			&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Drawing&lt;/span&gt;
			d = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Drawing&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Application, name);
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Drawings.Add(d);
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;}&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="color:#17365d;"&gt;&amp;nbsp;&lt;/span&gt;
	&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p class="MsoNormal"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;b&gt;
			&lt;span style="color:#17365d;"&gt;Prerequisites:&lt;/span&gt;
		&lt;/b&gt;
		&lt;span style="color:#17365d;"&gt;
			&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
			To build and run the ShapeAppDynamicProgrammingModelCSharp_ProxyShim sample,
			you must first install the &lt;a href="http://www.summsoft.com/controlpanel/VSTAInfReq.aspx"&gt;
				Microsoft
				VSTA 2.0 SDK, available from Summit Software
			&lt;/a&gt;.&lt;span&gt;&amp;nbsp; &lt;/span&gt;You must also have Visual Studio 2008 or
			higher installed.
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;b&gt;
			&lt;span style="color:#17365d;"&gt;Running the Sample:&lt;/span&gt;
		&lt;/b&gt;
		&lt;span style="color:#17365d;"&gt;
			&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
			Follow these instructions to run the sample.
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;text-indent:-0.25in;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="color:#17365d;"&gt;
			&lt;span&gt;
				1)&lt;span style="font:7pt &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="color:#17365d;"&gt;
			Extract the sample to C:\ShapeAppSamples.&lt;span&gt;&amp;nbsp; &lt;/span&gt;If a different location is used, then the
			references to the host in the DPM add-ins and templates must be updated.
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;text-indent:-0.25in;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="color:#17365d;"&gt;
			&lt;span&gt;
				2)&lt;span style="font:7pt &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="color:#17365d;"&gt;
			Run the included setup file SetupShapeAppDynamicProgrammingModelCSharp_PS.js.&lt;span&gt;&amp;nbsp; &lt;/span&gt;This will setup the ShapeAppCSharp host and
			register both the project templates and the item templates which are required
			for DPM add-ins.
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;text-indent:-0.25in;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="color:#17365d;"&gt;
			&lt;span&gt;
				3)&lt;span style="font:7pt &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="color:#17365d;"&gt;
			Open and build the ShapeAppDynamicProgrammingModelCSharp_PS
			solution to create the exe which the DPM ProxyShim and add-ins will reference.
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;text-indent:-0.25in;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="color:#17365d;"&gt;
			&lt;span&gt;
				4)&lt;span style="font:7pt &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="color:#17365d;"&gt;
			Run the sample either through Visual Studio or directly
			from the exe.
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;text-indent:-0.25in;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="color:#17365d;"&gt;
			&lt;span&gt;
				5)&lt;span style="font:7pt &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="color:#17365d;"&gt;
			In the ShapeApp application, save the document and add a
			C# or VB DPM add-in project through the customization menu.
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;text-indent:-0.25in;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="color:#17365d;"&gt;
			&lt;span&gt;
				6)&lt;span style="font:7pt &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="color:#17365d;"&gt;
			In the VSTA IDE open the IAddIn_Implementation file which
			contains a partial class for the host item container (ThisDocument) as well as
			implementation code for the IAddIn interface and setup code for local
			variables.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Each local variable
			corresponds to a host item (Drawing1, Drawing2, and Drawing3).
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;text-indent:-0.25in;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="color:#17365d;"&gt;
			&lt;span&gt;
				7)&lt;span style="font:7pt &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="color:#17365d;"&gt;
			In the ShapeApp host application delete Drawing1 and add
			a new Drawing.
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;text-indent:-0.25in;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="color:#17365d;"&gt;
			&lt;span&gt;
				8)&lt;span style="font:7pt &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="color:#17365d;"&gt;
			In the IAddIn_Implementation file note that the code has
			been regenerated to stay in sync with the host items.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Now local variables should be present for
			Drawing2, Drawing3, and Drawing4.
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;text-indent:-0.25in;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="color:#17365d;"&gt;
			&lt;span&gt;
				9)&lt;span style="font:7pt &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="color:#17365d;"&gt;
			In the ShapeApp host application add a shape
			Drawing2.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The VSTA runtime will
			automatically add code to the designer file, Drawing2.designer.xx, to declare a
			variable to correspond to this host object.
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;text-indent:-0.25in;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="color:#17365d;"&gt;
			&lt;span&gt;
				10)&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;/span&gt;
		&lt;/span&gt;
		&lt;span style="color:#17365d;"&gt;
			In the VSTA IDE select the code file for Drawing2 and add
			code to manipulate the shape.&lt;span&gt;&amp;nbsp; &lt;/span&gt;For
			example:
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;Private&lt;/span&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span style="color:blue;"&gt;Sub&lt;/span&gt;
			Drawing2_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;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Me&lt;/span&gt;.Circle1.Size = &lt;span style="color:blue;"&gt;New&lt;/span&gt;
			Size(25, 25)
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;End&lt;/span&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span style="color:blue;"&gt;Sub&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-left:0.5in;"&gt;
	&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;private&lt;/span&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span style="color:blue;"&gt;void&lt;/span&gt;
			Drawing2_Startup(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, System.&lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt; e)
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;{&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span style="color:green;"&gt;//refer to a host object by its variable name &lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Circle1.Size = &lt;span style="color:blue;"&gt;new&lt;/span&gt;
			&lt;span style="color:#2b91af;"&gt;Size&lt;/span&gt;(25, 25);
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;}&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-left:0.5in;"&gt;
	&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;
&lt;br /&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;text-indent:-0.25in;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="color:#17365d;"&gt;
			&lt;span&gt;
				11)&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;/span&gt;
		&lt;/span&gt;
		&lt;span style="color:#17365d;"&gt;
			In the code file for the host item container
			(ThisDocument.xx), add code to manipulate the shape added to Drawing2 through
			the local variable for Drawing2.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Add
			code to create a new drawing using the &amp;ldquo;new&amp;rdquo; operator and add it to the
			document.&lt;span&gt;&amp;nbsp; &lt;/span&gt;For example:&lt;span&gt;&amp;nbsp; &lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;Private&lt;/span&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span style="color:blue;"&gt;Sub&lt;/span&gt;
			ThisDocument_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;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Me&lt;/span&gt;.Drawing2.Circle1.Location = &lt;span style="color:blue;"&gt;New&lt;/span&gt; Point(100, 100)
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;
			&lt;span style="color:green;"&gt;
				&amp;#39;calculate a valid
				drawing name
			&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; name &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String&lt;/span&gt; = &lt;span style="color:#a31515;"&gt;&amp;quot;Drawing&amp;quot;&lt;/span&gt; &amp;amp; (&lt;span style="color:blue;"&gt;Me&lt;/span&gt;.Drawings.Count + 1).ToString()
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;
			&lt;span style="color:green;"&gt;
				&amp;#39;create a new
				drawing and add it to the document
			&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; d &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;New&lt;/span&gt; Drawing(&lt;span style="color:blue;"&gt;Me&lt;/span&gt;.Application, name)
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;Me&lt;/span&gt;.Drawings.Add(d)
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;End&lt;/span&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span style="color:blue;"&gt;Sub&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-left:0.5in;"&gt;
	&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;private&lt;/span&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span style="color:blue;"&gt;void&lt;/span&gt;
			ThisDocument_Startup(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt; e)
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;{&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin-bottom:0.0001pt;text-indent:0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Drawing2.Circle1.Location
			= &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Point&lt;/span&gt;(75,
			75);
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span style="color:green;"&gt;//calculate a valid name for the drawing&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; name = &lt;span style="color:#a31515;"&gt;&amp;quot;Drawing&amp;quot;&lt;/span&gt;
			+ (&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Drawings.Count + 1).ToString();
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;span style="color:green;"&gt;//create the new drawing and add it to this document&lt;/span&gt;
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Drawing&lt;/span&gt; d = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Drawing&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Application,
			name);
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;
			&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Drawings.Add(d);
		&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;span class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;}&lt;/span&gt;
	&lt;/span&gt;
&lt;br /&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;"&gt;
	&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;text-indent:-0.25in;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="color:#17365d;"&gt;
			&lt;span&gt;
				12)&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;/span&gt;
		&lt;/span&gt;
		&lt;span style="color:#17365d;"&gt;
			Build the add-in project, then save the document through
			the host application.
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;text-indent:-0.25in;"&gt;
	&lt;span style="font-size:small;"&gt;
		&lt;span style="color:#17365d;"&gt;
			&lt;span&gt;
				13)&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
			&lt;/span&gt;
		&lt;/span&gt;
		&lt;span style="color:#17365d;"&gt;
			Close and re-open the document and to launch the code
			added above.
		&lt;/span&gt;
	&lt;/span&gt;
&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://vsa.summsoft.com/aggbug.aspx?PostID=2341" width="1" height="1"&gt;</description><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/add-in/default.aspx">add-in</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/DynamicProgrammingModel/default.aspx">DynamicProgrammingModel</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/ProxyShim/default.aspx">ProxyShim</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/new+operator/default.aspx">new operator</category></item><item><title>Integration Styles and the Benefits:  SDK, NoRuntime, and ProxyShim</title><link>http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/2010/10/14/integration-styles-and-the-benefits-sdk-noruntime-and-proxyshim.aspx</link><pubDate>Thu, 14 Oct 2010 17:38:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:2334</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;For VSTA integrations, there are a variety of ways in which
the host can load and interact with add-ins.&lt;span&gt;&amp;nbsp;
&lt;/span&gt;Three styles of interest are SDK, NoRuntime, and ProxyShim.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Each style of integration has many pros and
cons to consider before deciding on which type is best for a particular host.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;b&gt;SDK style:&lt;/b&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;This is the style of integration
which uses the VSTA runtime and pipeline to load and execute add-ins which reference
the host only through a proxy.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Add-Ins
use an IEntryPoint or IMultipleEntryPoint interface.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;b&gt;Pros:&lt;/b&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;This style of
integration offers all of the benefits of the VSTA runtime such as the security
and isolation options of loading add-ins into separate app domains, add-in
discovery and loading through the VSTA pipeline, as well as trust level options
for loading add-ins.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The use of a proxy
allows the benefits of versioning and use of an Object Model which allows for hiding
public items in the host application.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Add-ins
refer to the host through &amp;ldquo;this.&amp;rdquo; or &amp;ldquo;.me&amp;rdquo; calls.&lt;span&gt;&amp;nbsp; &lt;/span&gt;An EventHelper can be used which prevents exceptions
thrown in add-ins from affecting the host application.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Dynamic Programming Model add-ins are
possible with this style of integration.&lt;span&gt;&amp;nbsp;
&lt;/span&gt;VSTA v 1 SDK style add-ins can be upgraded to VSTA v 2 SDK style add-ins.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;b&gt;Cons:&lt;/b&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;A full proxy is
required for SDK style integrations.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Use
of a full proxy eliminates support for generics and the new operator.&lt;span&gt;&amp;nbsp; &lt;/span&gt;As well, structs and custom exceptions must
be redefined in the proxy, and nested classes require manual changes to the
proxy.&lt;span&gt;&amp;nbsp; &lt;/span&gt;There is a memory usage bug which
causes memory not be released once an add-in is unloaded.&lt;span&gt;&amp;nbsp; &lt;/span&gt;During debugging, objects on the host side
cannot be viewed in windows such as locals and immediate, instead they show up
as a transparent proxy with no valid data in the properties.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The loading and execution of add-ins is
slowed by traversing proxy layer.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;
NoRuntime:&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;In a NoRuntime style integration
neither the host nor add-ins reference the VSTA runtime.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Instead the add-ins reference the host
directly and do not use a proxy.&amp;nbsp; Add-ins are loaded through Assembly.Load
calls instead of through the VSTA pipeline.&lt;span&gt;&amp;nbsp;
&lt;/span&gt;Add-ins use the IAddIn interface instead of IEntryPoint or
IMultipleEntryPoint.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;b&gt;Pros:&lt;/b&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;This style of
integration uses a direct reference to the host application; therefore,
generics and the new operator are supported.&lt;span&gt;&amp;nbsp;
&lt;/span&gt;Structs and custom exceptions do not need to be redefined in a proxy
layer.&lt;span&gt;&amp;nbsp; &lt;/span&gt;As well, nested types are support
with no code changes or effort.&lt;span&gt;&amp;nbsp; &lt;/span&gt;During debugging there
are no issues with viewing host objects in windows like locals and immediate.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Add-ins are loaded and
executed quickly because they are not slowed by a proxy layer.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The memory usage footprint for unloaded
add-ins is less than in SDK style integrations.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;b&gt;Cons:&lt;/b&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;NoRuntime style
add-ins require a code file in each add-in to be used in place of the
auto-generated designer file (this file can be hidden).&lt;span&gt;&amp;nbsp; &lt;/span&gt;The runtime benefits for security, isolation,
and versioning are lost.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Add-ins must be
loaded in the same app domain as the host.&lt;span&gt;&amp;nbsp;
&lt;/span&gt;It is not possible to hide public items in the host because the add-ins
use a direct reference instead of an Object Model defined in a proxy layer.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Exceptions thrown in add-ins can affect the
host application.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Add-ins cannot refer
to the host through &amp;ldquo;this.&amp;rdquo; or &amp;ldquo;.me&amp;rdquo; calls, instead a &amp;ldquo;this.app&amp;rdquo; or &amp;ldquo;me.app&amp;rdquo;
style call must be used with a local variable.&lt;span&gt;&amp;nbsp;
&lt;/span&gt;It is not possible to use the Dynamic Programming Model with this style
of integration.&lt;span&gt;&amp;nbsp; &lt;/span&gt;VSTA v 1 SDK style
add-ins cannot be upgraded to VSTA v 2 NoRuntime style add-ins; however, they
can be upgraded to ProxyShim style add-ins and loaded in the same manner (with
the same code) as NoRuntime style integration add-ins.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;b&gt;ProxyShim:&lt;/b&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;The ProxyShim style integration is
a hybrid between the SDK style and NoRuntime style integrations.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Both the host and add-ins reference the VSTA
runtime, but add-ins are loaded through Assembly.Load calls instead using the
VSTA runtime or pipeline.&lt;span&gt;&amp;nbsp; &lt;/span&gt;ProxyShim
style add-ins use both the IAddIn and IEntryPoint or IMultipleEntryPoint
interfaces.&lt;span&gt;&amp;nbsp; &lt;/span&gt;These interfaces are defined
in an additional code file in the add-in and in a very small proxy which
contains definitions only for entry point types.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;b&gt;Pros:&lt;/b&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;Like NoRuntime style
add-ins, ProxyShim style add-ins use a direct reference to the host application
and can therefore support generics and the new operator.&amp;nbsp; Neither structs nor custom
exceptions need to be redefined in a proxy layer.&lt;span&gt;&amp;nbsp;
&lt;/span&gt;As well, nested types are supported with few to no code changes
depending on their involvement with entry point types.&lt;span&gt;&amp;nbsp; During debugging t&lt;/span&gt;here are no issues with viewing host objects
in windows like locals and immediate.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Add-ins are loaded and executed quickly
because they traverse only a minimal proxy layer.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The memory usage footprint for unloaded
add-ins is less than in SDK style integrations.&lt;span&gt;&amp;nbsp;
&lt;/span&gt;Add-ins reference the host through &amp;ldquo;.this&amp;rdquo; or &amp;ldquo;.me&amp;rdquo; calls.&lt;span&gt;&amp;nbsp; &lt;/span&gt;VSTA v 1 SDK style add-ins can be upgraded to
VSTA v 2 ProxyShim style add-ins through an upgrade helper.&lt;span&gt;&amp;nbsp; &lt;/span&gt;It is possible to support Dynamic Programming
Model add-ins with this style of integration and with an improvement over the
SDK style DPM (for more information on this please see the blog &lt;a href="http://www.summsoft.com/controlpanel/blogs/melodys_vsta_blog/archive/2010/09/30/referencing-host-items-in-a-dpm-project-from-the-host-item-container.aspx"&gt;Referencing
Host Items in a DPM Project from the Host Item Container&lt;/a&gt;).&lt;span&gt;&amp;nbsp; &lt;/span&gt;ProxyShim add-ins can be loaded in the same
manner as NoRuntime add-ins; therefore, both types of add-ins can be used by
the same host with a single LoadAddIn method.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;b&gt;Cons:&lt;/b&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;Like NoRuntime style
add-ins, each add-ins requires a code file to be used in place of the
auto-generated designer file.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The
runtime benefits for security, isolation, and versioning are lost.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Add-ins must be loaded in the same app domain
as the host.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Except for the entry point
type, it is not possible to hide public items in the host because the add-ins
use a direct reference instead of an Object Model defined in a proxy layer (the
proxy used in ProxyShim style integrations defines only entry point types).&lt;span&gt;&amp;nbsp; &lt;/span&gt;Exceptions thrown in add-ins can affect the
host application.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://vsa.summsoft.com/aggbug.aspx?PostID=2334" width="1" height="1"&gt;</description><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/addin/default.aspx">addin</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/add-in/default.aspx">add-in</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/DPM/default.aspx">DPM</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/NoRuntime/default.aspx">NoRuntime</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/ProxyShim/default.aspx">ProxyShim</category></item><item><title>Is VSTA 2.0 supported under Windows 7 and Visual Studio 2010?</title><link>http://vsa.summsoft.com/blogs/garyvsta/archive/2010/10/07/is-vsta-2-0-supported-under-windows-7-and-visual-studio-2010.aspx</link><pubDate>Thu, 07 Oct 2010 17:01:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:2327</guid><dc:creator>Gary</dc:creator><slash:comments>1</slash:comments><description>&lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;I&amp;rsquo;ll preface my answers about support for VSTA in Windows 7 and Visual Studio 2010 with a quick synopsis of VSTA 2.0 platform-related elements.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;VSTA 2.0 is based on VS2008 and .NET 3.5 SP1.&amp;nbsp; It supports 32-bit and 64-bit platforms.&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="font-family:Symbol;color:#1f497d;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&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="color:#1f497d;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;The VSTA integrated development environment creates projects similar to VS2008 that target .NET 3.5 SP1 exclusively.&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="font-family:Symbol;color:#1f497d;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&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="color:#1f497d;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;The VSTA IDE supports VB and C# languages and compilers for .NET 3.5 SP1 exclusively.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="font-family:Symbol;color:#1f497d;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&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="color:#1f497d;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;VSTA&amp;rsquo;s integrated debugger supports versions of the .NET framework that run on CLR 2 -- .NET 3.5 SP1 or previous framework versions. &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="font-family:Symbol;color:#1f497d;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&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="color:#1f497d;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;The VSTA runtime is built on System.AddIn, introduced in .NET 3.5.&amp;nbsp; Use of the runtime adds considerable complexity and is not recommended for most use cases.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;strong&gt;Windows 7 support&lt;/strong&gt;:&amp;nbsp; VSTA is fully supported under Windows 7 (both 64 and 32-bit).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#1f497d;"&gt;&lt;strong&gt;Visual Studio 2010 support&lt;/strong&gt;: &amp;nbsp;VSTA is supported under VS2010 in a limited way, described as follows:&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="font-family:Symbol;color:#1f497d;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;middot;&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="color:#1f497d;"&gt;For the most compatible VSTA/VS2010 scenario, build your application and integrate VSTA 2.0 with VS2010, &lt;i&gt;selecting .NET 3.5 SP1 as the &amp;lsquo;Target framework&amp;rsquo;&lt;/i&gt;.&amp;nbsp;&amp;nbsp;&amp;nbsp; This approach will allow you to use fully utilize VSTA&amp;rsquo;s design time and runtime capabilities.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="font-family:Symbol;color:#1f497d;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;middot;&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="color:#1f497d;"&gt;The CLR 4.0 will run .NET assemblies built with earlier versions of the .NET framework, including .NET 3.5 assemblies created by VSTA.&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="color:#1f497d;"&gt;Therefore, if you wish to use VSTA to automate your application built &lt;i&gt;with .NET 4.0 as the target framework&lt;/i&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#1f497d;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;o&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;You can &lt;i&gt;execute&lt;/i&gt; VSTA scripts to automate the application, but these scripts must use an application automation layer assembly built on .NET 3.5 SP1 or earlier.&amp;nbsp; VSTA scripts (add-in assemblies) cannot load assemblies built for the .NET 4.0 platform. &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#1f497d;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;o&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;At &lt;i&gt;design time&lt;/i&gt;, VSTA projects (created with VS 2008 or VSTA 2.0) cannot set reference to or load assemblies built for the .NET 4.0 platform. &amp;ldquo;The referenced component &amp;lsquo;&amp;lt;assembly name&amp;gt;&amp;rsquo; could not be found.&amp;rdquo;&amp;nbsp; As already mentioned, using an automation layer built with .NET 3.5 SP1 means that your application&amp;rsquo;s object model or automation layer cannot contain types or features that are new with .NET 4.0.&amp;nbsp; VSTA&amp;rsquo;s support of VB and C# languages does not reflect .NET 4.0 changes.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#1f497d;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;o&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;Both VS 2008 IDE and the VSTA 2.0 IDE will not &lt;i style="mso-bidi-font-style:normal;"&gt;debug&lt;/i&gt; a .NET 4.0 application as the start-up application.&amp;nbsp; Instead an error is thrown when starting the project: &amp;ldquo;The debugger&amp;rsquo;s protocol is incompatible with the debuggee&amp;ldquo;. I assume that the problem is caused with host app targeting .NET 4.0 &amp;amp; CLR 4.0 -- since VS2008 only supports up to .NET 3.5, the debugger is unable to correctly attach to a 4.0 managed process (or it doesn&amp;rsquo;t support .NET 4.0 debugger protocols).&lt;/span&gt;&lt;/p&gt;
&lt;span style="color:#1f497d;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="color:#1f497d;"&gt;&lt;img src="http://www.summsoft.com/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.44.10/debuggee.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;&lt;span style="font-size:small;"&gt;
&lt;p class="MsoListParagraph"&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;
&lt;p class="MsoListParagraph"&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#1f497d;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;I&amp;rsquo;ve encountered a reflection problem when gathering type information (Type t;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:9.5pt;"&gt;t.GetMethods();) &lt;/span&gt;&lt;span style="color:#1f497d;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;that only occurs when a .NET 4.0 host application interrogates a VSTA assembly (built on .NET 3.5). &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#1f497d;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;VS2010 will not open or convert VSTA 2.0 projects (and vice-versa).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Practically speaking, then, integrating VSTA 2.0 with an application built for .NET 4.0 is limited to VSTA script execution.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The VSTA script must be created and debugged in a .NET 3.5 context.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Microsoft continues to invest in VSTA as the .NET solution for end user scripting.&amp;nbsp; Presently, Microsoft has not disclosed a timeframe for VSTA support of .NET 4.0.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;color:#1f497d;font-size:small;"&gt;UPDATE:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;color:#1f497d;font-size:small;"&gt;&lt;a href="http://www.summsoft.com/blogs/garyvsta/archive/2010/10/22/net-4-and-vsta-redistribution.aspx"&gt;Testing on a clean computer&lt;/a&gt; with only .NET framework version 4.0 installed demonstrates that your application installer must continue to follow VSTA&amp;nbsp;deployment guidelines and include the correct, previous&amp;nbsp;version of the .NET framework as an installer&amp;nbsp;pre-requisite.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://vsa.summsoft.com/aggbug.aspx?PostID=2327" width="1" height="1"&gt;</description><category domain="http://vsa.summsoft.com/blogs/garyvsta/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://vsa.summsoft.com/blogs/garyvsta/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://vsa.summsoft.com/blogs/garyvsta/archive/tags/.NET+4.0/default.aspx">.NET 4.0</category></item><item><title>Referencing Host Items in a DPM Project from the Host Item Container</title><link>http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/2010/09/30/referencing-host-items-in-a-dpm-project-from-the-host-item-container.aspx</link><pubDate>Thu, 30 Sep 2010 15:24:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:2322</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoNormal"&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    In Dynamic Programming Model (DPM) style integrations there are
    three levels of correspondence between a DPM add-in and the host:
  &lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;text-indent:-0.25in;"&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span&gt;
      &lt;span&gt;
        1)&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;
      &lt;/span&gt;
    &lt;/span&gt;&lt;b&gt;&amp;ldquo;Host
    Item Container&amp;rdquo;&lt;/b&gt;:&lt;span&gt;&amp;nbsp; &lt;/span&gt;This is the entry point
    type which contains the host items and has its own code file in a DPM add-in
    project.&lt;span&gt;&amp;nbsp; &lt;/span&gt;This type and its associated
    code file would persist even if all host items were removed.&lt;span&gt;&amp;nbsp; &lt;/span&gt;For example:&lt;span&gt;
      &amp;nbsp;
    &lt;/span&gt;a document which contains drawings.
  &lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;text-indent:-0.25in;"&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span&gt;
      &lt;span&gt;
        2)&lt;span style="font:7pt &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;b&gt;Host
    Items&lt;/b&gt;:&lt;span&gt;&amp;nbsp; &lt;/span&gt;These are items which receive
    their own code files in a DPM style integration and are associated with a
    specific item in the host.&lt;span&gt;&amp;nbsp; &lt;/span&gt;If the host
    item is removed, the associated host item code file is removed from the add-in
    project.&lt;span&gt;&amp;nbsp; &lt;/span&gt;If a new host item is added, an
    associated host item code file is added to the add-in project.&lt;span&gt;&amp;nbsp; &lt;/span&gt;If a host item is renamed, the display name
    of the associated host item is updated in the add-in project. &lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;For example:&lt;span&gt;
      &amp;nbsp;
    &lt;/span&gt;drawings within a document.
  &lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:0.5in;text-indent:-0.25in;"&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span&gt;
      &lt;span&gt;
        3)&lt;span style="font:7pt &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;b&gt;Host
    Objects&lt;/b&gt;:&lt;span&gt;&amp;nbsp; &lt;/span&gt;These are objects which receive
    their own variable names within a host item code file in a DPM add-in
    project.&lt;span&gt;&amp;nbsp; &lt;/span&gt;For example:&lt;span&gt;&amp;nbsp; &lt;/span&gt;shapes within a drawing.&lt;span&gt;&amp;nbsp; &lt;/span&gt;
  &lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;br /&gt;In the SDK sample ShapeAppDynamicProgrammingModelCSharp a
    document is used as the host item container and its associated code file is &amp;ldquo;ThisDocument.xx
    &amp;rdquo; (&amp;quot;.cs&amp;quot; or &amp;quot;.vb&amp;quot;).&lt;span&gt;&amp;nbsp; &lt;/span&gt;Drawings contained within the
    document are host items and have code files which match their original name
    such as &amp;ldquo;Drawing1.xx&amp;rdquo;.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Shapes within drawings are host
    objects within host items such as &amp;ldquo;Circle1&amp;rdquo; in &amp;quot;Drawing1&amp;quot;. These variables are declared and instantiated in the
hidden&amp;nbsp;    designer file of the associated host item code file.&lt;span&gt;&amp;nbsp; &lt;/span&gt;For example:&lt;span&gt;
      &amp;nbsp; if Drawing1 contained a circle, then &lt;/span&gt;Drawing1.designer.xx would have code to declare and instantiate the host object Circle1.&amp;nbsp; Note: to see the hidden designer files, select the &amp;quot;Show All Files&amp;quot; option in the Project Explorer pane and expand the node for a code file (see screen shot below).&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img src="http://www.summsoft.com/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.51.26/DPM_5F00_ShowHiddenFiles.png" alt="" /&gt;&lt;br /&gt;Screen shot:&amp;nbsp; Hidden designer file&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;br /&gt;While host objects have a variable name associated with them
    that can be accessed through their host items, in the SDK sample, host items
    do not.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Therefore you could use code
    from within a host item to reference a host object by its variable name, but
    you cannot use similar code in the host item container to reference a host item.
  &lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;br /&gt;For example:&lt;span&gt;&amp;nbsp; &lt;/span&gt;Here are
    the start-up methods from the SDK sample for both a host item
    (Drawing1_Startup) and a host item container (ThisDocument_Startup).&lt;span&gt;&amp;nbsp; &lt;/span&gt;The host item can refer on of its hosts object by a
    variable name; however, a host item container cannot refer to a host item by a
    variable name in this fashion for SDK style integrations.
  &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br /&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;private&lt;/span&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;
      &lt;span style="color:blue;"&gt;void&lt;/span&gt; Drawing1_Startup(&lt;span style="color:blue;"&gt;object&lt;/span&gt;
      sender, System.&lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt; e)
    &lt;/span&gt;
  &lt;/span&gt;
&lt;br /&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;{&lt;/span&gt;
  &lt;/span&gt;
&lt;br /&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;
      &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
      &lt;span style="color:green;"&gt;
        //refer to a host
        object by its variable name
      &lt;/span&gt;
    &lt;/span&gt;
  &lt;/span&gt;
&lt;br /&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;
      &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Circle1.Color
      =
    &lt;/span&gt;
  &lt;/span&gt;
&lt;br /&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;
      &lt;span&gt;
        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
      &lt;/span&gt;Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp.
    &lt;/span&gt;
  &lt;/span&gt;
&lt;br /&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;
      &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Application&lt;/span&gt;.CreateColor(System.Drawing.&lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.Black.ToArgb());
    &lt;/span&gt;
  &lt;/span&gt;
&lt;br /&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;}&lt;/span&gt;
  &lt;/span&gt;
&lt;br /&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;
  &lt;/span&gt;
&lt;br /&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;private&lt;/span&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;
      &lt;span style="color:blue;"&gt;void&lt;/span&gt; ThisDocument_Startup(&lt;span style="color:blue;"&gt;object&lt;/span&gt;
      sender, &lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt; e)
    &lt;/span&gt;
  &lt;/span&gt;
&lt;br /&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;{&lt;/span&gt;
  &lt;/span&gt;
&lt;br /&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;
      &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
      &lt;span style="color:green;"&gt;
        //CANNOT refer to
        a host item through a variable name
      &lt;/span&gt;
    &lt;/span&gt;
  &lt;/span&gt;
&lt;br /&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;
      &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
      &lt;span style="color:green;"&gt;
        // using an SDK
        style integration
      &lt;/span&gt;
    &lt;/span&gt;
  &lt;/span&gt;
&lt;br /&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;
      &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Drawing1.Circle1.Color
      =
    &lt;/span&gt;
  &lt;/span&gt;
&lt;br /&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;
      &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;
        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
      &lt;/span&gt;Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp.
    &lt;/span&gt;
  &lt;/span&gt;
&lt;br /&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;
      &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Application&lt;/span&gt;.CreateColor(System.Drawing.&lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.Black.ToArgb());
    &lt;/span&gt;
  &lt;/span&gt;
&lt;br /&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&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:arial,helvetica,sans-serif;"&gt;
    &lt;br /&gt;While it is not possible to reference host items in the same
    way as it is possible to reference host objects in a standard SDK style
    integration, it is possible to do this in ProxyShim style integration.&lt;span&gt;&amp;nbsp; &lt;/span&gt;This is demonstrated in the Summit sample
    ShapeAppDynamicProgrammingModelCSharp_ProxyShim which is, like other NoRuntime
    samples, available upon request after filling out the &lt;a href="http://www2.summsoft.com/vstainfreq.asp"&gt;information form&lt;/a&gt;.
  &lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;  &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;/span&gt;&lt;br /&gt;
  &lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;
    For more information on the SDK Dynamic Programming Model
    style integration see the &lt;a title="MSDN Documentation" href="http://msdn.microsoft.com/en-us/library/cc175584%28v=VS.90%29.aspx"&gt;
      online
      MSDN documentation
    &lt;/a&gt;.
  &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;br /&gt;&lt;br /&gt; &lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://vsa.summsoft.com/aggbug.aspx?PostID=2322" width="1" height="1"&gt;</description></item><item><title>DPM Code Files for Renamed Host Items</title><link>http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/2010/09/28/dpm-code-files-for-renamed-host-items.aspx</link><pubDate>Tue, 28 Sep 2010 14:34:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:2320</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;For Dynamic Programming Model (DPM) style integrations, when a host item is renamed the corresponding code file in the DPM add-in project maintains its original file name and displays the updated host item name in parentheses next to the file name (see screen shot below).&amp;nbsp; This is accomplished by setting the DisplayName property of the IVstaProjectHostItem (projectHostItem.ProgrammingModelHostItem.DisplayName) for the renamed host item.&amp;nbsp; This is demonstrated in the SDK sample ShapeAppDynamicProgrammingModelCSharp where drawings represent host items.&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;In order to see this simply save a document, add a VB or C# DPM add-in project through the customization menu, then change a drawing name.&amp;nbsp; In the VSTA IDE the code file for the renamed drawing will appear as described above, with the original drawing name as the file name and the updated name in parentheses next to the file name in the Project Explorer pane.&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;
&lt;p&gt;&lt;img src="http://www.summsoft.com/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.51.26/DPM_5F00_RenameShot.png" alt="" /&gt; &lt;/p&gt;
&lt;p&gt;There is a small glitch with the SDK sample.&amp;nbsp; Once a document with a renamed host item (drawing) is customized (by adding a DPM add-in project), saved, and re-opened, a new file is added to the DPM add-in project with a file name matching the updated host item name.&amp;nbsp; This is caused by using the drawing.Name instead of drawing.Cookie in the AddDrawingProjectHostItem method.&amp;nbsp; Below is updated code which solves this problem.&lt;/p&gt;
&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#0000ff;font-size:10pt;mso-no-proof:yes;"&gt;private&lt;/span&gt; &lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; AddDrawingProjectHostItem(ShapeApp.&lt;span style="color:#2b91af;"&gt;Drawing&lt;/span&gt; drawing) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;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:#008000;"&gt;//To avoid problems with renamed host items, &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;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:#008000;"&gt;//use the cookie here instead of name &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;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:#008000;"&gt;//IVstaProjectHostItem projectHostItem = &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;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:#008000;"&gt;//&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;AddProjectHostItemInternal(&lt;b style="mso-bidi-font-weight:normal;"&gt; &lt;span style="text-decoration:underline;"&gt;drawing.Name&lt;/span&gt; &lt;/b&gt;, &amp;quot;drawing&amp;quot;, &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;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:#008000;"&gt;//&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&amp;quot;DrawingEntryPoint&amp;quot;); &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;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;IVstaProjectHostItem&lt;/span&gt; projectHostItem = &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;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;AddProjectHostItemInternal(&lt;b style="mso-bidi-font-weight:normal;"&gt; &lt;span style="text-decoration:underline;"&gt;drawing.Cookie&lt;/span&gt; &lt;/b&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;drawing&amp;quot;&lt;/span&gt;, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&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;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;DrawingEntryPoint&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;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:#008000;"&gt;//UNCHANGED CODE REMOVED &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;} &lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;p class="MsoNormal"&gt;
&lt;p&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;&amp;nbsp;In order to reproduce this problem and see the fix in action follow these steps:&lt;/span&gt; &lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1) Run the setup file for the SDK DPM sample ShapeAppDynamicProgrammingModelCSharp.&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2) Save a document.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3) Add a C# or VB add-in project through the customization menu.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4) Rename a drawing.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5) Save and close the project.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6) Re-open the project and launch the VSTA IDE by reselecting the language used for the DPM add-in customization above.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7) In the VSTA IDE note that there is now a file matching the renamed drawing as well as the original drawing name. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;Now implement the above fix and re-run the repro steps.&amp;nbsp; Notice that no new code file is added with the renamed host item&amp;#39;s name.&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;For more information on the Dynamic Programming Model please see the &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc175584%28v=VS.90%29.aspx" title="MSDN VSTA DPM Documentation"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;MSDN documentation&lt;/span&gt; &lt;/a&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;.&amp;nbsp; For more information on changing the display name of a host item in a DPM add-in see the &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc175980%28v=VS.90%29.aspx" title="MSDN VSTA DPM Documentation"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;How to: Change the Display Name of a Host Item&lt;/span&gt; &lt;/a&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;section.&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Arial;font-size:small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Arial;font-size:small;"&gt;&lt;/span&gt;&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://vsa.summsoft.com/aggbug.aspx?PostID=2320" width="1" height="1"&gt;</description><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/DynamicProgrammingModel/default.aspx">DynamicProgrammingModel</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/DPM/default.aspx">DPM</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/Host+Item/default.aspx">Host Item</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/Rename/default.aspx">Rename</category></item><item><title>DPM Add-in Project Host Item Code File Names</title><link>http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/2010/09/23/dpm-add-in-project-host-item-code-file-names.aspx</link><pubDate>Thu, 23 Sep 2010 15:00:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:2277</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For DyanmicProgrammingModel (DPM) add-in projects, the file name of the host item code file generally matches the name of the host item.&amp;nbsp; For example:&amp;nbsp; in the SDK sample ShapeAppDynamicProgrammingModelCSharp the host item &amp;ldquo;Drawing1&amp;rdquo; would have a corresponding code file named either &amp;ldquo;Drawing1.cs&amp;rdquo; or &amp;ldquo;Drawing1.vb&amp;rdquo;.&amp;nbsp; However, there is an exception to this rule.&amp;nbsp; If a host item has been removed, then a new one added with the same name as the host item which has been removed, the DPM code file associated with the newly added host item will&amp;nbsp;be named &amp;ldquo;HostItem#.xx&amp;rdquo;.&amp;nbsp; For example:&amp;nbsp; in the SDK sample if &amp;ldquo;Drawing3&amp;rdquo; was removed the corresponding code file &amp;ldquo;Drawing3.vb&amp;rdquo; would be removed from the DPM add-in project.&amp;nbsp; Then, if a new drawing was added it would be named &amp;ldquo;Drawing3&amp;rdquo;; however, the corresponding code file would be &amp;ldquo;Drawing31.vb&amp;rdquo;.&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This is due to a file which lingers once a host item has been removed.&amp;nbsp; Of the three host item code files associated with each host item, namely HostItem.xx, HostItem.Designer.xml, and HostItem.Designer.xx, only the designer files are actually deleted when a host item is removed.&amp;nbsp; The main, or visible, code file HostItem.xx is not deleted when the host item is.&amp;nbsp; This residual file is removed from the DPM project; however, because the file still exists the new host item&amp;rsquo;s code file name is automatically appended with a number to avoid a naming collision.&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;&lt;br /&gt;Note:&amp;nbsp; It is possible to use any valid name for the code file of a host item; this is specified in the first parameter &amp;ldquo;name&amp;rdquo; of the AddProjectHostItem methods. &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#008000;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;br /&gt;//From DesgignTimeIntegration.AddProjectHostItemInternal&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;projectHostItem =&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;hostAdapter.ProjectHostItems.AddProjectHostItem(&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;strong&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="text-decoration:underline;"&gt;itemName, &lt;span style="color:#008000;"&gt;//&amp;lt;== specify the host item code file name here&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;Microsoft.VisualStudio.Tools.Applications.Samples.ShapeApp.&amp;quot;&lt;/span&gt; + itemEntryPoint,&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;Microsoft.VisualStudio.Tools.Applications.Runtime.IEntryPoint&amp;quot;&lt;/span&gt;,&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;itemName,&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//cookie name&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.hostItemTemplatesPath + &lt;span style="color:#a31515;"&gt;@&amp;quot;\&amp;quot;&lt;/span&gt; + languageFolder + &lt;span style="color:#a31515;"&gt;@&amp;quot;\&amp;quot;&lt;/span&gt; + templateName);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For more information on the DyanmicProgrammingModel and the associated SDK sample please see the MSDN documentation &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc175584%28v=VS.90%29.aspx" title="MSDN documentation for DPM"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;Dynamically Creating and Modifying Host Items and Host Objects in an Add-in Project&lt;/span&gt; &lt;/a&gt;&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://vsa.summsoft.com/aggbug.aspx?PostID=2277" width="1" height="1"&gt;</description><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/DynamicProgrammingModel/default.aspx">DynamicProgrammingModel</category></item><item><title>Keeping a DPM Add-in Project in Sync with its Associated Document</title><link>http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/2010/09/20/keeping-a-dpm-add-in-project-in-sync-with-its-associated-document.aspx</link><pubDate>Mon, 20 Sep 2010 14:24:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:2274</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;When working with a Dynamic Programming Model (DPM) style integration, it is important to keep the DPM add-in project in sync with the associated host document.&amp;nbsp; There are two items which must be kept in sync:&amp;nbsp; the DPM add-in project host item code files and the host&amp;#39;s entry point list.&amp;nbsp; There are several times in which these items needs to be updated including when a host item is added, removed, or renamed.&amp;nbsp; In the SDK sample ShapeAppDynamicProgrammingModelCSharp the add-in project code files are updated; however, the list of entry points managed on the host side is not updated until a successful build of the add-in project.&amp;nbsp; This can cause the add-in project to become out of sync with the host document in some scenarios.&amp;nbsp; For example, if a host item is removed and the document is saved and closed without building the associated DPM add-in project, the result is an error when loading the DPM add-in project&amp;nbsp; when the document is re-opened.&amp;nbsp; Below is part a modified version of the VstaDesignTimeIntegration.cs file of the SDK DPM sample which demonstrates how to keep the entry point list in sync with the host document and add-in project.&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;Note, in the SDK sample ShapeAppDynamicProgrammingModelCSharp a host item is a Drawing and the entry point list is managed through an xml file (DocName.&lt;span style="font-size:small;"&gt;xml) included in the open xml &amp;quot;.msdx&amp;quot; file of a ShapeAppCSharp Document.&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-size:small;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#0000ff;font-size:small;mso-no-proof:yes;"&gt;private&lt;/span&gt; &lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; OnSuccessfulBuildDone() &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="font-size:small;"&gt;{&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//UNCHANGED CODE REMOVED&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//moved to UpdateEntryPointList&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;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#008000;"&gt;//this.document.VstaRunTimeIntegration.EntryPointNameList.Clear();&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//this.document.VstaRunTimeIntegration.EntryPointNameToCookieMap.Clear();&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//// Need to execute the host operation from the main UI thread.&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//AddEntryPointToDocument(&amp;quot;ThisDocument&amp;quot;);&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//foreach (Drawing drawing in this.document.Drawings)&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//{&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;AddEntryPointToDocument(drawing.Cookie);&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//} &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//ADDED&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;UpdateEntryPointList();&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//UNCHANGED CODE REMOVED &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;}&lt;br style="mso-special-character:line-break;" /&gt;&lt;br style="mso-special-character:line-break;" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#008000;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;//code taken from OnSuccessfulBuildDone &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#008000;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;//needs to be run for any host item add/remove &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#0000ff;font-size:small;mso-no-proof:yes;"&gt;private&lt;/span&gt; &lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; UpdateEntryPointList() &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;{&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//clear the existing list of entry points&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.document.VstaRunTimeIntegration.EntryPointNameList.Clear();&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.document.VstaRunTimeIntegration.EntryPointNameToCookieMap.Clear();&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&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-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//Add the document then, each host item to the list of entry points&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;AddEntryPointToDocument(&lt;span style="color:#a31515;"&gt;&amp;quot;ThisDocument&amp;quot;&lt;/span&gt;);&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&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;Drawing&lt;/span&gt; drawing &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.document.Drawings)&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&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;AddEntryPointToDocument(drawing.Cookie);&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;}&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#008000;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;//Entire method included for clarity &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#0000ff;font-size:small;mso-no-proof:yes;"&gt;void&lt;/span&gt; &lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;Drawings_DrawingInserted(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt; e) &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;{&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Drawing&lt;/span&gt; drawing = (&lt;span style="color:#2b91af;"&gt;Drawing&lt;/span&gt;)sender;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;AddDrawingProjectHostItem(drawing);&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#008000;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;//ADDED- Update the entry point list&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;UpdateEntryPointList();&lt;span style="mso-spacerun:yes;"&gt; &amp;nbsp; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;}&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#008000;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;//Entire method included for clarity &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#0000ff;font-size:small;mso-no-proof:yes;"&gt;void&lt;/span&gt; &lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;Drawings_DrawingRemoved(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;DrawingRemovedEventArgs&lt;/span&gt; e)&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;{&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; cookie = e.RemovedDrawingCookie;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IVstaProjectHostItem&lt;/span&gt; item = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.hostAdapter.ProjectHostItems[cookie];&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (item != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&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;this&lt;/span&gt;.hostAdapter.ProjectHostItems.RemoveProjectHostItem(item);&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#008000;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#008000;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;//ADDED-&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Update the entry point list&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;UpdateEntryPointList();&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;}&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#008000;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;//Entire method included for clarity &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#0000ff;font-size:small;mso-no-proof:yes;"&gt;private&lt;/span&gt; &lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; AddEntryPointToDocument(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; cookie) &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;{&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IVstaProjectHostItem&lt;/span&gt; projectHostItem = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.hostAdapter.ProjectHostItems[cookie];&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (projectHostItem == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&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;System.Diagnostics.&lt;span style="color:#2b91af;"&gt;Debug&lt;/span&gt;.Assert(&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;);&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&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;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Cannot find the document ProjectHostItem&amp;quot;&lt;/span&gt;);&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IVstaHostItem&lt;/span&gt; programmingModelHostItem = projectHostItem.ProgrammingModelHostItem;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; entryPointName = projectHostItem.FullyQualifiedNamespace + &lt;span style="color:#a31515;"&gt;&amp;quot;.&amp;quot;&lt;/span&gt; + programmingModelHostItem.Identifier;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.document.VstaRunTimeIntegration.EntryPointNameList.Add(entryPointName);&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.document.VstaRunTimeIntegration.EntryPointNameToCookieMap.Add(entryPointName, cookie); &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:small;mso-no-proof:yes;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;} &lt;/span&gt;&lt;/span&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://vsa.summsoft.com/aggbug.aspx?PostID=2274" width="1" height="1"&gt;</description><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/DynamicProgrammingModel/default.aspx">DynamicProgrammingModel</category></item><item><title>Add-in Management Options</title><link>http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/2010/08/24/add-in-management-options.aspx</link><pubDate>Tue, 24 Aug 2010 18:50:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:2241</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;span&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;There are many different ways to manage add-ins.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Below are some common add-in management styles which can be used alone, combined, or used side by side.&lt;span style="mso-spacerun:yes;"&gt;&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-family:arial,helvetica,sans-serif;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;1)&lt;/span&gt;&lt;span style="font-size:small;"&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:small;"&gt;&lt;span&gt;Basic:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;all interactions between the host and add-ins are executed in the Startup and Shutdown methods of the add-in.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This is demonstrated in the ShapeAppBasicCSharp SDK sample.&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&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Pros:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Easy.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Cons:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Not very flexible.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Repeatedly loading and unloading add-in can cause increase in memory usage.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;2)&lt;/span&gt;&lt;span style="font-size:small;"&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:small;"&gt;&lt;span&gt;On Demand:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;interactions between the host and add-ins occur when the host calls into methods in the add-ins.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Pros:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Code executed only when needed.&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&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Cons:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Requires more management code and invoke calls to execute a method in the add-in are time consuming. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Repeatedly loading and unloading add-in can cause increase in memory usage.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;3)&lt;/span&gt;&lt;span style="font-size:small;"&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:small;"&gt;&lt;span&gt;Macro:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;a single add-in project is loaded and displayed in the DTE and methods may be created during execution of the host either by the end user adding code or through macro recording with the host.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Host then calls into &amp;ldquo;macro&amp;rdquo; methods within the add-in project to be run or debugged into.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Pros:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Can create, debug, and run code on the fly.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Allows for macro recording and offers a VBA like experience.&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&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Cons:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Requires more management code, a design time integration, and macro recording code.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Invoke calls to execute a method in the add-in are time consuming. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Repeatedly loading and unloading add-in can cause increase in memory usage.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;4)&lt;/span&gt;&lt;span style="font-size:small;"&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:small;"&gt;&lt;span&gt;Event Oriented:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;add-ins hook into host events and execute code when a host event is fired.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Pros:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Easy.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Responding to events in the host is less time consuming than invoke calls.&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&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Cons:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Must unhook all events prior to unloading the add-in.&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 style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Repeatedly loading and unloading add-in can cause increase in memory usage.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;5)&lt;/span&gt;&lt;span style="font-size:small;"&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:small;"&gt;Service Oriented:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;add-ins register services with a host which can be used by other add-ins.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This is based off a &lt;/span&gt;&lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/sandeep_bhatia/archive/2008/12/06/exposing-a-service-through-an-add-in.aspx"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;blog by Sandeep Bhatia&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:small;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Pros:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Very flexible.&lt;span style="mso-spacerun:yes;"&gt;&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:small;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Cons:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Requires some management code and shifts some of the complexity from the host to the add-ins and separate assemblies.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;6)&lt;/span&gt;&lt;span style="font-size:small;"&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:small;"&gt;&lt;span&gt;Super Add-in:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;a single add-in contains multiple units of functionality (where each unit could be isolated in an individual add-in).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The host makes calls into the add-in to hookup or unhook individual units of functionality.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Pros:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;No increase in memory usage due to repeatedly loading and unloading add-ins because only one add-in is loaded.&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&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Cons:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Requires more management code and invoke calls are time consuming.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;With any of the above styles the add-ins can be loaded and unloaded different ways:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;1)&lt;/span&gt;&lt;span style="font-size:small;"&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:small;"&gt;&lt;span&gt;Host Centric:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The add-ins are loaded at the beginning of host application execution and are unloaded when the host terminates.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This is demonstrated in the ShapeAppBasicCSharp SDK sample.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;2)&lt;/span&gt;&lt;span style="font-size:small;"&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:small;"&gt;&lt;span&gt;Document Centric:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The add-ins are loaded when a specific document is opened, and unloaded when the document closes.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This is demonstrated in the ShapeAppDynamicProgrammingModelCSharp SDK sample.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Note that non-DPM add-ins can also be used in document centric ways as was shown in the VSTA v 1 SDK samples with the drawing &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;entry point.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;3)&lt;/span&gt;&lt;span style="font-size:small;"&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:small;"&gt;&lt;span&gt;On Demand:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Add-ins are loaded and unloaded during execution of the host application as needed or requested by the user.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This is demonstrated in the ShapeAppMacroRecordingCSharp SDK sample when the macro add-in is unloaded and reloaded during the macro project build cycle.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This can be host or document oriented.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;Any of the above styles of add-in management may also be used with different styles of integration:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;1)&lt;/span&gt;&lt;span style="font-size:small;"&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:small;"&gt;&lt;span&gt;SDK:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;A proxy is used and the VSTA pipeline is used for interactions between the add-ins and host.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;This style of integration is used in all SDK samples&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;2)&lt;/span&gt;&lt;span style="font-size:small;"&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:small;"&gt;NoRuntime:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;No proxy is used, instead the add-ins reference the host directly and the VSTA runtime is not referenced or used.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This style of integration is used in the Microsoft ShapeAppMacroRecordingCSharp-NoRuntime sample available from Summit upon request (must fill out &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www2.summsoft.com/VSTAInfReq.asp"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;information form&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:small;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;3)&lt;/span&gt;&lt;span style="font-size:small;"&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:small;"&gt;NoRuntimeProxyShim:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;A proxy shim, which defines only the entry point types, is used along with a direct reference to the host.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The VSTA runtime is referenced, but not used.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This style of integration is used in the ShapeAppMacroRecordingCSharp-NoRuntime-ProxyShim sample which is available from Summit upon request (must fill out &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www2.summsoft.com/VSTAInfReq.asp"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;information form&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:small;"&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://vsa.summsoft.com/aggbug.aspx?PostID=2241" width="1" height="1"&gt;</description><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/add-in/default.aspx">add-in</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/Proxy/default.aspx">Proxy</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/ShapeAppCSharp/default.aspx">ShapeAppCSharp</category></item><item><title>Using a Registry Entry to Specify the DebugInfoExeName</title><link>http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/2010/07/29/using-a-registry-entry-to-specify-the-debuginfoexename.aspx</link><pubDate>Thu, 29 Jul 2010 16:49:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:2347</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;When a VSTA add-in is run or debugged from a stand alone or
destructive scenario, the life of the host application is tied to the debugging
or running session.&lt;span&gt;&amp;nbsp; &lt;/span&gt;In order to start
the host application the VSTA add-in must know the location of the exe to
run.&lt;span&gt;&amp;nbsp; &lt;/span&gt;This information is specified in
the project file, in the element DebugInfoExeName.&lt;span&gt;&amp;nbsp; &lt;/span&gt;This element can accept either a path to the
exe, or a registry entry to search for the value.&lt;span&gt;&amp;nbsp; &lt;/span&gt;This can be specified through ProjectGen,
changed manually in the project template, or set programmatically by the host.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The ShapeApp SDK samples use a registry entry
(see code below) so that the path to the exe can be easily changed without
editing individual add-ins or manipulating and re-registering project templates.&lt;span&gt;&amp;nbsp; &lt;/span&gt;This can be very useful for several reasons,
including allowing for a more flexible install instead of requiring the host
exe to be at a particular path.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;"&gt;ProjectProperties&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:red;"&gt;DebugInfoExeName&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;=&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;#HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ShapeAppCSharp\InstallPath#\ShapeAppCSharp.exe&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;For more information regarding the project templates please see:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a title="MSDN Documentation" href="http://msdn.microsoft.com/en-us/library/cc175544%28v=VS.90%29.aspx"&gt;Creating Project Templates (Visual Studio Tools for Applications)&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a title="MSDN Documentation" href="http://msdn.microsoft.com/en-us/library/cc175307%28v=VS.90%29.aspx"&gt;Project Template Generation Tool (Projectgen.exe)&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a title="MSDN Documentation" href="http://msdn.microsoft.com/en-us/library/cc175528%28v=VS.90%29.aspx"&gt;Descriptor Schema for Projectgen.exe&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a title="MSDN Documentation" href="http://msdn.microsoft.com/en-us/library/cc175975%28v=VS.90%29.aspx"&gt;Creating Project Templates Using the Project Template Generation Tool (Projectgen.exe)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://vsa.summsoft.com/aggbug.aspx?PostID=2347" width="1" height="1"&gt;</description><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/projectgen/default.aspx">projectgen</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/Project+Template/default.aspx">Project Template</category></item><item><title>Binding Redirects</title><link>http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/2010/07/27/binding-redirects.aspx</link><pubDate>Tue, 27 Jul 2010 15:21:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:2222</guid><dc:creator>Melody</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;&lt;span style="font-size:small;"&gt;As mentioned in Gary&amp;#39;s blog &lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;a href="http://www.summsoft.com/blogs/garyvsta/archive/2007/02/08/dependent-assembly-binding-redirect-by-version.aspx" title="Summit Blog"&gt;Dependent Assembly Binding Redirect (by version)&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;, it is possible to use a configuration file to change which version of an assembly to use.&amp;nbsp; This can be very helpful in &amp;quot;tight versioning&amp;quot; scenarios (see blog &lt;/span&gt;&lt;a href="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/2008/08/15/Proxy-Versioning-Options-for-Project-Templates.aspx" title="Summit Blog"&gt;&lt;span style="font-size:small;"&gt;Proxy Versioning Options for Project Templates&lt;/span&gt; &lt;/a&gt;&lt;span style="font-size:small;"&gt;) where a specific version of a proxy is used.&amp;nbsp; Here are some considerations for this:&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;In order to use a binding redirect the reference must have the SpecificVersion property set to True.&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt; &lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;"&gt;Reference&lt;/span&gt; &lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;color:#0000ff;"&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;color:#ff0000;"&gt;Include&lt;/span&gt; &lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;color:#0000ff;"&gt;=&lt;/span&gt; &lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;quot;&lt;span style="color:#0000ff;"&gt;ShapeAppCSharpProxy, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b2943f7cfe902115, processorArchitecture=MSIL&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff;"&gt; &amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt; &lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;"&gt;SpecificVersion&lt;/span&gt; &lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&gt;True&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;SpecificVersion&lt;/span&gt;&lt;span style="color:#0000ff;"&gt; &amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;"&gt;Reference&lt;/span&gt; &lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;nbsp; &lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;span style="font-size:small;"&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;Generally the binding redirect can be specified in the application level configuration file AppName.exe.config (see &lt;/span&gt;&lt;a href="http://www.summsoft.com/blogs/garyvsta/archive/2007/02/08/dependent-assembly-binding-redirect-by-version.aspx" title="Summit Blog"&gt;&lt;span style="font-size:small;"&gt;Gary&amp;#39;s blog&lt;/span&gt; &lt;/a&gt;&lt;span style="font-size:small;"&gt;); however, there is a known bug with this for VSTA v 1 add-ins after Visual Studio 2008 SP1 is installed.&amp;nbsp; The workaround is to specify the binding redirect in the machine level configuration file Machine.config.&amp;nbsp; This file can be updated through the Microsoft .NET Framework 2.0 Configuration utility or programmatically with admin privileges- see code below.&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; EnsureMachineConfig() &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//open the config file &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Configuration&lt;/span&gt; MachineConfig = &lt;span style="color:#2b91af;"&gt;ConfigurationManager&lt;/span&gt;.OpenMachineConfiguration(); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//Ge thte runtime section &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;ConfigurationSection&lt;/span&gt; runtimeSection = MachineConfig.Sections[&lt;span style="color:#a31515;"&gt;&amp;quot;runtime&amp;quot;&lt;/span&gt;]; &lt;span style="color:#008000;"&gt;//case sensitive &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; content = runtimeSection.SectionInformation.GetRawXml(); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//check if the proxy is already being re-directed &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (!content.Contains(&lt;span style="color:#a31515;"&gt;&amp;quot;ShapeAppCSharpProxy&amp;quot;&lt;/span&gt;)) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&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 style="color:#008000;"&gt;//add the entry &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&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;content = content.Replace( &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&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:#a31515;"&gt;&amp;quot;&amp;lt;/assemblyBinding&amp;gt;&amp;quot;&lt;/span&gt;, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&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:#a31515;"&gt;&amp;quot;&amp;lt;dependentAssembly&amp;gt;&amp;quot;&lt;/span&gt; + &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&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:#a31515;"&gt;&amp;quot;&amp;lt;assemblyIdentity name=\&amp;quot;ShapeAppCSharpProxy\&amp;quot; culture=\&amp;quot;Neutral\&amp;quot; publicKeyToken=\&amp;quot;b2943f7cfe902115\&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt; + &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&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:#a31515;"&gt;&amp;quot;&amp;lt;bindingRedirect oldVersion=\&amp;quot;1.0.0.0\&amp;quot; newVersion=\&amp;quot;2.0.0.0\&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt;+ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&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:#a31515;"&gt;&amp;quot;&amp;lt;/dependentAssembly&amp;gt;&amp;quot;&lt;/span&gt;+ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&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:#a31515;"&gt;&amp;quot;&amp;lt;/assemblyBinding&amp;gt;&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&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 style="color:#008000;"&gt;//save the changes &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&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;runtimeSection.SectionInformation.SetRawXml(content); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&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;MachineConfig.Save(); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;font-family:&amp;#39;Courier New&amp;#39;;"&gt;}&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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:small;"&gt;For VSTA v 2 Visual Basic add-ins only one version of a proxy can be registered on a machine at any time due to the unique name requirment(see blog &lt;/span&gt;&lt;a href="http://www.summsoft.com/blogs/melodys_vsta_blog/archive/2009/01/26/Proxy-Assembly-Registration_2D00_-Unique-Name-Required.aspx" title="Summit Blog"&gt;&lt;span style="font-size:small;"&gt;Proxy Assembly Registration- Unique Name Required&lt;/span&gt; &lt;/a&gt;&lt;span style="font-size:small;"&gt;).&amp;nbsp; For C# add-ins multiple versions of the same proxy can coexist.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style="font-size:small;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size:small;"&gt;Related Forum Post:&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.summsoft.com/forums/t/903.aspx" title="Summit Forum Post"&gt;&lt;span style="font-size:small;"&gt;Dependent Assembly Binding Redirect (by version)&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://vsa.summsoft.com/aggbug.aspx?PostID=2222" width="1" height="1"&gt;</description><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/Proxy/default.aspx">Proxy</category><category domain="http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/tags/Binding+Redirect/default.aspx">Binding Redirect</category></item><item><title>File Name and Path Length Limits</title><link>http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/2010/07/15/file-name-and-path-length-limits.aspx</link><pubDate>Thu, 15 Jul 2010 19:00:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:2346</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;Windows imposes limits on the lengths of path and file names maxing out around 260 characters.&amp;nbsp; For all Visual Studio projects, including VSTA projects, these limits are further reduced to accommodate for the entire file structure of the project.&amp;nbsp; For instance, the project solution &amp;quot;Test&amp;quot; located at C:\Test\Test.sln which has a fully qualified path name of only 16 characters, needs to accommodate many sub-directories and files including files like C:\Test\Test\obj\Debug\Test.Properties.Resources.resources which has a fully qualified path name of 58 characters.&amp;nbsp; In order to accommodate these files, the limit for Visual Studio and VSTA projects is further reduced by an additional 80 characters bringing the limit to about 180.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;For more information on these limits please see&lt;/span&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt; the bug report: &lt;a title="Microsoft Connect Bug Report" href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=338223&amp;amp;wa=wsignin1.0#details"&gt;EnvDTE80.Solution2.AddFromTemplate - Reports path too long incorrectly&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://vsa.summsoft.com/aggbug.aspx?PostID=2346" width="1" height="1"&gt;</description></item><item><title>Alternatives to Invoking to Run a Method in an Add-in</title><link>http://vsa.summsoft.com/blogs/melodys_vsta_blog/archive/2010/05/14/alternatives-to-invoking-to-run-a-method-in-an-add-in.aspx</link><pubDate>Fri, 14 May 2010 14:49:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:2141</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;font-size:small;"&gt;In scenarios where a method or macro within an add-in needs to be run several times in a short time span, for example 60 times a second, invoking the method may not be the best option.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The invoke call, as seen in the ShapeAppMacroRecordingCSharp sample, is too slow to for the level of performance required in these high stress scenarios.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;A good alternative to this is firing an event in the host and catching it in the add-in.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Particularly in NoRuntime style integrations this approach achieves higher performance.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Another workaround is to call into the add-in once and pass the number of times to run the method as a parameter.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;While this will take some coding overhead in the add-in it does achieve very high performance and is ideal for high stress scenarios where the number of times a method needs to be run is known.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Don&amp;rsquo;t limit the performance of your host by sticking to the SDK samples.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;span style="font-family:Calibri;font-size:x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://vsa.summsoft.com/aggbug.aspx?PostID=2141" width="1" height="1"&gt;</description></item><item><title>Microsoft releases Security Bulletin MS10-031 - Critical</title><link>http://vsa.summsoft.com/blogs/davesblog/archive/2010/05/11/microsoft-releases-security-bulletin-ms10-031-critical.aspx</link><pubDate>Tue, 11 May 2010 18:13:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:2133</guid><dc:creator>dschneid</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Microsoft has released Security Bulletin MS10-031 which resolves a privately reported vulnerability in Microsoft Visual Basic for Applications (VBA).&lt;/p&gt;
&lt;p&gt;The complete Security Bulletin can be found &lt;a href="http://www.microsoft.com/technet/security/Bulletin/MS10-031.mspx"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Summit has made the&amp;nbsp;updated version of the Visual Basic for Applications SDK that addresses the vulnerability described in this bulletin&amp;nbsp;available &lt;a href="http://summsoft.com/media/g/security_release/default.aspx"&gt;here&lt;/a&gt; for independent software vendors (ISVs)&lt;/p&gt;
&lt;p&gt;From the Security Bulletin...&lt;/p&gt;
&lt;p&gt;Vulnerability in Microsoft Visual Basic for Applications Could Allow Remote Code Execution (978213)&lt;/p&gt;
&lt;p&gt;This security update resolves a privately reported vulnerability in Microsoft Visual Basic for Applications. The vulnerability could allow remote code execution if a host application opens and passes a specially crafted file to the Visual Basic for Applications runtime. If a user is logged on with administrative user rights, an attacker who successfully exploited this vulnerability could take complete control of an affected system. An attacker could then install programs; view, change, or delete data; or create new accounts with full user rights. Users whose accounts are configured to have fewer user rights on the system could be less impacted than users who operate with administrative user rights.&lt;/p&gt;
&lt;p&gt;This security update is rated Critical for all supported versions of Microsoft Visual Basic for Applications SDK and third-party applications that use Microsoft Visual Basic for Applications. This security update is also rated Important for all supported editions of Microsoft Office XP, Microsoft Office 2003, and the 2007 Microsoft Office System. For more information, see the subsection, &lt;b&gt;Affected and Non-Affected Software&lt;/b&gt;, in this section.&lt;/p&gt;
&lt;p&gt;The update addresses the vulnerability by modifying the way that Visual Basic for Applications searches for ActiveX Controls embedded in documents. For more information about the vulnerability, see the Frequently Asked Questions (FAQ) subsection for the specific vulnerability entry under the next section, &lt;b&gt;Vulnerability Information&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Recommendation.&lt;/b&gt;&amp;nbsp;Microsoft recommends that customers apply the update immediately. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Developer Tools&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
&lt;table cellpadding="0" cellspacing="0" class="dataTable" id="E4E"&gt;

&lt;tr class="stdHeader"&gt;
&lt;td id="colEAF"&gt;Developer Tools&lt;/td&gt;
&lt;td id="colEEF"&gt;Maximum Security Impact&lt;/td&gt;
&lt;td id="colEIF"&gt;Aggregate Severity Rating&lt;/td&gt;
&lt;td id="colEMF" style="border-right:#cccccc 1px solid;"&gt;Bulletins Replaced by this Update&lt;/td&gt;
&lt;/tr&gt;


&lt;tr class="record"&gt;
&lt;td&gt;
&lt;p class="lastInCell"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=436a8a66-352e-44d1-a610-c825083ad24a"&gt;Microsoft Visual Basic for Applications&lt;/a&gt;&lt;sup&gt;[1]&lt;/sup&gt;&lt;br /&gt;(KB974945)&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p class="lastInCell"&gt;Remote Code Execution&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p class="lastInCell"&gt;Critical&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:#cccccc 1px solid;"&gt;
&lt;p class="lastInCell"&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=69226"&gt;MS06-047&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="evenRecord"&gt;
&lt;td&gt;
&lt;p class="lastInCell"&gt;Microsoft Visual Basic for Applications SDK&lt;sup&gt;[2][3]&lt;/sup&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p class="lastInCell"&gt;Remote Code Execution&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p class="lastInCell"&gt;Critical&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right:#cccccc 1px solid;"&gt;
&lt;p class="lastInCell"&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=69226"&gt;MS06-047&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;&lt;sup&gt;[3]&lt;/sup&gt;The updated version of the Visual Basic for Applications SDK that addresses the vulnerability described in this bulletin is available for independent software vendors (ISVs) from the &lt;a href="http://www.summsoft.com/"&gt;Summit Software Company&lt;/a&gt;. For more information, see the next section, &lt;b&gt;Frequently Asked Questions (FAQ) Related to This Security Update&lt;/b&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://vsa.summsoft.com/aggbug.aspx?PostID=2133" width="1" height="1"&gt;</description><category domain="http://vsa.summsoft.com/blogs/davesblog/archive/tags/Microsoft+Security+Bulletin+MS10-031/default.aspx">Microsoft Security Bulletin MS10-031</category><category domain="http://vsa.summsoft.com/blogs/davesblog/archive/tags/VBA/default.aspx">VBA</category></item></channel></rss>
