<feed version="0.3" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://purl.org/atom/ns#" xml:lang="en-US"><title>Pablo Galiano</title><link rel="alternate" type="text/html" href="http://www.clariusconsulting.net/blogs/pga/default.aspx" /><tagline type="text/html">ISerializable thoughts</tagline><id>http://www.clariusconsulting.net/blogs/pga/default.aspx</id><author><url>http://www.clariusconsulting.net/blogs/pga/default.aspx</url></author><generator url="http://communityserver.org" version="1.0.1.50214">Community Server</generator><modified>2008-08-25T06:32:00Z</modified><entry><title>VSXDevCon 08 sceencasts uploaded</title><link rel="alternate" type="text/html" href="http://www.clariusconsulting.net/blogs/pga/archive/2008/10/21/VSXDevCon08sceencastsuploaded.aspx" /><id>e6de741d-39cb-46fc-b8ae-6ce6880bcef9:104097</id><created>2008-10-21T19:33:21Z</created><content type="text/html" mode="escaped">&lt;p&gt;The screencasts for the VSX Developer Conference 08 are live and can be downloaded from:&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/vsx/cc676517.aspx"&gt;http://msdn.microsoft.com/en-us/vsx/cc676517.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;If you are interested in the session that I gave "&lt;b&gt;How to extend Visual Studio and become a more productive developer&lt;/b&gt;" you can watch it @ &lt;a title="http://channel9.msdn.com/posts/AnthonyC/How-to-extend-Visual-Studio-and-become-a-more-productive-developer/" href="http://channel9.msdn.com/posts/AnthonyC/How-to-extend-Visual-Studio-and-become-a-more-productive-developer/"&gt;http://channel9.msdn.com/posts/AnthonyC/How-to-extend-Visual-Studio-and-become-a-more-productive-developer/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Pablo&lt;/p&gt;&lt;img src="http://www.clariusconsulting.net/aggbug.aspx?PostID=104097" width="1" height="1"&gt;</content><slash:comments>2</slash:comments><wfw:commentRss>http://www.clariusconsulting.net/blogs/pga/commentrss.aspx?PostID=104097</wfw:commentRss></entry><entry><title>GAXP1409 released</title><link rel="alternate" type="text/html" href="http://www.clariusconsulting.net/blogs/pga/archive/2008/10/06/GAXP1409released.aspx" /><id>e6de741d-39cb-46fc-b8ae-6ce6880bcef9:100718</id><created>2008-10-06T07:50:40Z</created><content type="text/html" mode="escaped">&lt;p&gt;A new &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E28205C6-BB07-401B-9A76-804784598BF0&amp;amp;displaylang=en"&gt;patch&lt;/a&gt; for &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=40&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=e28205c6-bb07-401b-9a76-804784598bf0&amp;amp;u=http%3a%2f%2fmsdn.microsoft.com%2fen-us%2fvsts2008%2faa718948.aspx"&gt;GAX&lt;/a&gt; targeting Visual Studio 2008 SP1 was released last week.&lt;/p&gt; &lt;p&gt;I will update the VSSDK Assist installer to target this release soon!&lt;/p&gt; &lt;p&gt;Pablo&lt;/p&gt;&lt;img src="http://www.clariusconsulting.net/aggbug.aspx?PostID=100718" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.clariusconsulting.net/blogs/pga/commentrss.aspx?PostID=100718</wfw:commentRss></entry><entry><title>How do I create a ModelElement via API</title><link rel="alternate" type="text/html" href="http://www.clariusconsulting.net/blogs/pga/archive/2008/09/30/HowdoIcreateaModelElementviaAPI.aspx" /><id>e6de741d-39cb-46fc-b8ae-6ce6880bcef9:98108</id><created>2008-09-30T08:17:39Z</created><content type="text/html" mode="escaped">&lt;p&gt;My eighteenth &lt;strong&gt;How do I&lt;/strong&gt; is up.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Scenario&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Let's say that we start from the Minimal Language DSL template and we have an ExampleElement domain class that has a Name domain property with the Is Element Name flag set to true.&lt;/p&gt; &lt;p&gt;Because it has the IsElementName flag, every time that we create a ExampleElement with the UI (toolbox or model explorer) the element is created with a default name. This default name is composed of the type name of the concept plus an index. Example : ElementName1, ElementName2, etc.&lt;/p&gt; &lt;p&gt;The focus of this How do I shows how to create the model element programmatically.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Interfaces and classes needed&lt;/em&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.modeling.elementoperations.aspx"&gt;ElementOperations&lt;/a&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.modeling.elementgroup.aspx"&gt;ElementGroup&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Code snippet&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Wrong way:&lt;/em&gt;&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: consolas"&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: consolas"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; CreateElement(&lt;span style="color: #2b91af"&gt;Store&lt;/span&gt; store)&lt;/p&gt; &lt;p style="margin: 0px"&gt;{&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;using&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Transaction&lt;/span&gt; tx = store.TransactionManager.BeginTransaction(&lt;span style="color: #a31515"&gt;"Add ExampleElement"&lt;/span&gt;))&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ExampleModel&lt;/span&gt; root = store.ElementDirectory.FindElements&amp;lt;&lt;span style="color: #2b91af"&gt;ExampleModel&lt;/span&gt;&amp;gt;().First() &lt;span style="color: blue"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ExampleModel&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ExampleElement&lt;/span&gt; element =&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;this&lt;/span&gt;.Store.ElementFactory.CreateElement(&lt;span style="color: #2b91af"&gt;ExampleElement&lt;/span&gt;.DomainClassId) &lt;span style="color: blue"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ExampleElement&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root.Elements.Add(element);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tx.Commit();&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;}&lt;/p&gt;&lt;/div&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;em&gt;Right way:&lt;/em&gt;&lt;/h3&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: consolas"&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: consolas"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; CreateElement(&lt;span style="color: #2b91af"&gt;Store&lt;/span&gt; store)&lt;/p&gt; &lt;p style="margin: 0px"&gt;{&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;using&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Transaction&lt;/span&gt; tx = store.TransactionManager.BeginTransaction(&lt;span style="color: #a31515"&gt;"Add ExampleElement"&lt;/span&gt;))&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ExampleModel&lt;/span&gt; root = store.ElementDirectory.FindElements&amp;lt;&lt;span style="color: #2b91af"&gt;ExampleModel&lt;/span&gt;&amp;gt;().First() &lt;span style="color: blue"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ExampleModel&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ExampleElement&lt;/span&gt; element =&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; store.ElementFactory.CreateElement(&lt;span style="color: #2b91af"&gt;ExampleElement&lt;/span&gt;.DomainClassId) &lt;span style="color: blue"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ExampleElement&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ElementOperations&lt;/span&gt; elementOperations =&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ElementOperations&lt;/span&gt;(store &lt;span style="color: blue"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IServiceProvider&lt;/span&gt;, store);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ElementGroup&lt;/span&gt; elementGroup = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ElementGroup&lt;/span&gt;(store);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elementGroup.Add(element);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elementGroup.MarkAsRoot(element);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elementOperations.MergeElementGroup(root, elementGroup);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tx.Commit();&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;}&lt;/p&gt;&lt;/div&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&lt;em&gt;Assemblies needed&lt;/em&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Microsoft.VisualStudio.Shell.Interop  &lt;li&gt;Microsoft.VisualStudio.Modeling.Sdk.Shell  &lt;li&gt;Microsoft.VisualStudio.Modeling.Sdk.Diagrams &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Stay tuned,&lt;/p&gt; &lt;p&gt;Pablo&lt;/p&gt;&lt;img src="http://www.clariusconsulting.net/aggbug.aspx?PostID=98108" width="1" height="1"&gt;</content><slash:comments>1</slash:comments><wfw:commentRss>http://www.clariusconsulting.net/blogs/pga/commentrss.aspx?PostID=98108</wfw:commentRss></entry><entry><title>Finally some public information about VS 2010 and Net Fx 4.0</title><link rel="alternate" type="text/html" href="http://www.clariusconsulting.net/blogs/pga/archive/2008/09/30/98107.aspx" /><id>e6de741d-39cb-46fc-b8ae-6ce6880bcef9:98107</id><created>2008-09-30T08:10:26Z</created><content type="text/html" mode="escaped">&lt;p&gt;Here is the link with a high overview of the new features:&lt;/p&gt; &lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/vstudio/products/cc948977.aspx" href="http://msdn.microsoft.com/en-us/vstudio/products/cc948977.aspx"&gt;http://msdn.microsoft.com/en-us/vstudio/products/cc948977.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Also take a look at &lt;a href="http://channel9.msdn.com/posts/VisualStudio/Visual-Studio-Team-System-2010-Week-on-Channel-9/"&gt;channel9 all week&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Pablo&lt;/p&gt;&lt;img src="http://www.clariusconsulting.net/aggbug.aspx?PostID=98107" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.clariusconsulting.net/blogs/pga/commentrss.aspx?PostID=98107</wfw:commentRss></entry><entry><title>VSXDevCon08 pictures</title><link rel="alternate" type="text/html" href="http://www.clariusconsulting.net/blogs/pga/archive/2008/09/22/VSXDevCon08pictures.aspx" /><id>e6de741d-39cb-46fc-b8ae-6ce6880bcef9:91532</id><created>2008-09-22T14:33:31Z</created><content type="text/html" mode="escaped">
		&lt;p&gt;Here are some pictures for the VSX Developer Conference with me in the front. :)&lt;/p&gt;
		&lt;p&gt;The videos are going to posted at MSDN soon...&lt;/p&gt;
		&lt;p&gt; &lt;img src="/ImageGallery/pga/con08_1.png" alt="con08_1.png" /&gt;&lt;br /&gt;&lt;/p&gt;
		&lt;p&gt;
				&lt;img src="/ImageGallery/pga/con08_2.png" alt="con08_2.png" /&gt;
				&lt;br /&gt;
		&lt;/p&gt;
		&lt;p&gt;Pablo&lt;/p&gt;&lt;img src="http://www.clariusconsulting.net/aggbug.aspx?PostID=91532" width="1" height="1"&gt;</content><slash:comments>3</slash:comments><wfw:commentRss>http://www.clariusconsulting.net/blogs/pga/commentrss.aspx?PostID=91532</wfw:commentRss></entry><entry><title>T4 Editor RTM is OUT!!!</title><link rel="alternate" type="text/html" href="http://www.clariusconsulting.net/blogs/pga/archive/2008/09/15/86467.aspx" /><id>e6de741d-39cb-46fc-b8ae-6ce6880bcef9:86467</id><created>2008-09-15T11:39:36Z</created><content type="text/html" mode="escaped">&lt;p&gt;As Victor announced &lt;a href="http://www.clariusconsulting.net/blogs/vga/archive/2008/09/15/86195.aspx"&gt;it&lt;/a&gt;, after great efforts the T4 Editor v1.0 was finally out.&lt;/p&gt; &lt;p&gt;I don't need to tell you how much the user experience can drastically change when you use it, having syntax coloring, intellisense, code generation preview, support for multiple T4 hosts, etc etc.&lt;/p&gt; &lt;p&gt;Check it out &lt;a href="http://www.t4editor.net/"&gt;here&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Pablo&lt;/p&gt;&lt;img src="http://www.clariusconsulting.net/aggbug.aspx?PostID=86467" width="1" height="1"&gt;</content><slash:comments>1</slash:comments><wfw:commentRss>http://www.clariusconsulting.net/blogs/pga/commentrss.aspx?PostID=86467</wfw:commentRss></entry><entry><title>How to open files from the Output window</title><link rel="alternate" type="text/html" href="http://www.clariusconsulting.net/blogs/pga/archive/2008/09/03/HowtoopenfilesfromtheOutputwindow.aspx" /><id>e6de741d-39cb-46fc-b8ae-6ce6880bcef9:81847</id><created>2008-09-03T06:57:55Z</created><content type="text/html" mode="escaped">
		&lt;p&gt;My seventeenth &lt;strong&gt;How do I&lt;/strong&gt; is up.&lt;/p&gt;
		&lt;p&gt;
				&lt;em&gt;Scenario&lt;/em&gt;
		&lt;/p&gt;
		&lt;p&gt;The Visual Studio output window supports file opening. When we write to the output window a string with a specific mask, we can use the navigation buttons or double click the line and Visual Studio will open the file and position the caret in the corresponding line an column.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.clariusconsulting.net/images/blogs/pga/HowtonavigatefilesfromtheOutputwindow_C9DB/out.png"&gt;
						&lt;img src="/ImageGallery/pga/out.png" alt="out.png" /&gt;
						&lt;br /&gt;
				&lt;/a&gt;  &lt;/p&gt;
		&lt;p&gt;
				&lt;em&gt;Interfaces and classes needed&lt;/em&gt;
		&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;
						&lt;strong&gt;
								&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivsoutputwindowpane%28VS.80%29.aspx"&gt;IVsOutputWindowPane&lt;/a&gt;
						&lt;/strong&gt;
				&lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;
				&lt;em&gt;
				&lt;/em&gt; &lt;/p&gt;
		&lt;p&gt;
				&lt;em&gt;Code snippet&lt;/em&gt;
		&lt;/p&gt;
		&lt;div style="background: white none repeat scroll 0% 0%; font-size: 10pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: courier new;"&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;IServiceProvider&lt;/span&gt; serviceProvider = &lt;span style="color: blue;"&gt;this&lt;/span&gt;;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;IVsOutputWindow&lt;/span&gt; outputwindow = &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        serviceProvider.GetService(&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;SVsOutputWindow&lt;/span&gt;)) &lt;span style="color: blue;"&gt;as&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;IVsOutputWindow&lt;/span&gt;;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;Guid&lt;/span&gt; generalGuidPane = &lt;span style="color: rgb(43, 145, 175);"&gt;VSConstants&lt;/span&gt;.GUID_OutWindowGeneralPane;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;IVsOutputWindowPane&lt;/span&gt; generalPane;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;ErrorHandler&lt;/span&gt;.ThrowOnFailure(outputwindow.GetPane(&lt;span style="color: blue;"&gt;ref&lt;/span&gt; generalGuidPane, &lt;span style="color: blue;"&gt;out&lt;/span&gt; generalPane));&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: green;"&gt;//MASK: &lt;/span&gt;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: green;"&gt;//FilePath(#Line,#Column) : MessageToDisplay&lt;/span&gt;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: green;"&gt;//Ex: &lt;/span&gt;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: green;"&gt;//D:\Work\Temp\VSPackage4\VSPackage4\VSPackage4Package.cs(83,79) : Foo&lt;/span&gt;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    generalPane.OutputStringThreadSafe(&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        &lt;span style="color: blue;"&gt;string&lt;/span&gt;.Concat(&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;            &lt;span style="color: rgb(163, 21, 21);"&gt;@"D:\Work\Temp\VSPackage4\VSPackage4\VSPackage4Package.cs(83,79) : Foo"&lt;/span&gt;, &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;            &lt;span style="color: rgb(43, 145, 175);"&gt;Environment&lt;/span&gt;.NewLine));&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;ErrorHandler&lt;/span&gt;.ThrowOnFailure(generalPane.FlushToTaskList());&lt;/p&gt;
		&lt;/div&gt;
		&lt;p&gt;
				&lt;em&gt;
				&lt;/em&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;em&gt;Assemblies needed&lt;/em&gt;
		&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;Microsoft.VisualStudio.Shell.Interop, Version=7.1.40304.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a &lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt; &lt;/p&gt;
		&lt;p&gt;Stay tuned,&lt;/p&gt;
		&lt;p&gt;Pablo&lt;/p&gt;&lt;img src="http://www.clariusconsulting.net/aggbug.aspx?PostID=81847" width="1" height="1"&gt;</content><slash:comments>1</slash:comments><wfw:commentRss>http://www.clariusconsulting.net/blogs/pga/commentrss.aspx?PostID=81847</wfw:commentRss></entry><entry><title>How do I obtain an IVsHierarchy itemid</title><link rel="alternate" type="text/html" href="http://www.clariusconsulting.net/blogs/pga/archive/2008/09/02/HowdoIobtainanIVsHierarchyitemid.aspx" /><id>e6de741d-39cb-46fc-b8ae-6ce6880bcef9:81780</id><created>2008-09-02T06:54:37Z</created><content type="text/html" mode="escaped">&lt;p&gt;My fifteenth &lt;strong&gt;How do I&lt;/strong&gt; is up.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Scenario&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Several methods in the VS Interop world receive a IVsHierarchy item id parameter as an argument. &lt;/p&gt; &lt;p&gt;The problem is that there is no easy way to obtain the item id for a IVsHierarchy. Ideally we would like to do IVsHierarchy.GetProperty(&lt;span style="color: #2b91af"&gt;VSConstants&lt;/span&gt;.VSITEMID_ROOT, (&lt;span style="color: blue"&gt;int&lt;/span&gt;)&lt;strong&gt;&lt;span style="color: #2b91af"&gt;__VSHPROPID&lt;/span&gt;.VSHPROPID_ItemId&lt;/strong&gt;, &lt;span style="color: blue"&gt;out&lt;/span&gt; itemId) but that property doesn't exist.&lt;/p&gt; &lt;p&gt;The focus of this &lt;strong&gt;How do I&lt;/strong&gt; tackles this scenario.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Interfaces and classes needed&lt;/em&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivsbrowseobject(VS.80).aspx"&gt;IVsBrowseObject&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Code snippet&lt;/em&gt;&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;uint&lt;/span&gt; GetItemId(&lt;span style="color: #2b91af"&gt;IVsHierarchy&lt;/span&gt; hierarchy)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;object&lt;/span&gt; extObject;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;uint&lt;/span&gt; itemId = 0;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;IVsHierarchy&lt;/span&gt; tempHierarchy;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hierarchy.GetProperty(&lt;span style="color: #2b91af"&gt;VSConstants&lt;/span&gt;.VSITEMID_ROOT, (&lt;span style="color: blue"&gt;int&lt;/span&gt;)&lt;span style="color: #2b91af"&gt;__VSHPROPID&lt;/span&gt;.VSHPROPID_BrowseObject, &lt;span style="color: blue"&gt;out&lt;/span&gt; extObject);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;IVsBrowseObject&lt;/span&gt; browseObject = extObject &lt;span style="color: blue"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IVsBrowseObject&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;if&lt;/span&gt;(browseObject != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; browseObject.GetProjectItem(&lt;span style="color: blue"&gt;out&lt;/span&gt; tempHierarchy, &lt;span style="color: blue"&gt;out&lt;/span&gt; itemId);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; itemId;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&lt;em&gt;Assemblies needed&lt;/em&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Microsoft.VisualStudio.Shell.Interop.8.0, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Stay tuned,&lt;/p&gt; &lt;p&gt;Pablo&lt;/p&gt;&lt;img src="http://www.clariusconsulting.net/aggbug.aspx?PostID=81780" width="1" height="1"&gt;</content><slash:comments>356</slash:comments><wfw:commentRss>http://www.clariusconsulting.net/blogs/pga/commentrss.aspx?PostID=81780</wfw:commentRss></entry><entry><title>How do I deal with the Visual Studio status bar</title><link rel="alternate" type="text/html" href="http://www.clariusconsulting.net/blogs/pga/archive/2008/09/02/HowdoIdealwiththeVisualStudiostatusbar.aspx" /><id>e6de741d-39cb-46fc-b8ae-6ce6880bcef9:81782</id><created>2008-09-02T07:51:18Z</created><content type="text/html" mode="escaped">
		&lt;p&gt;My sixteenth &lt;strong&gt;How do I&lt;/strong&gt; is up.&lt;/p&gt;
		&lt;p&gt;
				&lt;em&gt;Scenario&lt;/em&gt;
		&lt;/p&gt;
		&lt;p&gt;It is always a best practice to inform the user what is going on when we need to perform a long running operation. For that purpose Visual Studio has the status bar:&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.clariusconsulting.net/images/blogs/pga/f2e7517568b7_A3E8/st.png"&gt;
						&lt;img src="/ImageGallery/pga/st.png" alt="st.png" /&gt;
						&lt;br /&gt;
				&lt;/a&gt;
		&lt;/p&gt;
		&lt;p&gt;There are several options when dealing with the Visual Studio status bar, we can write messages, display progress and animations, etc. The focus of this &lt;strong&gt;How do I&lt;/strong&gt; tackles these scenarios.&lt;/p&gt;
		&lt;p&gt; &lt;/p&gt;
		&lt;p&gt;
				&lt;em&gt;Interfaces and classes needed&lt;/em&gt;
		&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;
						&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivsstatusbar.aspx"&gt;IVsStatusBar&lt;/a&gt;
				&lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;
				&lt;em&gt;
				&lt;/em&gt; &lt;/p&gt;
		&lt;p&gt;
				&lt;em&gt;Code snippet&lt;/em&gt;
		&lt;/p&gt;
		&lt;div style="background: white none repeat scroll 0% 0%; font-size: 10pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: courier new;"&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;int&lt;/span&gt; frozen;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;IVsStatusbar&lt;/span&gt; statusBar = serviceProvider.GetService(&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;SVsStatusbar&lt;/span&gt;)) &lt;span style="color: blue;"&gt;as&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;IVsStatusbar&lt;/span&gt;;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    statusBar.IsFrozen(&lt;span style="color: blue;"&gt;out&lt;/span&gt; frozen);&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: green;"&gt;//Write to the status bar&lt;/span&gt;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;if&lt;/span&gt;(!&lt;span style="color: rgb(43, 145, 175);"&gt;Convert&lt;/span&gt;.ToBoolean(frozen))&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    {&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        statusBar.SetText(&lt;span style="color: rgb(163, 21, 21);"&gt;"The Message"&lt;/span&gt;);&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        &lt;span style="color: green;"&gt;//Do process&lt;/span&gt;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;Thread&lt;/span&gt;.Sleep(5000);&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        statusBar.Clear();&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    }&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: green;"&gt;//Write and display animatio in the status bar&lt;/span&gt;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;if&lt;/span&gt;(!&lt;span style="color: rgb(43, 145, 175);"&gt;Convert&lt;/span&gt;.ToBoolean(frozen))&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    {&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        &lt;span style="color: green;"&gt;//The built icons that can be used are defined in Microsoft.VisualStudio.Shell.Interop.Constants.SBAI_*&lt;/span&gt;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;
						&lt;span style="color: green;"&gt;
						&lt;/span&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        &lt;span style="color: blue;"&gt;object&lt;/span&gt; icon = (&lt;span style="color: blue;"&gt;short&lt;/span&gt;)Microsoft.VisualStudio.Shell.Interop.&lt;span style="color: rgb(43, 145, 175);"&gt;Constants&lt;/span&gt;.SBAI_General;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        statusBar.Animation(1, &lt;span style="color: blue;"&gt;ref&lt;/span&gt; icon);&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        statusBar.SetText(&lt;span style="color: rgb(163, 21, 21);"&gt;"The Message"&lt;/span&gt;);&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        &lt;span style="color: green;"&gt;//Do process&lt;/span&gt;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;Thread&lt;/span&gt;.Sleep(5000);&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        statusBar.Animation(0, &lt;span style="color: blue;"&gt;ref&lt;/span&gt; icon);&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        statusBar.Clear();&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    }&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: green;"&gt;//Display progress in the status bar&lt;/span&gt;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;if&lt;/span&gt;(!&lt;span style="color: rgb(43, 145, 175);"&gt;Convert&lt;/span&gt;.ToBoolean(frozen))&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    {&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        &lt;span style="color: blue;"&gt;uint&lt;/span&gt; userId = (&lt;span style="color: blue;"&gt;uint&lt;/span&gt;)Microsoft.VisualStudio.Shell.Interop.&lt;span style="color: rgb(43, 145, 175);"&gt;Constants&lt;/span&gt;.VSCOOKIE_NIL;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        &lt;span style="color: blue;"&gt;for&lt;/span&gt;(&lt;span style="color: blue;"&gt;int&lt;/span&gt; i = 1; i &amp;lt;= 10; i++)&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        {&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;            statusBar.Progress(&lt;span style="color: blue;"&gt;ref&lt;/span&gt; userId, 1, &lt;span style="color: rgb(163, 21, 21);"&gt;"The Message"&lt;/span&gt;, (&lt;span style="color: blue;"&gt;uint&lt;/span&gt;)i * 10, (&lt;span style="color: blue;"&gt;uint&lt;/span&gt;)100);&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;            &lt;span style="color: green;"&gt;//Do process&lt;/span&gt;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;            &lt;span style="color: rgb(43, 145, 175);"&gt;Thread&lt;/span&gt;.Sleep(1000);&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        }&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;        statusBar.Progress(&lt;span style="color: blue;"&gt;ref&lt;/span&gt; userId, 0, &lt;span style="color: blue;"&gt;string&lt;/span&gt;.Empty, 0, 0);&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    }&lt;/p&gt;
		&lt;/div&gt;
		&lt;p&gt;
				&lt;em&gt;
				&lt;/em&gt; &lt;/p&gt;
		&lt;p&gt;
				&lt;em&gt;Assemblies needed&lt;/em&gt;
		&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;Microsoft.VisualStudio.Shell.Interop, Version=7.1.40304.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt; &lt;/p&gt;
		&lt;p&gt;Stay tuned,&lt;/p&gt;
		&lt;p&gt;Pablo&lt;/p&gt;&lt;img src="http://www.clariusconsulting.net/aggbug.aspx?PostID=81782" width="1" height="1"&gt;</content><slash:comments>2</slash:comments><wfw:commentRss>http://www.clariusconsulting.net/blogs/pga/commentrss.aspx?PostID=81782</wfw:commentRss></entry><entry><title>How do I cancel a model element property value editing operation</title><link rel="alternate" type="text/html" href="http://www.clariusconsulting.net/blogs/pga/archive/2008/08/28/HowdoIcancelamodelelementpropertyvalueeditingoperation.aspx" /><id>e6de741d-39cb-46fc-b8ae-6ce6880bcef9:81631</id><created>2008-08-28T17:49:55Z</created><content type="text/html" mode="escaped">&lt;p&gt;My fourteenth &lt;strong&gt;How do I&lt;/strong&gt; is up.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Scenario&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Let's say that we want to cancel an editing operation in a model element property if the new value meets a certain condition. The focus of this &lt;strong&gt;How do I&lt;/strong&gt; tackles this scenario.&lt;/p&gt; &lt;p&gt;In the next sample we have a MyLanguage dsl and a MyElement domain class and we want to cancel the editing operation over the "Foo" property if the new value is empty.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Interfaces and classes needed&lt;/em&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;span style="color: #2b91af"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.modeling.changerule.aspx"&gt;ChangeRule&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Code snippet&lt;/em&gt;&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MyLanguageDomainModel&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;[] GetCustomDomainModelTypes()&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;var&lt;/span&gt; types = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;&amp;gt;();&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; types.AddRange(&lt;span style="color: blue"&gt;base&lt;/span&gt;.GetCustomDomainModelTypes());&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; types.Add(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;MyElementChangeRule&lt;/span&gt;));&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; types.ToArray();&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af"&gt;RuleOn&lt;/span&gt;(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;MyElement&lt;/span&gt;), FireTime = &lt;span style="color: #2b91af"&gt;TimeToFire&lt;/span&gt;.TopLevelCommit)]&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;&lt;span style="color: #2b91af"&gt;MyElement&lt;/span&gt;ChangeRule&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;ChangeRule&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; ElementPropertyChanged(&lt;span style="color: #2b91af"&gt;ElementPropertyChangedEventArgs&lt;/span&gt; e)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;if&lt;/span&gt;(!e.ModelElement.Store.TransactionManager.CurrentTransaction.IsSerializing)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;if&lt;/span&gt;(e.DomainProperty.Name.Equals(&lt;span style="color: #a31515"&gt;"Foo"&lt;/span&gt;))&lt;/p&gt; &lt;p style="margin: 0px"&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;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;if&lt;/span&gt;(&lt;span style="color: blue"&gt;string&lt;/span&gt;.IsNullOrEmpty(e.NewValue.ToString()))&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green"&gt;//The name cannot be empty, therefore we cancel the change&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;PackageUtility&lt;/span&gt;.ShowError(e.ModelElement.Store, &lt;span style="color: #a31515"&gt;"Value cannot be empty"&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.ModelElement.Store.TransactionManager.CurrentTransaction.Rollback();&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&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;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&lt;em&gt;Assemblies needed&lt;/em&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Microsoft.VisualStudio.Modeling.Sdk, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Stay tuned,&lt;/p&gt; &lt;p&gt;Pablo&lt;/p&gt;&lt;img src="http://www.clariusconsulting.net/aggbug.aspx?PostID=81631" width="1" height="1"&gt;</content><slash:comments>1</slash:comments><wfw:commentRss>http://www.clariusconsulting.net/blogs/pga/commentrss.aspx?PostID=81631</wfw:commentRss></entry><entry><title>How do I get a Project from a IVsHierarchy and viceversa</title><link rel="alternate" type="text/html" href="http://www.clariusconsulting.net/blogs/pga/archive/2008/08/27/HowdoIgetaProjectfromaIVsHierarchyandviceversa.aspx" /><id>e6de741d-39cb-46fc-b8ae-6ce6880bcef9:81473</id><created>2008-08-27T08:57:35Z</created><content type="text/html" mode="escaped">&lt;p&gt;My thirteenth &lt;strong&gt;How do I&lt;/strong&gt; is up.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Scenario&lt;/em&gt; &lt;/p&gt; &lt;p&gt;This is a common thing when working with the EnvDTE and Shell Interop worlds. Sometimes we want to access properties that doesn't exist in one of the worlds (like the guid property of my previous &lt;a href="http://www.clariusconsulting.net/blogs/pga/archive/2008/08/27/HowdoIobtainaprojectGUID.aspx"&gt;How do I&lt;/a&gt;) and viceversa. The focus of this &lt;strong&gt;How do I&lt;/strong&gt; tackles this scenario.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Interfaces and classes needed&lt;/em&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;span style="color: rgb(43,145,175)"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivshierarchy%28VS.80%29.aspx"&gt;IVsHierarchy&lt;/a&gt; &lt;/span&gt; &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/envdte.project%28VS.80%29.aspx"&gt;Project&lt;/a&gt;  &lt;li&gt;&lt;span style="color: rgb(43,145,175)"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.__vshpropid%28VS.80%29.aspx"&gt;__VSHPROPID&lt;/a&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Code snippet&lt;/em&gt; &lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Project&lt;/span&gt; GetProject(&lt;span style="color: #2b91af"&gt;IVsHierarchy&lt;/span&gt; hierarchy)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;object&lt;/span&gt; project;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ErrorHandler&lt;/span&gt;.ThrowOnFailure&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (hierarchy.GetProperty(&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;VSConstants&lt;/span&gt;.VSITEMID_ROOT, &lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;span style="color: blue"&gt;int&lt;/span&gt;)&lt;span style="color: #2b91af"&gt;__VSHPROPID&lt;/span&gt;.VSHPROPID_ExtObject, &lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;out&lt;/span&gt; project));&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; (project &lt;span style="color: blue"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Project&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IVsHierarchy&lt;/span&gt; GetHierarchy(&lt;span style="color: #2b91af"&gt;IServiceProvider&lt;/span&gt; serviceProvider, &lt;span style="color: #2b91af"&gt;Project&lt;/span&gt; project)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;var&lt;/span&gt; solution = &lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serviceProvider.GetService(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;SVsSolution&lt;/span&gt;)) &lt;span style="color: blue"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IVsSolution&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;IVsHierarchy&lt;/span&gt; hierarchy;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; solution.GetProjectOfUniqueName(project.FullName, &lt;span style="color: blue"&gt;out&lt;/span&gt; hierarchy);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; hierarchy;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/div&gt; &lt;p style="margin: 0px"&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&lt;em&gt;Assemblies needed&lt;/em&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Microsoft.VisualStudio.Shell.Interop, Version=7.1.40304.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a  &lt;li&gt;EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Stay tuned,&lt;/p&gt; &lt;p&gt;Pablo&lt;/p&gt;&lt;img src="http://www.clariusconsulting.net/aggbug.aspx?PostID=81473" width="1" height="1"&gt;</content><slash:comments>1</slash:comments><wfw:commentRss>http://www.clariusconsulting.net/blogs/pga/commentrss.aspx?PostID=81473</wfw:commentRss></entry><entry><title>How do I obtain a project GUID</title><link rel="alternate" type="text/html" href="http://www.clariusconsulting.net/blogs/pga/archive/2008/08/27/HowdoIobtainaprojectGUID.aspx" /><id>e6de741d-39cb-46fc-b8ae-6ce6880bcef9:81469</id><created>2008-08-27T06:07:49Z</created><content type="text/html" mode="escaped">&lt;p&gt;My twelfth &lt;strong&gt;How do I&lt;/strong&gt; is up.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Scenario&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Let's say that we have a DTE project instance and we want to get the project GUID. If we look carefully the EnvDTE.Project interface doesn't have a guid property. To obtain it we need to first obtain the corresponding IVsHierarchy for the project and then query the guid property. The focus of this &lt;strong&gt;How do I&lt;/strong&gt; tackles this scenario.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Interfaces and classes needed&lt;/em&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;span style="color: #2b91af"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivshierarchy(VS.80).aspx"&gt;IVsHierarchy&lt;/a&gt;&lt;/span&gt;  &lt;li&gt;&lt;span style="color: #2b91af"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.__vshpropid(VS.80).aspx"&gt;__VSHPROPID&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Code snippet&lt;/em&gt;&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Guid&lt;/span&gt; GetProjectGuid(&lt;span style="color: #2b91af"&gt;IServiceProvider&lt;/span&gt; serviceProvider, &lt;span style="color: #2b91af"&gt;Project&lt;/span&gt; project)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;var&lt;/span&gt; solution = serviceProvider.GetService(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;SVsSolution&lt;/span&gt;)) &lt;span style="color: blue"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IVsSolution&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;IVsHierarchy&lt;/span&gt; hierarchy;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; solution.GetProjectOfUniqueName(project.FullName, &lt;span style="color: blue"&gt;out&lt;/span&gt; hierarchy);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;if&lt;/span&gt;(hierarchy != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Guid&lt;/span&gt; projectGuid;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ErrorHandler&lt;/span&gt;.ThrowOnFailure(&lt;/p&gt; &lt;p style="margin: 0px"&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; hierarchy.GetGuidProperty(&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;VSConstants&lt;/span&gt;.VSITEMID_ROOT, &lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;span style="color: blue"&gt;int&lt;/span&gt;)&lt;span style="color: #2b91af"&gt;__VSHPROPID&lt;/span&gt;.VSHPROPID_ProjectIDGuid, &lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;out&lt;/span&gt; projectGuid));&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;if&lt;/span&gt;(projectGuid != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; projectGuid;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Guid&lt;/span&gt;.Empty;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&lt;em&gt;Assemblies needed&lt;/em&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Microsoft.VisualStudio.Shell.Interop, Version=7.1.40304.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Stay tuned,&lt;/p&gt; &lt;p&gt;Pablo&lt;/p&gt;&lt;img src="http://www.clariusconsulting.net/aggbug.aspx?PostID=81469" width="1" height="1"&gt;</content><slash:comments>3</slash:comments><wfw:commentRss>http://www.clariusconsulting.net/blogs/pga/commentrss.aspx?PostID=81469</wfw:commentRss></entry><entry><title>How do I get the Visual Studio command line switches</title><link rel="alternate" type="text/html" href="http://www.clariusconsulting.net/blogs/pga/archive/2008/08/27/HowdoIgettheVisualStudiocommandlineswitches.aspx" /><id>e6de741d-39cb-46fc-b8ae-6ce6880bcef9:81468</id><created>2008-08-27T05:20:35Z</created><content type="text/html" mode="escaped">&lt;p&gt;My eleventh &lt;strong&gt;How do I&lt;/strong&gt; is up.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Scenario&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Let's say that we want to obtain the command line switches for the running Visual Studio instance. In this specific sample we want to know if Visual Studio is running in RANU mode. The focus of this &lt;strong&gt;How do I&lt;/strong&gt; tackles this scenario.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Interfaces and classes needed&lt;/em&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;span style="color: #2b91af"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivsappcommandline.aspx"&gt;IVsAppCommandLine&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;em&gt;Code snippet&lt;/em&gt;&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: blue"&gt;bool&lt;/span&gt; IsInRANUMode(&lt;span style="color: #2b91af"&gt;IServiceProvider&lt;/span&gt; serviceProvider)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;IVsAppCommandLine&lt;/span&gt; cmdLineService = serviceProvider.GetService(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;SVsAppCommandLine&lt;/span&gt;)) &lt;span style="color: blue"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IVsAppCommandLine&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;int&lt;/span&gt; present;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;string&lt;/span&gt; value;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ErrorHandler&lt;/span&gt;.ThrowOnFailure(cmdLineService.GetOption(&lt;span style="color: #a31515"&gt;"ranu"&lt;/span&gt;, &lt;span style="color: blue"&gt;out&lt;/span&gt; present, &lt;span style="color: blue"&gt;out&lt;/span&gt; value));&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToBoolean(present);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Assemblies needed&lt;/em&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Microsoft.VisualStudio.Shell.Interop, Version=7.1.40304.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Stay tuned,&lt;/p&gt; &lt;p&gt;Pablo&lt;/p&gt;&lt;img src="http://www.clariusconsulting.net/aggbug.aspx?PostID=81468" width="1" height="1"&gt;</content><slash:comments>1</slash:comments><wfw:commentRss>http://www.clariusconsulting.net/blogs/pga/commentrss.aspx?PostID=81468</wfw:commentRss></entry><entry><title>How do I know if the solution is still building</title><link rel="alternate" type="text/html" href="http://www.clariusconsulting.net/blogs/pga/archive/2008/08/25/HowdoIknowifthesolutionisstillbuilding.aspx" /><id>e6de741d-39cb-46fc-b8ae-6ce6880bcef9:81433</id><created>2008-08-25T06:40:41Z</created><content type="text/html" mode="escaped">&lt;p&gt;My tenth &lt;strong&gt;How do I&lt;/strong&gt; is up.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Scenario&lt;/em&gt;&lt;/p&gt; &lt;p&gt;The scenario is really simple, we want to know if the solution is still building. The focus of this &lt;strong&gt;How do I&lt;/strong&gt; shows how to do it.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Interfaces and classes needed&lt;/em&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivssolutionbuildmanager.aspx"&gt;IVsSolutionBuildManager&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Code snippet&lt;/em&gt;&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; IsSolutionBuilding(&lt;span style="color: #2b91af"&gt;IServiceProvider&lt;/span&gt; serviceProvider)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;IVsSolutionBuildManager&lt;/span&gt; buildManagerService = &lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serviceProvider.GetService(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;SVsSolutionBuildManager&lt;/span&gt;)) &lt;span style="color: blue"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IVsSolutionBuildManager&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;int&lt;/span&gt; isBuildManagerBusy = 0;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ErrorHandler&lt;/span&gt;.ThrowOnFailure(buildManagerService.QueryBuildManagerBusy(&lt;span style="color: blue"&gt;out&lt;/span&gt; isBuildManagerBusy));&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; (isBuildManagerBusy == 1);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; &lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&lt;em&gt;Assemblies needed&lt;/em&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Microsoft.VisualStudio.Shell.Interop, Version=7.1.40304.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Stay tuned,&lt;/p&gt; &lt;p&gt;Pablo&lt;/p&gt;&lt;img src="http://www.clariusconsulting.net/aggbug.aspx?PostID=81433" width="1" height="1"&gt;</content><slash:comments>2</slash:comments><wfw:commentRss>http://www.clariusconsulting.net/blogs/pga/commentrss.aspx?PostID=81433</wfw:commentRss></entry><entry><title>How do I know when a model element is being added by a user demand</title><link rel="alternate" type="text/html" href="http://www.clariusconsulting.net/blogs/pga/archive/2008/08/25/HowdoIknowwhenanmodelelementisbeingaddedbyauserdemand.aspx" /><id>e6de741d-39cb-46fc-b8ae-6ce6880bcef9:81432</id><created>2008-08-25T06:32:07Z</created><content type="text/html" mode="escaped">
		&lt;p&gt;My ninth &lt;strong&gt;How do I&lt;/strong&gt; is up.&lt;/p&gt;
		&lt;p&gt;
				&lt;em&gt;Scenario&lt;/em&gt;
		&lt;/p&gt;
		&lt;p&gt;Let's say that we have some "Add rules" in our model to perform some custom operation every time a model element is added. One common problem is that we want to perform this operation only when the user creates a model element on demand, this can be translated to the user drags a shape from the toolbox, uses the model explorer, etc. But the add rule is also fired when the store is being deserialized and somehow we need to distinguish both cases. The focus of this &lt;strong&gt;How do I&lt;/strong&gt; tackles this scenario.&lt;/p&gt;
		&lt;p&gt; &lt;/p&gt;
		&lt;p&gt;
				&lt;em&gt;Interfaces and classes needed&lt;/em&gt;
		&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;
						&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.modeling.transaction.aspx"&gt;Transaction&lt;/a&gt; &lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;
				&lt;em&gt;
				&lt;/em&gt; &lt;/p&gt;
		&lt;p&gt;
				&lt;em&gt;Code snippet&lt;/em&gt;
		&lt;/p&gt;
		&lt;div style="background: white none repeat scroll 0% 0%; font-size: 10pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: courier new;"&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;var&lt;/span&gt; transaction = e.ModelElement.Store.TransactionManager.CurrentTransaction;&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;if&lt;/span&gt;(transaction != &lt;span style="color: blue;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; !transaction.IsSerializing)&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt;    {&lt;/p&gt;
				&lt;blockquote&gt;
						&lt;div style="background: white none repeat scroll 0% 0%; font-size: 10pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: courier new;"&gt;
								&lt;p style="margin: 0px;"&gt;
										&lt;span style="color: green;"&gt;//TODO: perform operation  &lt;/span&gt;
								&lt;/p&gt;
						&lt;/div&gt;
				&lt;/blockquote&gt;
				&lt;p style="margin: 0px;"&gt;    }&lt;/p&gt;
				&lt;p style="margin: 0px;"&gt; &lt;/p&gt;
		&lt;/div&gt;
		&lt;p&gt;
				&lt;em&gt;Assemblies needed&lt;/em&gt;
		&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;Microsoft.VisualStudio.Modeling.Sdk&lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt; &lt;/p&gt;
		&lt;p&gt;Stay tuned,&lt;/p&gt;
		&lt;p&gt;Pablo&lt;/p&gt;&lt;img src="http://www.clariusconsulting.net/aggbug.aspx?PostID=81432" width="1" height="1"&gt;</content><slash:comments>1</slash:comments><wfw:commentRss>http://www.clariusconsulting.net/blogs/pga/commentrss.aspx?PostID=81432</wfw:commentRss></entry></feed>