<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.pluralsight.com/community/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>Jeffrey Schlimmer's Blog</title><link>http://www.pluralsight.com/community/blogs/jeffsch/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Standardizing the Devices Profile for Web Services</title><link>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/16/standardizing-the-devices-profile-for-web-services.aspx</link><pubDate>Wed, 17 Sep 2008 01:57:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53222</guid><dc:creator>jeffrey-schlimmer</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/jeffsch/rsscomments.aspx?PostID=53222</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/16/standardizing-the-devices-profile-for-web-services.aspx#comments</comments><description>&lt;p&gt;Today the WS-DD Oasis technical committee convened to start standardizing the Devices Profile for Web Services, WS-Discovery, and SOAP over UDP. It was like coming home to rub shoulders with the committee members at a reception this eventing. This community has made terrific, consistent progress building implementations -- and products, and I&amp;#39;m sure they&amp;#39;re going to produce a great set of specifications.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ws-dd"&gt;http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ws-dd&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53222" width="1" height="1"&gt;</description></item><item><title>VSX: How I Extent VS</title><link>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/16/vsx-how-i-extent-vs.aspx</link><pubDate>Wed, 17 Sep 2008 00:03:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53204</guid><dc:creator>jeffrey-schlimmer</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/jeffsch/rsscomments.aspx?PostID=53204</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/16/vsx-how-i-extent-vs.aspx#comments</comments><description>&lt;p&gt;The last session of the conference was a happy menagerie of speed talks.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aggiorno: Improving the web one tag at a time. Cleans up HTML source (and will show you what it did). &lt;a href="http://www.aggiorno.com/"&gt;http://www.aggiorno.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Atalasoft: Imaging (pictures, scanners) tools for .NET. Populate an assortment of VS integration points with their libraries. &lt;a href="http://www.atalasoft.com/"&gt;http://www.atalasoft.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clarius Consulting: T4 (Microsoft Text Templating Transformation Toolkit) editor. Language services in VS for the text templating language. &lt;a href="http://www.clariusconsulting.net/"&gt;http://www.clariusconsulting.net/&lt;/a&gt;, &lt;a href="http://www.t4editor.net/"&gt;http://www.t4editor.net/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ComponentOne: Long-time Micorsoft component/control provider. Their latest are components for Silverlight 2.0. (Exciting demo but not particularly related to VS.) &lt;a href="http://www.componentone.com/"&gt;http://www.componentone.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;dynaTrace: Performance monitoring across app lifecycle, tiers, technologies. Integrated with VSTS&amp;#39;s load testing, collects and summarizes performance data, and can &amp;quot;pinpoint problematic code.&amp;quot; &lt;a href="http://www.dynatrace.com/en/"&gt;http://www.dynatrace.com/en/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SharpLudus: Combining game development and sofware factories. Put another way, they&amp;#39;re building game DSLs that generate XNA. &lt;a href="http://www.cin.ufpe.br/~sharpludus/"&gt;http://www.cin.ufpe.br/~sharpludus/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;looksoftware: Modernizing front- and back-end systems. &lt;a href="http://www.looksoftware.com/"&gt;http://www.looksoftware.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PreEmptive Solutions: dotfuscator (in the VS box). Think of dotfuscator as a post-build instrumentation platform (Runtime Intelligence Service) that can, e.g., make your app send feature-level tracking to the cloud, self-administrator shelf life, &amp;amp;c. &lt;a href="http://www.preemptive.com/"&gt;http://www.preemptive.com/&lt;/a&gt;, &lt;a href="http://www.preemptive.com/images/documentation/runtime%20intelligence.pdf"&gt;http://www.preemptive.com/images/documentation/runtime%20intelligence.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rally Software: Help agile teams succeed. Embedded panels within VS IDE and integration with Team Foundation Server. &lt;a href="http://www.rallydev.com/"&gt;http://www.rallydev.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Shunra Software: WAN emulation for development and testing. Run tests under emulation in VS. &lt;a href="http://www.shunra.com/"&gt;http://www.shunra.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Studio works software: VS plug in for designs and design catalogs. Whatever you drop onto a surface (e.g., WinForms), you can capture (drag) in folders, edit as a design, and reuse. &lt;a href="http://www.studioworkssoft.com/"&gt;http://www.studioworkssoft.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Typemock: Next generation of unit testing for .NET. They sang a song. &lt;a href="http://www.typemock.com/"&gt;http://www.typemock.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;It&amp;#39;s time to pray to the QA&lt;br /&gt;That all my bugs will never see the light of day&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;It&amp;#39;s hard to test&lt;br /&gt;My code at best&lt;br /&gt;Because it uses&lt;br /&gt;Sharepoint, ASP, and REST&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I just want to know my code works&lt;br /&gt;I can&amp;#39;t test it -- I don&amp;#39;t know where to start&lt;br /&gt;I just want to know my code works&lt;br /&gt;And I mean it from the bottom of my heart&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;And threading goo&lt;br /&gt;It&amp;#39;s hard to do&lt;br /&gt;I keep on getting deadlocks&lt;br /&gt;Race conditions too&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I wish there was&lt;br /&gt;Something out there&lt;br /&gt;That told what I did and how to solve it where&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I just want to know my threads work&lt;br /&gt;It is far to hard than it should be&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I just want to know my threads work&lt;br /&gt;And my QA isn&amp;#39;t willing to talk to me&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53204" width="1" height="1"&gt;</description></item><item><title>VSX: External prototype of a new Managed Package Framework</title><link>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/16/vsx-external-prototype-of-a-new-managed-package-framework.aspx</link><pubDate>Tue, 16 Sep 2008 22:43:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53194</guid><dc:creator>jeffrey-schlimmer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/jeffsch/rsscomments.aspx?PostID=53194</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/16/vsx-external-prototype-of-a-new-managed-package-framework.aspx#comments</comments><description>&lt;p&gt;Bravo to the VSX team for inviting Istv&amp;aacute;n Nov&amp;aacute;k who articulately speaks to the importance of the developer experience and the limitations of the current Managed Package Framework.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Small coverage of Core IDE services&lt;/li&gt;
&lt;li&gt;Requires a lot of plumbing code (2,500 lines for custom editor)&lt;/li&gt;
&lt;li&gt;Does not use modern .NET features like generics or LINQ&lt;/li&gt;
&lt;li&gt;Tasks in common with other parts of the .NET FX are not consistent with it (e.g., WinForms)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;He&amp;#39;s started a remarkably-complete OM called &amp;quot;VSXtra&amp;quot; that wraps MPF and other parts of the Core IDE. &lt;a href="http://www.codeplex.com/VSXtra"&gt;http://www.codeplex.com/VSXtra&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The OM is _so_ much better. It terrifically cuts down on the busywork/busycode of defining an extension (and the horribly frustrating process of finding/fixing many of the magic bits). I can pick nits with it, but that might distract from how important and valuable it would be to have a modern framework like this.&lt;/p&gt;
&lt;p&gt;One of his goals is to influence the Microsoft team to build a modern MPF. I really, really hope he&amp;#39;s successful.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3172"&gt;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3172&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53194" width="1" height="1"&gt;</description></item><item><title>VSX: How to Extend</title><link>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/16/vsx-how-to-extend.aspx</link><pubDate>Tue, 16 Sep 2008 21:41:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53192</guid><dc:creator>jeffrey-schlimmer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/jeffsch/rsscomments.aspx?PostID=53192</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/16/vsx-how-to-extend.aspx#comments</comments><description>&lt;p&gt;Fasten your seat belts. Pablo Galiano demoed creating a VS command, creating a tool window (using solution and project hierarchy information), and creating a tool window (using the file code model / CodeClass). The demos were very code focused, albeit using helper frameworks, some skeleton UI code, and some demo-specific snippets.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[I wonder how to publish a file code model for a new language.]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Pablo made extensive use of &amp;quot;VSSDK Assist&amp;quot;, which adds a menu that is a portal to number of wizards to create and update various files: &lt;a href="http://www.codeplex.com/vssdkassist"&gt;http://www.codeplex.com/vssdkassist&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Other resources he recommends are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LinqToCodeModel is a sample library that provides Linq facilities over FileCodeModel object graphs: &lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel"&gt;http://code.msdn.microsoft.com/LinqToCodeModel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The VSCT (Visual Studio Command Table) PowerToy is a read-only viewer that you can use to explore the commands associated with a VSPackage, and with Visual Studio itself. You can quickly search for any existing commands in the Visual Studio IDE. By browsing through the command groups, GUIDs and IDs, priorities, and other properties of existing commands, you can more easily place and integrate the commands of your own VSPackage. &lt;a href="http://code.msdn.microsoft.com/VSCTPowerToy"&gt;http://code.msdn.microsoft.com/VSCTPowerToy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3174"&gt;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3174&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53192" width="1" height="1"&gt;</description></item><item><title>VSX: Debugger Extensibility</title><link>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/16/vsx-debugger-extensibility.aspx</link><pubDate>Tue, 16 Sep 2008 20:25:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53180</guid><dc:creator>jeffrey-schlimmer</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/jeffsch/rsscomments.aspx?PostID=53180</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/16/vsx-debugger-extensibility.aspx#comments</comments><description>&lt;p&gt;In the category of make-your-daily-life-better, Laura Petersen showed two wonderful extensions to the VS debugger.&lt;/p&gt;
&lt;p&gt;First, the DTE object that deserves much attention. DTE.Debugger gives you programmatic (macro (VB)) access to everything you can do with the Visual Studio IDE debugger. Besides the properties on DTE.Debugger, look for properties on DTE.Properties(&amp;quot;Debugger&amp;quot;, &amp;quot;General&amp;quot;).&lt;/p&gt;
&lt;p&gt;Second, if you&amp;#39;re frustrated by the noisy views the debugger shows for your types, and are ready to move beyond overriding ToString (and hoping the debugger picks it up), you can define a custom debugger view by adding any / all of the following attributes from System.Diagnostics to your class:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DebuggerDisplayAttribute: summary view using a simple template language&lt;/li&gt;
&lt;li&gt;DebuggerBrowsableAttribute: view of fields&lt;/li&gt;
&lt;li&gt;DebuggerTypeProxyAttribute: a proxy to display instead&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Third (and yes, I can count), if you&amp;#39;d like to create a visualizer for a complex (or just large) value, you can create a custom visualizer (which I tried but, as advertised, it&amp;#39;s a bit more complicated):&lt;/p&gt;
&lt;p&gt;Create a visualizer: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create new class library &lt;/li&gt;
&lt;li&gt;Add a reference to Microsoft.VisualStudio.Debugger.Visualizers.dll [In my install, this is in &amp;quot;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies\&amp;quot;]&lt;/li&gt;
&lt;li&gt;Add new DebuggerVisualizer item to the project. &lt;/li&gt;
&lt;li&gt;Add code inside the Show method.&lt;/li&gt;
&lt;li&gt;Build and copy the visualizer dll to your VS documents Visualizers folder.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To use the visualizer:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Add references to both the Microsoft.VisualStudio.Debugger.Visualizers.dll and the visualizer dll.&lt;/li&gt;
&lt;li&gt;Make the to-be-visualized type Serializable (if not already)&lt;/li&gt;
&lt;li&gt;Add the DebuggerVisualizerAttribute&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Blogs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jim Griesmer: &lt;a href="http://blogs.msdn.com/jimgries/"&gt;http://blogs.msdn.com/jimgries/&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Jackson Davis: &lt;a href="http://blogs.msdn.com/jacdavis/"&gt;http://blogs.msdn.com/jacdavis/&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Gregg Miskelly: &lt;a href="http://blogs.msdn.com/greggm/"&gt;http://blogs.msdn.com/greggm/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Forum: &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/vsdebug/threads/"&gt;http://social.msdn.microsoft.com/Forums/en-US/vsdebug/threads/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3175"&gt;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3175&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53180" width="1" height="1"&gt;</description></item><item><title>VSX: Adding Value with Blueprints</title><link>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/16/vsx-adding-value-with-blueprints.aspx</link><pubDate>Tue, 16 Sep 2008 16:32:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53164</guid><dc:creator>jeffrey-schlimmer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/jeffsch/rsscomments.aspx?PostID=53164</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/16/vsx-adding-value-with-blueprints.aspx#comments</comments><description>&lt;p&gt;The special topics track started on Day 2 with too-modest-to-introduce-himself and Michael Lehman who dove into the deep end with &amp;quot;software factories&amp;quot; and that domain&amp;#39;s cute vocabulary (e.g., &amp;quot;unfolding a blueprint&amp;quot;).&lt;/p&gt;
&lt;p&gt;As near as I can tell, a Blueprint, once defined, is like a hands on lab, providing starter code (&amp;quot;templates&amp;quot;) and an automated checklist (&amp;quot;guidance&amp;quot;), but not wizards or validators.&lt;/p&gt;
&lt;p&gt;Positioned as moving beyond DSL tools, Blueprints are the next logical version of Guidance Automation Toolkit (GAT) / Guidance Automation Extensions (GAX) [http://msdn.microsoft.com/en-us/library/aa905334.aspx], and builds on the experiences in Glidepath [http://projectglidepath.net/blog/default.aspx] and Software plus Services (S+S) Blueprints [http://channel9.msdn.com/wiki/softwareplusservicesblueprints/].&lt;/p&gt;
&lt;p&gt;You can see the previous version of Blueprints in action as a developer uses a blueprint to build an Outlook add in: &lt;a href="http://channel9.msdn.com/posts/MichaelLehman/Microsoft-Software--Services-Blueprints-Walkthrough/"&gt;http://channel9.msdn.com/posts/MichaelLehman/Microsoft-Software--Services-Blueprints-Walkthrough/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3176"&gt;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3176&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53164" width="1" height="1"&gt;</description></item><item><title>VSX: Visual Studio Extensibility Architecture Part 2</title><link>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/16/vsx-visual-studio-extensibility-architecture-part-2.aspx</link><pubDate>Tue, 16 Sep 2008 11:48:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53043</guid><dc:creator>jeffrey-schlimmer</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/jeffsch/rsscomments.aspx?PostID=53043</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/16/vsx-visual-studio-extensibility-architecture-part-2.aspx#comments</comments><description>&lt;p&gt;Doug continued, bravely, into the late afternoon with details of the Visual Studio extensibility architecture.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;It&amp;#39;s not that I don&amp;#39;t love COM, but what I want most after this deep dive is the moral equivalent for the managed developer.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Meme: There&amp;#39;s a scenario for every extensibility point here.&lt;/p&gt;
&lt;p&gt;Editors&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you need to implement your own type of view, use the TextBuffer as your document data object, and then you can be open as the same time as the code editor. (If you don&amp;#39;t want to be compatible with the code editor, don&amp;#39;t implement the interfaces that it will query interface for.)&lt;/li&gt;
&lt;li&gt;A language service is a package that proffers a service that has a VSLanguageInfo and a colorizer interface. Again, to enable demand loading, you register for a file extension. VSLanguageInfo enables this broad range of features: 
&lt;ul&gt;
&lt;li&gt;Text colorization [see colorizer]&lt;/li&gt;
&lt;li&gt;Statement completion&lt;/li&gt;
&lt;li&gt;Method tips&lt;/li&gt;
&lt;li&gt;Special and red &amp;quot;squiggly&amp;quot; markers [marker client]&lt;/li&gt;
&lt;li&gt;Custom commands&lt;/li&gt;
&lt;li&gt;Context menus&lt;/li&gt;
&lt;li&gt;Hidden text (including concealed and expand/collapse)&lt;/li&gt;
&lt;li&gt;Code window dropdown bar [code window manager]&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Whether you are a full language service or not, one of the most general extension points is a TextView filter, where you can insert a handler into a chain to handle each key. The debugger does this to enable Run to cursor.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Project&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provides the context for operating on a set of items as a unit.&lt;/li&gt;
&lt;li&gt;Solutions are thin containers around projects, but can express project build dependencies. A *.sln is shared across team members; a *.suo is per user and stores breakpoints.&lt;/li&gt;
&lt;li&gt;Coordinate&amp;nbsp;RAD experience: opening, editing, and saving of files; source control (are dependent files checked out as a unit) [IVsSccProject2]; build (is there one, and what does it do) [IVsBuildableProjectCfg]; deployment (say to embedded device, SQL instance); debugging [IVsDebuggableProjectCfg].&lt;/li&gt;
&lt;li&gt;Other project examples: set up and deployment projects, and database project.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hierarchies&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Projects are a kind of hierarchy (IVsHierarchy)&lt;/li&gt;
&lt;li&gt;Hierarchies generally manage sets of related items; documents are associated with a hierarchy-item ID pair.&lt;/li&gt;
&lt;li&gt;Hierarchies have many (optional) properties that are used for display and navigation.&lt;/li&gt;
&lt;li&gt;Other solution-related hierarchies include class view, resource view, performance explorer, test explorer, &amp;amp;c.&lt;/li&gt;
&lt;li&gt;Non-solution-related hierarchies include server explorer (i.e., SQL), team explorer (VSTS).&lt;/li&gt;
&lt;li&gt;Projects can be nested, e.g., VS 2003 had an Enterprise Template Project (ETP) which aggregated other projects and coordinated an enterprise solution with UI, data, and server tiers with projects within each. Solution folders have grown up to support this scenario, and they themselves are projects that can nest other projects.&lt;/li&gt;
&lt;li&gt;Project subtypes are a technique (using COM aggregation) to create a subtype of another project, e.g., WPF Project Flavor VB Basic Templates, or device VB templates (which provide deployment behavior where a normal VB project would have none).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;Selection&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Of project, and of item within project.&lt;/li&gt;
&lt;li&gt;Each window manages its own selection context, including active hierarchy-item ID pair.&lt;/li&gt;
&lt;li&gt;Selection controls what is shown in Properties window &amp;amp;c. You can access the active selection using IVsMonitorSelection.&lt;/li&gt;
&lt;li&gt;Interacts with delayed loading because a selection can turn on a mode.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3140"&gt;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3140&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53043" width="1" height="1"&gt;</description></item><item><title>VSX: Visual Studio Extensibility Architecture Part 1</title><link>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/15/vsx-visual-studio-extensibility-architecture-part-1-and-2.aspx</link><pubDate>Tue, 16 Sep 2008 02:26:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53038</guid><dc:creator>jeffrey-schlimmer</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/jeffsch/rsscomments.aspx?PostID=53038</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/15/vsx-visual-studio-extensibility-architecture-part-1-and-2.aspx#comments</comments><description>&lt;p&gt;Doug Hodges, one of two original architects who built the first, extensible IDE shell from MSFT&amp;nbsp;(Visual Studio 6.0), took up the challenge of two, back-to-back afternoon sessions and launched into &amp;quot;fundamental&amp;quot; (lower-level) architectural concepts. He shared his considerable context, motivating the current design and reflecting a long history of careful attention to detail.&lt;/p&gt;
&lt;p&gt;Themes: delay load assemblies, mature COM model, thoughtful versioning story, support many styles of Windows programming including managed interop assemblies and helper libraries.&lt;/p&gt;
&lt;p&gt;VsPackage&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The initial starting point for a logical set of features in the IDE. Co-created, given a pointer&amp;nbsp;to the IDE for services (&amp;quot;sited&amp;quot;), and used as a factory for its features.&lt;/li&gt;
&lt;li&gt;Loading is delayed until functionality is needed, so package must expose metadata (using registry) so IDE knows when to load it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(COM) Services&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Site call includes an IServiceProvider, and it has&amp;nbsp;a QueryService interface (similar to QueryInterface), and requests to this interface may be routed to another object which actually provides the service.&lt;/li&gt;
&lt;li&gt;The Managed Package Framework (MPF) are helpers over blessed interop assemblies to the native IDE.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note: The language services and shell parts of the MPF are shipped as DLLs, but the project base classes are provided only in source code form, and you compile them into your package.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Sidebar about versioning: Versions ship using an interop assembly and a helper library to facilitate development. W&lt;/em&gt;&lt;em&gt;hen they have to break backwards compatibility, they ship exactly the previous interop assemby plus a new interop assembly that contains only new changes (&amp;quot;delta assembly&amp;quot;); both interop assemblies can be loaded in the same application domain; a new helper library bridges across both interop assemblies. With a few exceptions (e.g., WinForms), these guarantees allow customers to write a single binary that works in two successive versions, either targetting the lowest-common denominator by using the previous helper library, or &amp;quot;light up&amp;quot; on the newest version by using the newer helper library.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Tool Windows/Document Windows&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The window architecture supports a broad range of existing UI (which makes adding WPF support less surprising).&lt;/li&gt;
&lt;li&gt;Tool windows are typically single instance and can float, doc, tab, or be an MDI child.&lt;/li&gt;
&lt;li&gt;Document windows (editor windows) are multi instanced, MDI child, always owned by a project, and associated with a document.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CommandBars/Command Routing&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Data and interfaces are similar to Office (branched a while back); using metadata from packages, the IDE merges commands into a complete UI -- without loading the packages. See *.vsct (XML) for definitions of menus, commands, toolbars, and context menus.&lt;/li&gt;
&lt;li&gt;Routing determines which commands are visible / enabled in a given context: add-ins first, active window, active project and its parents, and then finally, the global environment and packages.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Standard Editors/Custom Editors&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Editor is a document window.&lt;/li&gt;
&lt;li&gt;The factory is not the package itself, but another &amp;quot;editor factory&amp;quot;. In the simple one view case, you pass an editor document to the service that shows the editor view. In a more general multi-view data vs. view case, there are &amp;quot;document data&amp;quot; and &amp;quot;document view&amp;quot; objects to manage.&lt;/li&gt;
&lt;li&gt;Register for your format and use priority to indicate how well you can handle the format. (Highest priority of 50 is default; lowest priority will be lowest on the list.)&lt;/li&gt;
&lt;li&gt;There&amp;#39;s a range of integration between the editor and the IDE. At least, the editor can be an external EXE, and VS will launch it. At the most integrated, be a hierarchy in a tool window, like the VC Resource Editor. There are examples of nearly each of the 7 ratchets of integration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Running Document Table&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;May not need to think about this, but its here to handle the fact that the user might want to edit a document in an incompatible editor, and while the IDE can shut down the views, it needs to talk to the editors, so they can shut down and clean up the document object.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3136"&gt;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3136&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53038" width="1" height="1"&gt;</description></item><item><title>VSX: Advanced Topics in Domain-Specific Development</title><link>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/15/vsx-advanced-topics-in-domain-specific-development.aspx</link><pubDate>Tue, 16 Sep 2008 00:53:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53053</guid><dc:creator>jeffrey-schlimmer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/jeffsch/rsscomments.aspx?PostID=53053</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/15/vsx-advanced-topics-in-domain-specific-development.aspx#comments</comments><description>&lt;p&gt;I didn&amp;#39;t catch this talk (because I was enjoying Doug&amp;#39;s history), but you might want to review it if:&lt;/p&gt;
&lt;p&gt;(a) You&amp;#39;re interested in the &amp;quot;T4&amp;quot; templates used to generate code at the back end of the DSL story.&lt;/p&gt;
&lt;p&gt;(b) You wonder about getting back from target code to the DSL, so called &amp;quot;bidirectional DSL&amp;quot;.&lt;/p&gt;
&lt;p&gt;No magic bullet offered for the latter, but some source that up-levels the low-level abstraction provided by the code editor events.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3142"&gt;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3142&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53053" width="1" height="1"&gt;</description></item><item><title>VSX: Introduction to the Visual Studio 2008 Shell</title><link>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/15/vsx-introduction-to-the-visual-studio-2008-shell.aspx</link><pubDate>Mon, 15 Sep 2008 23:58:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53021</guid><dc:creator>jeffrey-schlimmer</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/jeffsch/rsscomments.aspx?PostID=53021</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/15/vsx-introduction-to-the-visual-studio-2008-shell.aspx#comments</comments><description>&lt;p class="MsoNormal" style="margin:0in 0in 10pt;"&gt;&lt;span style="font-family:Times New Roman;"&gt;James K. Lau walked through a heroic effort to eviscerate Visual Studio 2008 so you can re-use the shell to build your own IDE. Absolutely amazing.&amp;nbsp;Together with the DSL support, this makes fabuluous strategic sense -- after all, here&amp;#39;s a way to build your own (graphical) language and your own editor for that language.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 10pt;"&gt;If there was one place that could use improvement though, it would be *.pkgdef: Wow. Edit a simple text file to set a sea of registry settings to get the experience you want. Compared to the Properties window used for DSL, this is very primitive. Same for *.vsct which is in XML format.&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 10pt;"&gt;&lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3137"&gt;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3137&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 10pt;"&gt;P.S. At least some folks at Microsoft think of the VS Shell as the same kind of thing as Eclipse RCP.&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 10pt;"&gt;&lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3173"&gt;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3173&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 10pt;"&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53021" width="1" height="1"&gt;</description></item><item><title>VSX: Books</title><link>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/15/vsx-books.aspx</link><pubDate>Mon, 15 Sep 2008 22:19:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53025</guid><dc:creator>jeffrey-schlimmer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/jeffsch/rsscomments.aspx?PostID=53025</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/15/vsx-books.aspx#comments</comments><description>&lt;p&gt;Can&amp;#39;t recommend either yet, but both have been called out at the conference as resources for those who learn best from a book.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;Visual Studio Extensibility&lt;/i&gt;, Keyvan Nayyeri, Wrox Press: &lt;/span&gt;&lt;a href="http://www.wrox.com/WileyCDA/WroxTitle/Professional-Visual-Studio-Extensibility.productCd-0470230843.html"&gt;&lt;span style="font-family:Times New Roman;color:#0000ff;"&gt;http://www.wrox.com/WileyCDA/WroxTitle/Professional-Visual-Studio-Extensibility.productCd-0470230843.html&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Times New Roman;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 10pt;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;Domain-Specific Development with Visual Studio DSL Tools&lt;/i&gt;, Cook, Jones, Kent and Wills: &lt;/span&gt;&lt;a href="http://www.domainspecificdevelopment.com/"&gt;&lt;span style="font-family:Times New Roman;color:#0000ff;"&gt;http://www.domainspecificdevelopment.com&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Times New Roman;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53025" width="1" height="1"&gt;</description></item><item><title>VSX: A Note About the Slides</title><link>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/15/vsx-a-note-about-the-slides.aspx</link><pubDate>Mon, 15 Sep 2008 22:18:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53024</guid><dc:creator>jeffrey-schlimmer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/jeffsch/rsscomments.aspx?PostID=53024</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/15/vsx-a-note-about-the-slides.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;m sorry the link to the slides has a long license agreement. VSX is a new conference. It will get better.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53024" width="1" height="1"&gt;</description></item><item><title>VSX: Visual Studio Add-ins, Templates and Wizards</title><link>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/15/vsx-visual-studio-add-ins-templates-and-wizards.aspx</link><pubDate>Mon, 15 Sep 2008 22:07:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53023</guid><dc:creator>jeffrey-schlimmer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/jeffsch/rsscomments.aspx?PostID=53023</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/15/vsx-visual-studio-add-ins-templates-and-wizards.aspx#comments</comments><description>&lt;p&gt;I didn&amp;#39;t catch this talk by Gabor Ratky. I was little less interested in macros and lighter-weight add-ins, but when I looked at the slides, I realized I made a mistake. At the very least, learning more about the Design Time Extensibility/Development Tools Extensibility (DTE) is going to be extremely helpful when trying to write unit tests for any sort of Visual Studio extension.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3138"&gt;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3138&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53023" width="1" height="1"&gt;</description></item><item><title>VSX: Domain-Specific Development with Visual Studio DSL Tools</title><link>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/15/vsx-domain-specific-development-with-visual-studio-dsl-tools.aspx</link><pubDate>Mon, 15 Sep 2008 21:44:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53020</guid><dc:creator>jeffrey-schlimmer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/jeffsch/rsscomments.aspx?PostID=53020</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/15/vsx-domain-specific-development-with-visual-studio-dsl-tools.aspx#comments</comments><description>&lt;p&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;font-size:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;span style="font-family:Times New Roman;"&gt;After a break for lunch, &lt;/span&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;font-size:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;Jean-Marc Prieur took the stage again, and explained the recent Domain-Specific Language (DSL) support in Visual Studio 2008 SDK.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;font-size:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;font-size:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;First, to show that it is easy, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;font-size:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;font-size:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;he built a simple DSL with a &amp;quot;graphical syntax&amp;quot; (box and arrows) using first a wizard and then VS diagram and property editing. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;font-size:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;font-size:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;This demo was &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;hindered a bit by the example DSL (classes and objects) which supports the recursive power of the tool but invited confusion about which level was being demonstrated at any given point in time.&lt;/p&gt;
&lt;p&gt;Second, to show that it is powerful, he build bits and pieces of a more sophisticated DSL for a drawing program.&lt;/p&gt;
&lt;p&gt;In both cases, the DSL is built using a diagrammatic editor, modifying properties in the Properties window, which is all consistent with progressive elaboration. (A small fly in the ointment, there are two places to look to set properties: Properties window and the DSL Details window.)&lt;/p&gt;
&lt;p&gt;In a wonderful stroke of consistency, the&amp;nbsp;experience to develop the DSL is the same as the experience to use the DSL. (And it sure looks like you use the DSL for DSLs to build your DSL.) The generated code determines the final application experience, and this code is produced using templates (*.tt).&lt;/p&gt;
&lt;p&gt;My strong impression is that&amp;nbsp;there are hundreds of individual extension points, partly because VS has a rich set of UI bits. How many different conventions do these follow? How do you know if you&amp;rsquo;ve plugged in to / overridden enough of them?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3145"&gt;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3145&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53020" width="1" height="1"&gt;</description></item><item><title>VSX: Extend Your Development Experience</title><link>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/15/vsx-extend-your-development-experience.aspx</link><pubDate>Mon, 15 Sep 2008 21:38:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53019</guid><dc:creator>jeffrey-schlimmer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/jeffsch/rsscomments.aspx?PostID=53019</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/jeffsch/archive/2008/09/15/vsx-extend-your-development-experience.aspx#comments</comments><description>&lt;p&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;font-size:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;span style="font-family:Times New Roman;"&gt;Jean-Marc Prieur started off the introductory track with a fairly high-level presentation with two highlights for me:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;font-size:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;First, honestly, there&amp;#39;s a nest of extensibility options in Visual Studio. Check out Slide 11 of the presentation [1]. Seriously, this slide is scary.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;font-size:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;
&lt;p&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;font-size:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;[1] &lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3139"&gt;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vsxconf&amp;amp;DownloadId=3139&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;font-size:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;Jean-Marc ran through an interesting demo&amp;nbsp;using wizard from VS 2008 SDK to create a package and build out code to access the code view of an item in a project. The tool is available in the Visual Studio Gallery [2] and the source is available on Code Plex [3].&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;font-size:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;[2] &lt;a href="http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=bea9ed59-8857-4032-9666-9af1c1a33969"&gt;http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=bea9ed59-8857-4032-9666-9af1c1a33969&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;font-size:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;[3] &lt;a href="http://www.codeplex.com/SourceCodeOutliner"&gt;http://www.codeplex.com/SourceCodeOutliner&lt;/a&gt; &lt;/span&gt;
&lt;p&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;font-size:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53019" width="1" height="1"&gt;</description></item></channel></rss>