<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://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/"><channel><title>Melody's VSTA Blog : DynamicProgrammingModel</title><link>http://summsoft.com/blogs/melodys_vsta_blog/archive/tags/DynamicProgrammingModel/default.aspx</link><description>Tags: DynamicProgrammingModel</description><dc:language>en</dc:language><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>ShapeAppDynamicProgrammingModelCSharp_ProxyShim Sample</title><link>http://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><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://summsoft.com/blogs/melodys_vsta_blog/rsscomments.aspx?PostID=2341</wfw:commentRss><comments>http://summsoft.com/blogs/melodys_vsta_blog/archive/2010/10/19/dpm-ps-sample.aspx#comments</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://summsoft.com/aggbug.aspx?PostID=2341" width="1" height="1"&gt;</description><category domain="http://summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://summsoft.com/blogs/melodys_vsta_blog/archive/tags/add-in/default.aspx">add-in</category><category domain="http://summsoft.com/blogs/melodys_vsta_blog/archive/tags/DynamicProgrammingModel/default.aspx">DynamicProgrammingModel</category><category domain="http://summsoft.com/blogs/melodys_vsta_blog/archive/tags/ProxyShim/default.aspx">ProxyShim</category><category domain="http://summsoft.com/blogs/melodys_vsta_blog/archive/tags/new+operator/default.aspx">new operator</category></item><item><title>DPM Code Files for Renamed Host Items</title><link>http://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><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://summsoft.com/blogs/melodys_vsta_blog/rsscomments.aspx?PostID=2320</wfw:commentRss><comments>http://summsoft.com/blogs/melodys_vsta_blog/archive/2010/09/28/dpm-code-files-for-renamed-host-items.aspx#comments</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://summsoft.com/aggbug.aspx?PostID=2320" width="1" height="1"&gt;</description><category domain="http://summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://summsoft.com/blogs/melodys_vsta_blog/archive/tags/DynamicProgrammingModel/default.aspx">DynamicProgrammingModel</category><category domain="http://summsoft.com/blogs/melodys_vsta_blog/archive/tags/DPM/default.aspx">DPM</category><category domain="http://summsoft.com/blogs/melodys_vsta_blog/archive/tags/Host+Item/default.aspx">Host Item</category><category domain="http://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://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><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://summsoft.com/blogs/melodys_vsta_blog/rsscomments.aspx?PostID=2277</wfw:commentRss><comments>http://summsoft.com/blogs/melodys_vsta_blog/archive/2010/09/23/dpm-add-in-project-host-item-code-file-names.aspx#comments</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://summsoft.com/aggbug.aspx?PostID=2277" width="1" height="1"&gt;</description><category domain="http://summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://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://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><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://summsoft.com/blogs/melodys_vsta_blog/rsscomments.aspx?PostID=2274</wfw:commentRss><comments>http://summsoft.com/blogs/melodys_vsta_blog/archive/2010/09/20/keeping-a-dpm-add-in-project-in-sync-with-its-associated-document.aspx#comments</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://summsoft.com/aggbug.aspx?PostID=2274" width="1" height="1"&gt;</description><category domain="http://summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://summsoft.com/blogs/melodys_vsta_blog/archive/tags/DynamicProgrammingModel/default.aspx">DynamicProgrammingModel</category></item><item><title>VSTA and Packaging</title><link>http://summsoft.com/blogs/melodys_vsta_blog/archive/2009/04/07/vsta-and-packaging.aspx</link><pubDate>Tue, 07 Apr 2009 17:08:00 GMT</pubDate><guid isPermaLink="false">ff090588-e3d7-4538-8ee9-e75ea04444bb:1724</guid><dc:creator>Melody</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://summsoft.com/blogs/melodys_vsta_blog/rsscomments.aspx?PostID=1724</wfw:commentRss><comments>http://summsoft.com/blogs/melodys_vsta_blog/archive/2009/04/07/vsta-and-packaging.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;A new sample and video are available which demonstrate packaging a VSTA add-in within a document using System.IO.Packaging.&amp;nbsp; Packaging is also used by Office 2007 documents including the &amp;quot;docx&amp;quot;, &amp;quot;docm&amp;quot;, &amp;quot;xlsx&amp;quot;, and &amp;quot;xlsm&amp;quot; file types.&amp;nbsp; In this sample, both the add-in source code and compiled assembly are packaged into the single file document which can be transferred (ex:&amp;nbsp; e-mailed) and opened by another user who through the single file will have access to the document, compiled add-in and source code- similar to an Office document with a VBA macro project included.&lt;/span&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;This sample is document-centric, so the add-in is intended only for use with the document it is packaged within.&amp;nbsp; Based on the ShapeAppDynamicProgrammingModelCSharp SDK sample, this sample extends the existing packaging file format of the SDK samples to include the VSTA add-in associated with the document.&amp;nbsp; Benefits of packaging document specific VSTA add-ins within documents include ease of deployment and an intuitive end user experience.&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;Technical&amp;nbsp;stuff:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;The main code changes made to the SDK sample ShapeAppDynamicProgrammingModelCSharp for packaging are in methods involved with saving and opening documents in the document.cs file.&amp;nbsp; The add-in project associated with the document is originally created in the same folder as the document.&amp;nbsp; A copy of the project and add-in are packaged into the document while the originals stay in place.&amp;nbsp; This allows the add-in project to be updated outside of the document, and logic was added to use the original project and add-in if available.&amp;nbsp; If the project or add-in is no longer available then the internal copy is used.&amp;nbsp; The internal copy is updated every time the document is saved.&amp;nbsp; This provides a more dev oriented experience, allowing the add-in project to be modified outside of the document, but may not be optimal for non-dev end users.&amp;nbsp; The add-in project source code and assembly are packaged within the document so the only required file is the single document file.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;The ShapeAppDynamicProgrammingModelCSharp sample was also updated to include seamless non-destructive debugging; a side effect of this is the add-in projects cannot be run directly because they search for a running instance of the host instead of starting a new one.&amp;nbsp; Therefore, to run a DPM packaged project, open the document through the host instead of debugging from a standalone VSTA IDE.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;Note, this is not ClickOnce deployment, for information on ClickOnce deployment please refer to the SDK section &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc175947.aspx"&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;Securing and Deploying Add-Ins&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:small;font-family:arial,helvetica,sans-serif;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;font-family:Arial;"&gt;Links:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;font-family:Arial;"&gt;&lt;a href="http://www.summsoft.com/media/p/1725.aspx" title="Summit Sample"&gt;Summit:&amp;nbsp; Link to Sample&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;font-family:Arial;"&gt;&lt;a href="http://www.summsoft.com/blogs/videos/archive/2009/04/07/vsta-and-packaging.aspx" title="Summit Video"&gt;Summit:&amp;nbsp; Link to Video&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;font-family:Arial;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc175731.aspx" title="MSDN VSTA SDK"&gt;MSDN:&amp;nbsp; Add-in Debugging&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;font-family:Arial;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc175988.aspx" title="MSDN VSTA SDK"&gt;MSDN:&amp;nbsp; DPM Walkthrough&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;font-family:Arial;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.io.packaging.aspx" title="MSDN Library"&gt;MSDN:&amp;nbsp; System.IO.Packaging&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;font-family:Arial;"&gt;&lt;a href="http://blogs.msdn.com/brian_jones/archive/2005/06/06/425750.aspx" title="MSDN Blog"&gt;MSDN:&amp;nbsp; Office Packaging&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://summsoft.com/aggbug.aspx?PostID=1724" width="1" height="1"&gt;</description><category domain="http://summsoft.com/blogs/melodys_vsta_blog/archive/tags/vsta/default.aspx">vsta</category><category domain="http://summsoft.com/blogs/melodys_vsta_blog/archive/tags/Packaging/default.aspx">Packaging</category><category domain="http://summsoft.com/blogs/melodys_vsta_blog/archive/tags/DynamicProgrammingModel/default.aspx">DynamicProgrammingModel</category><category domain="http://summsoft.com/blogs/melodys_vsta_blog/archive/tags/DPM/default.aspx">DPM</category></item></channel></rss>