<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://community.devexpress.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Mark Miller</title><link>http://community.devexpress.com/blogs/markmiller/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007.1 SP1 (Build: 30415.43)</generator><item><title>Duplicate Detection and Consolidation in CodeRush for Visual Studio</title><link>http://community.devexpress.com/blogs/markmiller/archive/2011/11/29/duplicate-detection-and-consolidation-in-coderush-for-visual-studio.aspx</link><pubDate>Tue, 29 Nov 2011 09:45:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:359570</guid><dc:creator>Mark Miller (DevExpress)</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.devexpress.com/blogs/markmiller/rsscomments.aspx?PostID=359570</wfw:commentRss><comments>http://community.devexpress.com/blogs/markmiller/archive/2011/11/29/duplicate-detection-and-consolidation-in-coderush-for-visual-studio.aspx#comments</comments><description>&lt;p&gt;CodeRush 11.2 introduces a new feature we’re very excited about. It’s called Duplicate Detection and Consolidation (DDC) and it’s revolutionary.&lt;/p&gt;  &lt;h2&gt;Background&lt;/h2&gt;  &lt;p&gt;Duplicate code, sometimes referred to as clones, is a cluster of code blocks that are functionally equivalent (or nearly equivalent) spanning across two or more locations within a solution. Duplicate code is expensive to maintain because:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Multiplied bugs. A bug in one clone means there’s a bug in all the copies. This can lead to a continued, repeated release of previously-fixed bugs as each copy of the bug is individually discovered by a customer and then fixed by the team. &lt;/li&gt;    &lt;li&gt;Flexibility barriers. If the copied code needs to be more flexible, changes need to be made across all the copies or ideally, the copies need to be consolidated first. Unfortunately consolidation is a high-risk, error-prone, time-consuming activity. &lt;/li&gt;    &lt;li&gt;Increased ramp-up time. Copy the code and new developers trying to get up to speed will have twice as much code to read and understand. If discovered, duplicated code tends to be harder to understand than normal code because the reader must not only understand functionality, but also understand the reason behind the duplication. &lt;/li&gt; &lt;/ol&gt;  &lt;h2&gt;Reaching into the Future&lt;/h2&gt;  &lt;p&gt;Because duplicate code is such an expensive problem, for years tools have been developed to detect duplicate code, each achieving various degrees of success. So you might wonder, after so many years of development, what makes CodeRush’s DDC so revolutionary?&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Speed&lt;/strong&gt;. CodeRush has the fastest duplicate code detection available for .NET. It’s &lt;strong&gt;17 times faster &lt;/strong&gt;than the duplicate code detection currently available in the Visual Studio 11 preview. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Integration&lt;/strong&gt;. DD runs in a background thread while you work in Visual Studio. Duplicate code is highlighted on screen so you know exactly what you’re working with before you change the code. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Functional Equivalence&lt;/strong&gt;. The CodeRush duplication detection engine is built to understand functionally equivalent code. In 11.2, we take baby steps in this direction. However, by 12.1 we expect to really be blowing minds in this area, matching structurally distinct yet functionally equivalent blocks of code. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Consolidation&lt;/strong&gt;. CodeRush is the first and only tool on this planet to offer the ability to immediately consolidate duplication into a single block of code, directly from the IDE. Not only is CodeRush first, but Team CodeRush has delivered an impressive solution. &lt;/li&gt; &lt;/ol&gt;  &lt;h2&gt;The Complexity of Consolidation&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;p&gt;To give you an idea of just how impressive duplicate consolidation is, let’s take a look at what needs to happen to consolidate:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;You need to understand not only the similarities, but also the differences among the code blocks. Differences can be parameterized.&lt;/li&gt;    &lt;li&gt;If the duplicate blocks of code are functionally equivalent but structurally distinct, then a decision needs to be made - upon which of the duplicate blocks should we base the consolidation?&lt;/li&gt;    &lt;li&gt;You need to offer a variety of consolidation solutions so the developer can pick the one that fits best. For example, you could consolidate to a new method in a class, create a new ancestor class, or create a new helper class.&lt;/li&gt;    &lt;li&gt;You need to understand and respect project boundaries. In many cases duplication between projects survives beyond initial discovery because consolidating is time consuming and may require the creation of a new project.&amp;nbsp; If a new project is created, the appropriate references need to be added. Regardless of whether we’re creating a new project or moving code from one existing project to another, we need to verify that we can do this without creating any circular references.&lt;/li&gt;    &lt;li&gt;Types need to be correctly resolved. You might have two classes with the same name declared in different namespaces in your solution. The consolidated code must have the correct namespace imports to ensure that all the types are correctly resolved.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;As a result, the steps to consolidate by hand are many, complex, error-prone, and high-risk. Only the best developers are brave enough to venture forth in this domain, and if they do, they are best advised to bring a paired programmer along for the ride.&lt;/p&gt;  &lt;h2&gt;Enter CodeRush 11.2&lt;/h2&gt;  &lt;p&gt;This changes everything. From this day forward, the quality of code is going up. Let’s take a simple example. I have a class named Mortal, which looks like this:&lt;/p&gt; &lt;span style="font-family:Consolas;"&gt;   &lt;/span&gt;&lt;blockquote&gt;          &lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;class&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;Mortal         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;{       &lt;br /&gt;&amp;nbsp; &lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;protected&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;List&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;Mortal&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&amp;gt; friends = &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;List&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;Mortal&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&amp;gt;();         &lt;br /&gt;&lt;/span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; Name { &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;get&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;set&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;; }       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;}&lt;/span&gt;   &lt;p&gt;And a descendant named Human, which has a FindHuman method:&lt;/p&gt; &lt;span style="font-family:Consolas;"&gt;   &lt;/span&gt;&lt;blockquote&gt;          &lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;class&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;Human&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; : &lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;Mortal         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;{       &lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;Mortal&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; FindHuman(&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; name)       &lt;br /&gt;&amp;nbsp; {        &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;Mortal&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; mortal = &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; (&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;Mortal&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; friend &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; friends)       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {        &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; (&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;.Compare(friend.Name, name, &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;) == 0)       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {        &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;Console&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;.WriteLine(&lt;/span&gt;&lt;span style="font-family:Consolas;color:#800000;"&gt;&lt;span style="font-family:Consolas;color:#800000;"&gt;&amp;quot;Found a Human: &amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; + friend.Name);       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mortal = friend;        &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;break&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;;       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }        &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }        &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; mortal;       &lt;br /&gt;&amp;nbsp; }        &lt;br /&gt;}&lt;/span&gt;   &lt;p&gt;So far so good. But now, let’s do something incredibly dangerous. We’re going to make a copy of this Human class and perform a search and replace, “Human” for “Martian”…&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;class&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;Martian&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; : &lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;Mortal         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;{       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&amp;nbsp; public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;Mortal&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; FindMartian(&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; name)       &lt;br /&gt;&amp;nbsp; {        &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Mortal&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; mortal = &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; (&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;Mortal&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; friend &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; friends)       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {        &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; (&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;.Compare(friend.Name, name, &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;) == 0)       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {        &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;.WriteLine(&lt;/span&gt;&lt;span style="font-family:Consolas;color:#800000;"&gt;&lt;span style="font-family:Consolas;color:#800000;"&gt;&amp;quot;Found a Martian: &amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; + friend.Name);       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mortal = friend;        &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;;       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }        &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }        &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; mortal;       &lt;br /&gt;&amp;nbsp; }        &lt;br /&gt;}&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;But let’s continue to change the code. Let’s introduce a few local variables, rename “mortal” to “myFavoriteMartian”, remove the unnecessary curly braces around the if-block, and change case-sensitivity of the String.Compare call so it ignores case (as one might expect with Martian names)…&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;class&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;Martian&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; : &lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;Mortal         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;{       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&amp;nbsp; public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;Mortal&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; FindMartian(&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; name)       &lt;br /&gt;&amp;nbsp; {        &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Mortal&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; myFavoriteMartian = &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;;       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;bool&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; ignoreCase = &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;;         &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; msg = &lt;/span&gt;&lt;span style="font-family:Consolas;color:#800000;"&gt;&lt;span style="font-family:Consolas;color:#800000;"&gt;&amp;quot;Found a Martian: &amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;;         &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;foreach&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; (&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;Mortal&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; friend &lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; friends)       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; (&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;.Compare(friend.Name, name, &lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&lt;span style="font-family:Consolas;"&gt;ignoreCase&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;) == 0)       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {        &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;.WriteLine(&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;&lt;span style="font-family:Consolas;"&gt;msg &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;+ friend.Name);       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myFavoriteMartian = friend;        &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt;;       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }        &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;"&gt; myFavoriteMartian;       &lt;br /&gt;&amp;nbsp; }        &lt;br /&gt;}&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And now we have some code that is functionally equivalent, but structurally distinct. Can CodeRush find this? It can, providing we drop the Analysis Level down to 2, so the detection engine can see this smaller code block (the default level is set to 3, which is a slightly larger block):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/BlockSettings_67B43BB5.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="BlockSettings" border="0" alt="BlockSettings" src="http://community.devexpress.com/blogs/markmiller/BlockSettings_thumb_517E2063.png" width="680" height="481" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; Here’s what the code looks like inside Visual Studio:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/HumansAndMartians_44A3CA45.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="HumansAndMartians" border="0" alt="HumansAndMartians" src="http://community.devexpress.com/blogs/markmiller/HumansAndMartians_thumb_1C911B26.png" width="680" height="280" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;On the left of the gutter in each view, you see a thin purple vertical bar. This means duplicate code exists elsewhere. Also, in the bottom right, the “!!” icon signals CodeRush has detected duplicates inside the solution. If you hover over the icon in the bottom&amp;nbsp;right, a hint appears to explain the status.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="DuplicatesFound" border="0" alt="DuplicatesFound" src="http://community.devexpress.com/blogs/markmiller/DuplicatesFound_5CA8228E.png" width="386" height="157" /&gt;&lt;/p&gt;  &lt;p&gt;You can click the icon to see a summary of all duplicate clusters found inside the new Duplicate Code tool window. In this case, our simple example, only one cluster is found:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/DuplicateCodeWindow_6D5F2F8E.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="DuplicateCodeWindow" border="0" alt="DuplicateCodeWindow" src="http://community.devexpress.com/blogs/markmiller/DuplicateCodeWindow_thumb_1354DFE5.png" width="684" height="203" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;On the left is a list of all clusters found, sorted by redundancy (the total amount of redundant code that could be removed if consolidated). Note that because we are sorting by redundancy, it’s possible for a very small block of code (duplicated many times) to appear &lt;em&gt;above &lt;/em&gt;a very large duplicate block of code (that only appears twice).&lt;/p&gt;  &lt;p&gt;On the right is a preview of the duplicate code. You can double-click any duplicate code preview to be taken directly to that location. When you do this, CodeRush immediately presents the consolidation hint, which looks like this:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="ConsolidationHint" border="0" alt="ConsolidationHint" src="http://community.devexpress.com/blogs/markmiller/ConsolidationHint_53D81A42.png" width="602" height="429" /&gt;&lt;/p&gt;  &lt;p&gt;Notice the mouse is positioned right over the “Next duplicate block” button, in case you want to navigate and compare the blocks. This might be useful when it’s time to consolidate. The block you consolidate from determines the structure of the consolidated block. So let’s consolidate from the FindMartian method. Click the “Next duplicate block” button, then move the mouse over the “to the base class” consolidation option. You’ll see a preview hint that looks like this:&lt;/p&gt;        &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/ConsolidationHint2_12104706.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="ConsolidationHint2" border="0" alt="ConsolidationHint2" src="http://community.devexpress.com/blogs/markmiller/ConsolidationHint2_thumb_231474E9.png" width="680" height="291" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Notice the parameters to FindMartianExtracted – CodeRush takes the code that differs between the blocks and turns them into parameters. Press &lt;strong&gt;Enter&lt;/strong&gt; to apply the consolidation. The target picker will appear letting you select the location of the consolidated method.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/TargetPicker_68B8FF07.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="TargetPicker" border="0" alt="TargetPicker" src="http://community.devexpress.com/blogs/markmiller/TargetPicker_thumb_67746628.png" width="680" height="198" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The target picker shows the block of code that will be inserted. It’s based upon the structure of the method where we initiated the consolidation (FindMartian). Let’s press &lt;strong&gt;Escape &lt;/strong&gt;to cancel and back out of this, and then see what happens when we initiate consolidation from the other duplicate…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/ConsolidateFromHuman_3F61B709.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="ConsolidateFromHuman" border="0" alt="ConsolidateFromHuman" src="http://community.devexpress.com/blogs/markmiller/ConsolidateFromHuman_thumb_6557675F.png" width="680" height="283" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now consolidate to the base class Mortal. We’ll see the target picker. Notice how the FindHumanExtracted consolidated code in the preview below differs from the&amp;nbsp;FindMartianExtracted&amp;nbsp;consolidated code in the preview shown two screen shots above.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/TargetPicker2_4B16FE3B.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="TargetPicker2" border="0" alt="TargetPicker2" src="http://community.devexpress.com/blogs/markmiller/TargetPicker2_thumb_782BEB09.png" width="680" height="201" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;Just use the &lt;strong&gt;up&lt;/strong&gt;/&lt;strong&gt;down &lt;/strong&gt;arrow buttons to select a location and press &lt;strong&gt;Enter &lt;/strong&gt;to accept it. Now we’re left with a small task of coming up with good names for the consolidated method and its parameters.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="RenamingParameters" border="0" alt="RenamingParameters" src="http://community.devexpress.com/blogs/markmiller/RenamingParameters_7CB3097E.png" width="627" height="405" /&gt;&lt;/p&gt;  &lt;p&gt;And the calling code is simplified:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="CallingCodeSimplified" border="0" alt="CallingCodeSimplified" src="http://community.devexpress.com/blogs/markmiller/CallingCodeSimplified_77FE9B1F.png" width="535" height="652" /&gt;&lt;/p&gt;          &lt;p&gt;And that’s it (for a simple consolidation example)! &lt;/p&gt;  &lt;h2&gt;An Even Bigger Example&lt;/h2&gt;  &lt;p&gt;But what happens when the project is much bigger? The good news is, that the detection scales well for large solutions, taking only seconds (at most a few minutes) to scan thousands of files for duplicates at the default settings (Analysis Level set to 3). Let’s take a look at DDC with the source to &lt;a href="http://umbraco.com/" target="_blank"&gt;Umbraco&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Here’s cluster #4 selected. The Lowest and Highest methods inside the ExsltMath class:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/Cluster4Umbraco_703448A7.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="Cluster4Umbraco" border="0" alt="Cluster4Umbraco" src="http://community.devexpress.com/blogs/markmiller/Cluster4Umbraco_thumb_75A2B94B.png" width="680" height="422" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nearly identical blocks of code. However note the real difference is in the operator used to compare &lt;strong&gt;t &lt;/strong&gt;against &lt;strong&gt;min &lt;/strong&gt;(and &lt;strong&gt;max&lt;/strong&gt;). On the left you have “t &amp;lt; min”, and on the right you have “t &amp;gt; max”. Can CodeRush consolidate this duplicate? It can. Here’s the preview hint:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/PreviewHintUmbraco_33BBD3FD.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="PreviewHintUmbraco" border="0" alt="PreviewHintUmbraco" src="http://community.devexpress.com/blogs/markmiller/PreviewHintUmbraco_thumb_6B8E1820.png" width="684" height="256" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And after consolidation (and renaming the method, the “min” local, and the “func” parameter), I get this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/AfterConsolidation_49C23F8F.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="AfterConsolidation" border="0" alt="AfterConsolidation" src="http://community.devexpress.com/blogs/markmiller/AfterConsolidation_thumb_6898B36D.png" width="684" height="648" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And now the quality of the code is much higher than it was before.&lt;/p&gt;  &lt;p&gt;Remember, CodeRush has the &lt;strong&gt;fastest duplicate code detection available for .NET.&lt;/strong&gt; It works in the background and shows when you’re working inside a method that is cloned. Consolidation is based on the structure of the method you start from. While CodeRush can consolidate many kinds of duplicate blocks, not all duplicate blocks can be consolidated automatically (trust me, this is an incredibly challenging problem to solve). But we’re working on making the consolidation engine even smarter and even more extensive as we approach the 12.1 release (and we expect to blow your mind again with that one).&lt;/p&gt;  &lt;p&gt;Do me a favor, kids: Tell every developer you know about CodeRush’s Duplicate Detection and Consolidation. DDC is truly revolutionary; help us spread the word.&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=359570" width="1" height="1"&gt;</description></item><item><title>Advanced CodeRush Plug-ins: Converting an Object Initializer into a Constructor</title><link>http://community.devexpress.com/blogs/markmiller/archive/2011/06/22/advanced-coderush-plug-ins-converting-an-object-initializer-into-a-constructor.aspx</link><pubDate>Wed, 22 Jun 2011 16:16:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:347833</guid><dc:creator>Mark Miller (DevExpress)</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.devexpress.com/blogs/markmiller/rsscomments.aspx?PostID=347833</wfw:commentRss><comments>http://community.devexpress.com/blogs/markmiller/archive/2011/06/22/advanced-coderush-plug-ins-converting-an-object-initializer-into-a-constructor.aspx#comments</comments><description>&lt;p&gt;Today Rory Becker and I presented an Advanced CodeRush Plug-ins session, showing how to create CodeProviders and RefactoringProviders. These providers show up on the CodeRush/Refactor menu, like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/RefactoringMenu_26AFD837.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="RefactoringMenu" border="0" alt="RefactoringMenu" src="http://community.devexpress.com/blogs/markmiller/RefactoringMenu_thumb_37B4061A.png" width="646" height="294" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The session included several moments where we tasted sweet success, and at least one tough coding segment where we were pushing through some challenging code.&lt;/p&gt;  &lt;p&gt;The new feature converts code like this:&lt;/p&gt; &lt;span style="font:18px Consolas;"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#2b91af;"&gt;&amp;nbsp; Box&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family:Consolas;font-size:18px;"&gt;box&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="font:18px Consolas;"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#0000ff;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Box&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font:18px Consolas;"&gt;&lt;span style="font:18px Consolas;"&gt;&lt;span style="font:18px Consolas;"&gt;) { Height = 33, Width = 44, Depth = 22 };&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;into this:&lt;/p&gt; &lt;span style="color:#2b91af;"&gt;&lt;span style="color:#2b91af;"&gt;&lt;span style="color:#2b91af;"&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-size:18px;font-family:Consolas;color:#2b91af;"&gt;&amp;nbsp; Box&amp;nbsp;&lt;/span&gt;&lt;span style="font:18px Consolas;"&gt;&lt;span style="color:#000000;"&gt;box =&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family:Consolas;font-size:18px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#0000ff;"&gt;new&amp;nbsp;&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Box&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font:18px Consolas;"&gt;&lt;span style="font:18px Consolas;"&gt;&lt;span style="color:#000000;"&gt;(33, 44, 22);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;and creates a constructor if needed.&lt;/p&gt;  &lt;p&gt;At the end of the two-hour session, we were left with a refactoring that worked, but a CodeProvider that needed more effort. The CodeProvider was challenging because it needed to modify code in two places (it is adding a constructor and replacing the object initializer with a call to new constructor), potentially in two files.&lt;/p&gt;  &lt;p&gt;Here’s an overview of the points we learned in the session:&lt;/p&gt;&lt;p&gt;1. The &lt;a href="http://www.devexpress.com/Support/Center/kb/p/K18031.aspx" target="_blank"&gt;Expressions Lab&lt;/a&gt;&amp;nbsp;can reveal many of the hidden details behind the source code you want to analyze or generate.&lt;/p&gt;&lt;p&gt;2.&amp;nbsp;The &lt;strong&gt;ObjectCreationExpression &lt;/strong&gt;class represents a call to a constructor.&lt;/p&gt;&lt;p&gt;3. &lt;strong&gt;ObjectCreationExpression &lt;/strong&gt;elements have three interesting properties:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;     &lt;li&gt;&lt;strong&gt;Arguments &lt;/strong&gt;– the parameters to the constructor call, if any&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;ObjectType &lt;/strong&gt;– a reference to the type being constructed&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;ObjectInitializer &lt;/strong&gt;– an ObjectInitializerExpression (if the constructor call includes an initializer).&lt;/li&gt;&lt;/ul&gt;4. &lt;strong&gt;ObjectInitializerExpression &lt;/strong&gt;has one interesting property:&lt;br /&gt;&lt;ul&gt;    &lt;/ul&gt;&lt;ul&gt;     &lt;li&gt;&lt;strong&gt;Initializers &lt;/strong&gt;– a collection of MemberInitializerExpressions&lt;/li&gt;&lt;/ul&gt;5. &lt;strong&gt;MemberInitializerExpression &lt;/strong&gt;has two interesting properties:&lt;br /&gt;&lt;ul&gt;     &lt;li&gt;&lt;strong&gt;Name &lt;/strong&gt;– the property name being assigned.&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;Value &lt;/strong&gt;– the value assigned to the property in the initializer expression.&lt;/li&gt;   &lt;/ul&gt;6. &lt;strong&gt;MemberInitializerExpression &lt;/strong&gt;also has an interesting method, &lt;strong&gt;Resolve&lt;/strong&gt;, which allows us to determine the type of the initializer argument. &lt;p&gt;&lt;/p&gt;&lt;p&gt;7. We can use the &lt;strong&gt;FileChange &lt;/strong&gt;object to queue up changes to multiple files.   &lt;/p&gt;&lt;p&gt;At the end of the webinar, we encountered an issue where the CodeProvider wouldn’t generate any code. The problem was due to this line of code which set the source file &lt;strong&gt;Path &lt;/strong&gt;property of a &lt;strong&gt;FileChange &lt;/strong&gt;instance to the folder holding the text document (but not the actual file name):   &lt;br /&gt;    &lt;br /&gt;&lt;span style="font:18px Consolas;"&gt;&lt;span style="font:18px Consolas;"&gt;&amp;nbsp; newConstructor.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size:18px;font-family:Consolas;"&gt;Path =&amp;nbsp;&lt;span style="color:#2b91af;"&gt;&lt;span style="color:#2b91af;"&gt;&lt;span style="color:#2b91af;"&gt;CodeRush&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;.Documents.ActiveTextDocument&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font:18px Consolas;"&gt;&lt;span style="font:18px Consolas;"&gt;.Path;&lt;/span&gt;&lt;/span&gt;    &lt;br /&gt;    &lt;br /&gt;it should have been this:    &lt;br /&gt;    &lt;br /&gt;&lt;span style="font:18px Consolas;"&gt;&lt;span style="font:18px Consolas;"&gt;&amp;nbsp; newConstructor.Path = &lt;span style="color:#2b91af;"&gt;&lt;span style="color:#2b91af;"&gt;&lt;span style="color:#2b91af;"&gt;CodeRush&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font:18px Consolas;"&gt;&lt;span style="font:18px Consolas;"&gt;&lt;span style="color:#000000;"&gt;.Documents.ActiveTextDocument.FileNode.Name&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span style="font:18px Consolas;"&gt;&lt;span style="font:18px Consolas;"&gt;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;Correcting the two places where we set FileChange’s Path property enabled the plug-in to generate code correctly. We’ll record a part 2 to this webinar where we’ll see this fix and wrap up all remaining issues:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Fix the FileChange code generation.&lt;/li&gt;    &lt;li&gt;Add code that transfers parameters to the properties.&lt;/li&gt;    &lt;li&gt;Declare parameters in the developer’s preferred style.&lt;/li&gt;    &lt;li&gt;Test, and handle any new issues found.&lt;/li&gt; &lt;/ol&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=347833" width="1" height="1"&gt;</description></item><item><title>New CodeRush Feature: Quick Pair (Parens, Brackets, Quotes, etc.) for Visual Studio</title><link>http://community.devexpress.com/blogs/markmiller/archive/2011/06/01/new-coderush-feature-quick-pair-parens-brackets-quotes-etc-for-visual-studio.aspx</link><pubDate>Wed, 01 Jun 2011 21:31:50 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:346176</guid><dc:creator>Mark Miller (DevExpress)</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.devexpress.com/blogs/markmiller/rsscomments.aspx?PostID=346176</wfw:commentRss><comments>http://community.devexpress.com/blogs/markmiller/archive/2011/06/01/new-coderush-feature-quick-pair-parens-brackets-quotes-etc-for-visual-studio.aspx#comments</comments><description>&lt;p&gt;Today was the first &lt;strong&gt;CodeRush Feature Wednesday&lt;/strong&gt; webinar presented by &lt;a href="http://www.devexpress.com/rory" target="_blank"&gt;Rory Becker&lt;/a&gt; and myself. And for our first feature we decided to implement something I wanted – a better way to enter paired delimiters in code. When entering paired delimiters, there seem to be a number of common scenarios:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Enter the pair and move on (for example, parens in a C# method call that takes no arguments) &lt;/li&gt;    &lt;li&gt;Enter the pair and place the caret between the pair (but then you have the challenge of moving outside the pair) &lt;/li&gt;    &lt;li&gt;Surround a selection with the pair &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To implement this feature, in the webinar we created a new Action called QuickPair which accepts leading and trailing delimiters, and an optional third parameter to determine whether the caret goes inside the delimiters or to the right outside the delimiters.&lt;/p&gt;  &lt;p&gt;You can download and install the feature here:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://code.google.com/p/dxcorecommunityplugins/wiki/CR_QuickPair"&gt;http://code.google.com/p/dxcorecommunityplugins/wiki/CR_QuickPair&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This plug-in includes shortcut bindings based on the US keyboard. You may need to change these bindings to match your keyboard locale settings. For example, on a US keyboard, the parens are located above the 9 and 0 keys, respectively, like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/90_73752AD9.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="90" border="0" alt="90" src="http://community.devexpress.com/blogs/markmiller/90_thumb_7EBE3F16.png" width="244" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The curly braces are above the brackets:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/Brackets_688823C4.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Brackets" border="0" alt="Brackets" src="http://community.devexpress.com/blogs/markmiller/Brackets_thumb_54225E39.png" width="244" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The angle brackets are above the comma and period keys:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/AngleBrackets_39E1F515.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="AngleBrackets" border="0" alt="AngleBrackets" src="http://community.devexpress.com/blogs/markmiller/AngleBrackets_thumb_706FA059.png" width="244" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And the double-quote is above the apostrophe (and the key to the left is the semi-colon):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/Quote_1D185A33.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Quote" border="0" alt="Quote" src="http://community.devexpress.com/blogs/markmiller/Quote_thumb_53A60577.png" width="244" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;With each of these key pairs, we’ve assigned two functionalities. The left key (e.g., &lt;strong&gt;Ctrl+[ &lt;/strong&gt;) places the caret &lt;em&gt;between &lt;/em&gt;the two delimiters (adding a field, so you can just press &lt;strong&gt;Enter &lt;/strong&gt;to get to the right of the delimiter pair), and the right key (e.g., &lt;strong&gt;Ctrl+] &lt;/strong&gt;) places the caret after the two delimiters (no fields needed). If there’s a selection, the left key will embed the selection within the delimiters (maintaining the original selection), and the right key will embed the selection within the delimiters, extending the selection to include the delimiters. Examples of all the bindings created in the webinar appear below.&lt;/p&gt;  &lt;p&gt;Given these key positions, the table below shows available functionality (the “&lt;font color="#d19049"&gt;|&lt;/font&gt;” character indicates the caret position and the blue background indicates the selection, &lt;em&gt;after &lt;/em&gt;code is inserted):&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;&lt;font color="#5e78e1" size="4"&gt;On a US Keyboard, press this:&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;&lt;font color="#5e78e1"&gt;&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&lt;strong&gt;&lt;font color="#5e78e1" size="4"&gt;to get this:              &lt;br /&gt;(no selection)&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;&lt;font color="#5e78e1"&gt;&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&lt;strong&gt;&lt;font color="#5e78e1" size="4"&gt;or to modify a selection:&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;font size="4"&gt;Ctrl+(&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font size="4"&gt;(&lt;font color="#d19049"&gt;|&lt;/font&gt;)&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font size="4"&gt;(&lt;font style="background-color:#add6ff;"&gt;My Selection&lt;/font&gt;)&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;font size="4"&gt;Ctrl+)&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font size="4"&gt;()&lt;font color="#d19049"&gt;|&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font style="background-color:#add6ff;" size="4"&gt;(My Selection)&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;font size="4"&gt;Ctrl+[&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font size="4"&gt;[&lt;font color="#d19049"&gt;|&lt;/font&gt;]&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font size="4"&gt;[&lt;font style="background-color:#add6ff;"&gt;My Selection&lt;/font&gt;]&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;font size="4"&gt;Ctrl+]&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font size="4"&gt;[]&lt;font color="#d19049"&gt;|&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font style="background-color:#add6ff;" size="4"&gt;[My Selection]&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;font size="4"&gt;Ctrl+Shift+{&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font size="4"&gt;{&lt;font color="#d19049"&gt;|&lt;/font&gt;}&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font size="4"&gt;{&lt;font style="background-color:#add6ff;"&gt;My Selection&lt;/font&gt;}&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;font size="4"&gt;Ctrl+Shift+}&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font size="4"&gt;{}&lt;font color="#d19049"&gt;|&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font style="background-color:#add6ff;" size="4"&gt;{My Selection}&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;font size="4"&gt;Ctrl+Shift+&amp;lt;&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font size="4"&gt;&amp;lt;&lt;font color="#d19049"&gt;|&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font size="4"&gt;&amp;lt;&lt;font style="background-color:#add6ff;"&gt;My Selection&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;font size="4"&gt;Ctrl+Shift+&amp;gt;&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font size="4"&gt;&amp;lt;&amp;gt;&lt;font color="#d19049"&gt;|&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font style="background-color:#add6ff;" size="4"&gt;&amp;lt;My Selection&amp;gt;&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;font size="4"&gt;Ctrl+;&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font size="4"&gt;&amp;quot;&lt;font color="#d19049"&gt;|&lt;/font&gt;&amp;quot;&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font size="4"&gt;&amp;quot;&lt;font style="background-color:#add6ff;"&gt;My Selection&lt;/font&gt;&amp;quot;&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;font size="4"&gt;Ctrl+&amp;quot;&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font size="4"&gt;&amp;quot;&amp;quot;&lt;font color="#d19049"&gt;|&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font style="background-color:#add6ff;" size="4"&gt;“My Selection”&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;font size="4"&gt;Ctrl+=&lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font size="4"&gt;(&lt;font color="#d19049"&gt;|&lt;/font&gt;) =&amp;gt; &lt;/font&gt;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&lt;font size="4"&gt;(&lt;font style="background-color:#add6ff;"&gt;My Selection&lt;/font&gt;) =&amp;gt; &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;You may notice a lack of symmetry with the Ctrl+= binding (there is no corresponding binding to place the caret to the right of the lambda operator). I omitted this binding due to a lack of a suitable neighboring key to the equals sign. If you want to correct this asymmetry and add your own binding, feel free to. After installing this plug-in, you may view or change the shortcuts bindings in the IDE\Shortcuts options page. The QuickPair bindings are in the Code\QuickPair folder:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/QuickPairBindings_7FE28C5B.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="QuickPairBindings" border="0" alt="QuickPairBindings" src="http://community.devexpress.com/blogs/markmiller/QuickPairBindings_thumb_5EEF19B4.png" width="365" height="418" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Have a request for a new feature? Email &lt;a href="mailto:roryb@devexpress.com"&gt;roryb@devexpress.com&lt;/a&gt; and let us know what you’d like to see us build for you on CodeRush Feature Wednesdays.&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=346176" width="1" height="1"&gt;</description></item><item><title>Get Your CodeRush Training Here</title><link>http://community.devexpress.com/blogs/markmiller/archive/2011/05/04/get-your-coderush-training-here.aspx</link><pubDate>Wed, 04 May 2011 21:26:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:343586</guid><dc:creator>Mark Miller (DevExpress)</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.devexpress.com/blogs/markmiller/rsscomments.aspx?PostID=343586</wfw:commentRss><comments>http://community.devexpress.com/blogs/markmiller/archive/2011/05/04/get-your-coderush-training-here.aspx#comments</comments><description>&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;"&gt;Here’s a summary of CodeRush training videos created so far, to help you find relevant training quickly:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;1.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/#CodeRushGetStartedWebinar"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Introduction to Features&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;a.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/CodeRush101.movie"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Getting Started/Configuration&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;2.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/#CRNavigationWebinar"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Navigation&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;3.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/#CRSelectionsAndClipboardWebinar"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Working with Selections and the Clipboard&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;4.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/#CRConsumeFirstWebinar"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Consume-first Declaration&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraph"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font:16px Calibri;"&gt;5.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:Calibri;"&gt;Declaring and Refactoring: &lt;/span&gt;&lt;/span&gt;      &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;     &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;a.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/#RefactoringPropertiesCodeRush"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Properties&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;b.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/#CRDeclareRefactorEventsWebinar"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Events&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraph"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font:16px Calibri;"&gt;6.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:Calibri;"&gt;Refactoring in-depth: &lt;/span&gt;&lt;/span&gt;      &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;     &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;a.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/RefactorIntro.movie"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Introduction&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;b.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/ChangingSignatures.movie"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Changing Signatures&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;c.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/RefactoringConditionals.movie"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Conditionals&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;d.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/RefactoringDeclsAndInits.movie"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Declaration and Initialization&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;e.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/RefactoringDeadCode.movie"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Dead Code&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;f.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/RefactoringExpressions.movie"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Expressions&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;g.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/RefactoringFormattingAndStructure.movie"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Formatting and Structure&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;h.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/LambdaExpressions.movie"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Lambda Expressions and Anonymous Methods&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;i.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/RefactoringLoopsAndBlocks.movie"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Loops &amp;amp; Blocks&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;j.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/MovingAndExtractingMethods.movie"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Moving and Extracting Methods&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;k.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/RefactoringPropsAndFields.movie"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Properties and Fields&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;l.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/RefactoringStrings.movie"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Strings&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraph"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font:16px Calibri;"&gt;7.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:Calibri;"&gt;Language/Framework follow-up: &lt;/span&gt;&lt;/span&gt;      &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;     &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;a.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/#CodeRushAspNet"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;ASP.NET&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;b.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/RefactorCPP.movie"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;C++&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;c.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/#CodeRushMVC"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;MVC&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;d.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/CodeRushColor.movie"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Working with Color&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;e.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/#CodeRushForWpfSlWebinar"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;WPF and Silverlight&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;f.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/#CodeRushInXAFWebinar"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;XAF&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraph"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font:16px Calibri;"&gt;8.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:Calibri;"&gt;Advanced Topics &lt;/span&gt;&lt;/span&gt;      &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;     &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;a.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/#CodeRushDeepDiveWebinar"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;CodeRush Template Deep Dive&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;b.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/#AdvTextCommandsCodeRush"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;TextCommands&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;      &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;     &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraph"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font:16px Calibri;"&gt;9.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:Calibri;"&gt;Creating Plug-ins &lt;/span&gt;&lt;/span&gt;      &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;     &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;a.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/#CodeRushActionsToolWindows"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Introduction – Actions and Tool Windows&lt;/span&gt;&lt;/span&gt; &lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;b.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/#CodeRushTextCommands"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;Text Commands, StringProviders and ContextProviders&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-indent:-0.25in;margin:0in 0in 0pt 1in;mso-list:l0 level2 lfo1;" class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:calibri;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font:16px Calibri;"&gt;c.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tv.devexpress.com/#CRPluginsTextDocTextView"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0000ff;"&gt;TextDocument and TextView&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family:Calibri;font-size:16px;"&gt;Nearly every Tuesday at 12:00 noon Pacific time Rory Becker and I host a CodeRush training webinar, where we dive into a particular topic and answer questions from viewers. You can see a list of upcoming CodeRush webinars &lt;a href="http://www.devexpress.com/webinars" target="_blank"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=343586" width="1" height="1"&gt;</description></item><item><title>Visual Studio Features Built Instantly for CodeRush Developers</title><link>http://community.devexpress.com/blogs/markmiller/archive/2011/04/07/visual-studio-features-built-instantly-for-coderush-developers.aspx</link><pubDate>Thu, 07 Apr 2011 22:51:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:341367</guid><dc:creator>Mark Miller (DevExpress)</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.devexpress.com/blogs/markmiller/rsscomments.aspx?PostID=341367</wfw:commentRss><comments>http://community.devexpress.com/blogs/markmiller/archive/2011/04/07/visual-studio-features-built-instantly-for-coderush-developers.aspx#comments</comments><description>&lt;p&gt;This week Rory and I continue our &lt;strong&gt;path-rip through the space time continuum &lt;/strong&gt;by responding to customer requests yet again with mind-numbing development speed. &lt;/p&gt;
&lt;p&gt;Earlier today this question appeared on twitter:&lt;/p&gt;
&lt;p&gt;&lt;img height="87" width="293" src="http://community.devexpress.com/blogs/markmiller/Request_0B3A1CA1.png" alt="Request" border="0" title="Request" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/p&gt;
&lt;p&gt;Joe needs to convert a method call with positional arguments (the old way of passing arguments), into a named argument call. For example, he wants to change something like this:&lt;/p&gt;
&lt;p&gt; &lt;span style="font-family:Consolas;font-size:small;"&gt;&lt;span style="font-family:Consolas;font-size:small;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;span style="font-family:Consolas;font-size:small;"&gt;
&lt;p&gt;RegisterDev(&lt;span style="font-family:Consolas;color:#a31515;font-size:small;"&gt;&lt;font face="Consolas" size="3" color="#a31515"&gt;&lt;font face="Consolas" size="3" color="#a31515"&gt;&amp;quot;Mark&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:small;"&gt;&lt;font face="Consolas" size="3"&gt;, &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:small;"&gt;&lt;font face="Consolas" size="3" color="#a31515"&gt;&lt;font face="Consolas" size="3" color="#a31515"&gt;&amp;quot;Miller&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:small;"&gt;&lt;font face="Consolas" size="3"&gt;, 0);&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;to this, in C#:&lt;/p&gt;
&lt;p&gt; &lt;span style="font-family:Consolas;font-size:small;"&gt;&lt;span style="font-family:Consolas;font-size:small;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;span style="font-family:Consolas;font-size:small;"&gt;
&lt;p&gt;RegisterDev(firstName:&amp;nbsp;&lt;span style="font-family:Consolas;color:#a31515;font-size:small;"&gt;&lt;font face="Consolas" size="3" color="#a31515"&gt;&lt;font face="Consolas" size="3" color="#a31515"&gt;&amp;quot;Mark&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:small;"&gt;&lt;font face="Consolas" size="3"&gt;, lastName: &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:small;"&gt;&lt;font face="Consolas" size="3" color="#a31515"&gt;&lt;font face="Consolas" size="3" color="#a31515"&gt;&amp;quot;Miller&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:small;"&gt;&lt;font face="Consolas" size="3"&gt;, id: 0);&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;Definitely a useful refactoring. Here&amp;rsquo;s how we built it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a new plug-in.&lt;/li&gt;
&lt;li&gt;Drop a RefactoringProvider on the design surface&lt;/li&gt;
&lt;li&gt;Fill out properties for the refactoring (Name, Description, AutoUndo)&lt;/li&gt;
&lt;li&gt;Handle three events (CheckAvailability, Apply, &amp;amp; PreparePreview)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Within an hour &lt;/strong&gt;the feature was implemented and &lt;a href="http://code.google.com/p/dxcorecommunityplugins/wiki/Refactor_NamedParameters"&gt;published&lt;/a&gt; (working in C# and VB), ready for consumption by CodeRush devs, prompting this response from Joe:&lt;/p&gt;
&lt;p&gt;&lt;img height="92" width="301" src="http://community.devexpress.com/blogs/markmiller/ResponseFromJoe_5C7463FE.png" alt="ResponseFromJoe" border="0" title="ResponseFromJoe" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;But this isn&amp;rsquo;t unique. &lt;/strong&gt;Over the last two weeks we&amp;rsquo;ve released a number of new features, all built and delivered on the same day they were requested (most in under an hour from the original request)&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;img height="91" width="303" src="http://community.devexpress.com/blogs/markmiller/SurlyDev_42A02DCF.png" alt="SurlyDev" border="0" title="SurlyDev" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="90" width="301" src="http://community.devexpress.com/blogs/markmiller/pajacobs_610A6EB8.png" alt="pajacobs" border="0" title="pajacobs" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="90" width="302" src="http://community.devexpress.com/blogs/markmiller/Apeoholic_7ADEA4E7.png" alt="Apeoholic" border="0" title="Apeoholic" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/p&gt;
&lt;p&gt;Need a feature? Just let us know. &lt;strong&gt;CodeRush can do anything&lt;/strong&gt;, and if the feature isn&amp;rsquo;t there, we can likely add it easily. Tell us on Twitter what you want CodeRush to do (include the word &amp;ldquo;CodeRush&amp;rdquo; in your tweet), and lets see if we can keep up the pace. &lt;img src="http://community.devexpress.com/blogs/markmiller/wlEmoticon-smile_4016FC11.png" alt="Smile" class="wlEmoticon wlEmoticon-smile" style="border-bottom-style:none;border-right-style:none;border-top-style:none;border-left-style:none;" /&gt;&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=341367" width="1" height="1"&gt;</description></item><item><title>Importing Namespace References for Extension Methods in CodeRush for Visual Studio</title><link>http://community.devexpress.com/blogs/markmiller/archive/2011/03/23/importing-namespace-references-for-extension-methods-in-coderush-for-visual-studio.aspx</link><pubDate>Wed, 23 Mar 2011 21:33:47 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:339924</guid><dc:creator>Mark Miller (DevExpress)</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.devexpress.com/blogs/markmiller/rsscomments.aspx?PostID=339924</wfw:commentRss><comments>http://community.devexpress.com/blogs/markmiller/archive/2011/03/23/importing-namespace-references-for-extension-methods-in-coderush-for-visual-studio.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;From feature request to binary delivery in less than four hours.&lt;/strong&gt; Here’s the timeline:&lt;/p&gt;  &lt;h3&gt;At 10:06 this morning, Apeoholic tweets the following question:&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;Is there a way to get #CodeRush to suggest namespace usages for extension methods?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Which led to the following discussion with one of our CodeRush devs on IM:&lt;/p&gt;  &lt;p&gt;&lt;font color="#666666"&gt;[10:08] &lt;/font&gt;&lt;font color="#4f81bd"&gt;Mark:&lt;/font&gt; &lt;font color="#0000a0"&gt;Hey Alex, I have this question in a tweet -- &amp;quot;Is there a way to get #CodeRush to suggest namespace usages for extension methods?&amp;quot;     &lt;br /&gt;&lt;/font&gt;&lt;font color="#666666"&gt;[10:09] &lt;/font&gt;&lt;font color="#c0504d"&gt;Alex: &lt;/font&gt;&lt;font color="#800000"&gt;Hi Mark, I&amp;#39;m not sure what he means…&lt;/font&gt;    &lt;br /&gt;&lt;font color="#666666"&gt;[10:10] &lt;/font&gt;&lt;font color="#4f81bd"&gt;Mark:&lt;/font&gt; &lt;font color="#0000a0"&gt;I think he&amp;#39;s talking about adding namespace imports when an extension method is at the caret.     &lt;br /&gt;&lt;/font&gt;&lt;font color="#666666"&gt;[10:10] &lt;/font&gt;&lt;font color="#4f81bd"&gt;Mark:&lt;/font&gt; &lt;font color="#0000a0"&gt;I&amp;#39;m wondering if VS fails to do this.     &lt;br /&gt;&lt;/font&gt;&lt;font color="#666666"&gt;[10:10] &lt;/font&gt;&lt;font color="#c0504d"&gt;Alex: &lt;/font&gt;&lt;font color="#800000"&gt;I suppose VS does it, doesn’t it?     &lt;br /&gt;&lt;/font&gt;&lt;font color="#666666"&gt;[10:10] &lt;/font&gt;&lt;font color="#4f81bd"&gt;Mark:&lt;/font&gt; &lt;font color="#0000a0"&gt;Check it for me.     &lt;br /&gt;&lt;/font&gt;&lt;font color="#666666"&gt;[10:12] &lt;/font&gt;&lt;font color="#c0504d"&gt;Alex: &lt;/font&gt;&lt;font color="#800000"&gt;OK, VS fails to do this.     &lt;br /&gt;&lt;/font&gt;&lt;font color="#666666"&gt;[10:13] &lt;/font&gt;&lt;font color="#c0504d"&gt;Alex: &lt;/font&gt;&lt;font color="#800000"&gt;And we don&amp;#39;t have such feature     &lt;br /&gt;&lt;/font&gt;&lt;font color="#666666"&gt;[10:13] &lt;/font&gt;&lt;font color="#4f81bd"&gt;Mark:&lt;/font&gt; &lt;font color="#0000a0"&gt;Can we write this as a plug-in?     &lt;br /&gt;&lt;/font&gt;&lt;font color="#666666"&gt;[10:13] &lt;/font&gt;&lt;font color="#c0504d"&gt;Alex: &lt;/font&gt;&lt;font color="#800000"&gt;Of course, but this will take time.     &lt;br /&gt;&lt;/font&gt;&lt;font color="#666666"&gt;[10:14] &lt;/font&gt;&lt;font color="#4f81bd"&gt;Mark:&lt;/font&gt; &lt;font color="#0000a0"&gt;What&amp;#39;s the challenging part of this?     &lt;br /&gt;&lt;/font&gt;&lt;font color="#666666"&gt;[10:14] &lt;/font&gt;&lt;font color="#c0504d"&gt;Alex: &lt;/font&gt;&lt;font color="#800000"&gt;Find and resolve all the extension methods     &lt;br /&gt;&lt;/font&gt;&lt;font color="#666666"&gt;[10:15] &lt;/font&gt;&lt;font color="#4f81bd"&gt;Mark:&lt;/font&gt; &lt;font color="#0000a0"&gt;Create a spike -- work on this for an hour and see what you get.     &lt;br /&gt;&lt;/font&gt;&lt;font color="#666666"&gt;[10:15] &lt;/font&gt;&lt;font color="#4f81bd"&gt;Mark:&lt;/font&gt; &lt;font color="#0000a0"&gt;Then send me that source and I can finish it up     &lt;br /&gt;&lt;/font&gt;&lt;font color="#666666"&gt;[10:15] &lt;/font&gt;&lt;font color="#c0504d"&gt;Alex: &lt;/font&gt;&lt;font color="#800000"&gt;ok     &lt;br /&gt;&lt;/font&gt;&lt;font color="#666666"&gt;[10:15] &lt;/font&gt;&lt;font color="#4f81bd"&gt;Mark:&lt;/font&gt; &lt;font color="#0000a0"&gt;Then I&amp;#39;ll have Rory put it on the community site.     &lt;br /&gt;&lt;/font&gt;&lt;font color="#666666"&gt;[10:15] &lt;/font&gt;&lt;font color="#c0504d"&gt;Alex: &lt;/font&gt;&lt;font color="#800000"&gt;k&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Which led to the development of the feature, testing, a few changes, and then this IM with Rory Becker:&lt;/p&gt;  &lt;p&gt;&lt;font color="#666666"&gt;[13:06] &lt;/font&gt;&lt;font color="#4f81bd"&gt;Mark:&lt;/font&gt; &lt;font color="#000080"&gt;I had Alex create a plug-in spike for a feature request to add missing namespace references for extension methods (something VS does not do)&lt;/font&gt;    &lt;br /&gt;&lt;font color="#666666"&gt;[13:06] &lt;/font&gt;&lt;font color="#00a6a6"&gt;Rory: &lt;/font&gt;&lt;font color="#008040"&gt;cool&lt;/font&gt;    &lt;br /&gt;&lt;font color="#666666"&gt;[13:06] &lt;/font&gt;&lt;font color="#4f81bd"&gt;Mark:&lt;/font&gt; &lt;font color="#0000a0"&gt;I&amp;#39;m going to send this to you. Can you get this on the community plug-in site today?     &lt;br /&gt;&lt;/font&gt;&lt;font color="#666666"&gt;[13:06] &lt;/font&gt;&lt;font color="#00a6a6"&gt;Rory: &lt;/font&gt;&lt;font color="#008040"&gt;yeah sure, no problem&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;At 14:05, we published the feature on the community site.&lt;/h3&gt;  &lt;p&gt;Here’s the feature in action:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="AddNamespaceReference" border="0" alt="AddNamespaceReference" src="http://community.devexpress.com/blogs/markmiller/AddNamespaceReference_15F5F653.png" width="608" height="738" /&gt;&lt;/p&gt;  &lt;p&gt;Here’s the link to the feature on the CodeRush community plug-ins site: &lt;a href="http://code.google.com/p/dxcorecommunityplugins/wiki/CR_ExtensionMethodsHelper"&gt;&lt;font color="#0066cc"&gt;http://code.google.com/p/dxcorecommunityplugins/wiki/CR_ExtensionMethodsHelper&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We are likely to roll this functionality into a future version of CodeRush. If you have a CodeRush question or feature request, we want to hear from you. Post a comment below or include “#CodeRush” in your tweets and we’ll respond in a timely manner.&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=339924" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/markmiller/archive/tags/CodeRush/default.aspx">CodeRush</category></item><item><title>Creating CodeRush Plug-ins: Actions and Tool Windows</title><link>http://community.devexpress.com/blogs/markmiller/archive/2011/03/22/creating-coderush-plug-ins-actions-and-tool-windows.aspx</link><pubDate>Tue, 22 Mar 2011 23:55:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:339776</guid><dc:creator>Mark Miller (DevExpress)</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.devexpress.com/blogs/markmiller/rsscomments.aspx?PostID=339776</wfw:commentRss><comments>http://community.devexpress.com/blogs/markmiller/archive/2011/03/22/creating-coderush-plug-ins-actions-and-tool-windows.aspx#comments</comments><description>&lt;p&gt;Today &lt;a href="http://community.devexpress.com/controlpanel/blogs/posteditor.aspx/devexpress.com/rory" target="_blank"&gt;Rory&lt;/a&gt; and I presented a webinar called Creating CodeRush Plug-ins: Actions and Tool Windows. In it, we created a tool window that displays all Markers dropped throughout all open files. To see how we built this, watch the webinar &lt;a href="http://www.devexpress.com/Support/Webinars/#main|completed" target="_blank"&gt;here&lt;/a&gt;, which should be published in the next 24 hours if it isn’t available already.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="MarkersToolWindowScreenShot" border="0" alt="MarkersToolWindowScreenShot" src="http://community.devexpress.com/blogs/markmiller/MarkersToolWindowScreenShot_695DE67E.png" width="838" height="532" /&gt;&lt;/p&gt;  &lt;p&gt;The source to this plug-in can be found on the CodeRush community plug-in site, located &lt;a href="http://code.google.com/p/dxcorecommunityplugins/wiki/MarkersToolWindow" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=339776" width="1" height="1"&gt;</description></item><item><title>High-speed MVC Development in Visual Studio with CodeRush and DevExpress MVC Extensions</title><link>http://community.devexpress.com/blogs/markmiller/archive/2011/03/18/high-speed-mvc-development-in-visual-studio-with-coderush-and-devexpress-mvc-extensions.aspx</link><pubDate>Fri, 18 Mar 2011 21:00:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:338537</guid><dc:creator>Mark Miller (DevExpress)</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.devexpress.com/blogs/markmiller/rsscomments.aspx?PostID=338537</wfw:commentRss><comments>http://community.devexpress.com/blogs/markmiller/archive/2011/03/18/high-speed-mvc-development-in-visual-studio-with-coderush-and-devexpress-mvc-extensions.aspx#comments</comments><description>&lt;p&gt;If you saw our Using CodeRush with MVC webinar, Rory and I introduced new templates that make it easy to exploit the MVC Extensions from DevExpress. These templates will likely be integrated into CodeRush 11.1, however you can install and start using them right now (installation instructions appear below).&lt;/p&gt;
&lt;h2&gt;Templates&lt;/h2&gt;
&lt;h3&gt;Controls&lt;/h3&gt;
&lt;table cellspacing="0" cellpadding="0"&gt;

&lt;tr&gt;
&lt;td&gt;&lt;span style="color:#ffffff;background-color:#4f81bd;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#4f81bd;"&gt;Template&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="color:#ffffff;"&gt;&lt;strong&gt;&lt;span style="color:#4f81bd;"&gt;Control&lt;/span&gt;&lt;/strong&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; &lt;/span&gt;&lt;span style="color:#ffffff;background-color:#4f81bd;"&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xb&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;B&lt;/span&gt;&lt;/strong&gt;utton&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xc&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;C&lt;/span&gt;&lt;/strong&gt;alendar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xcb&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;C&lt;/span&gt;&lt;/strong&gt;ombo&lt;strong&gt;&lt;span style="color:#b00000;"&gt;B&lt;/span&gt;&lt;/strong&gt;ox&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xde&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;D&lt;/span&gt;&lt;/strong&gt;ate&lt;strong&gt;&lt;span style="color:#b00000;"&gt;E&lt;/span&gt;&lt;/strong&gt;dit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xgv&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;G&lt;/span&gt;&lt;/strong&gt;rid&lt;strong&gt;&lt;span style="color:#b00000;"&gt;V&lt;/span&gt;&lt;/strong&gt;iew&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xhe&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;H&lt;/span&gt;&lt;/strong&gt;tml&lt;strong&gt;&lt;span style="color:#b00000;"&gt;E&lt;/span&gt;&lt;/strong&gt;ditor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xhl&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;H&lt;/span&gt;&lt;/strong&gt;yper&lt;strong&gt;&lt;span style="color:#b00000;"&gt;L&lt;/span&gt;&lt;/strong&gt;ink&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xi&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;I&lt;/span&gt;&lt;/strong&gt;mage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xl&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;L&lt;/span&gt;&lt;/strong&gt;abel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xlb&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;L&lt;/span&gt;&lt;/strong&gt;ist&lt;strong&gt;&lt;span style="color:#b00000;"&gt;B&lt;/span&gt;&lt;/strong&gt;ox&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xm&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;M&lt;/span&gt;&lt;/strong&gt;enu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xmo&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;M&lt;/span&gt;&lt;/strong&gt;em&lt;strong&gt;&lt;span style="color:#b00000;"&gt;o&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xnb&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;N&lt;/span&gt;&lt;/strong&gt;av&lt;strong&gt;&lt;span style="color:#b00000;"&gt;B&lt;/span&gt;&lt;/strong&gt;ar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xp&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;P&lt;/span&gt;&lt;/strong&gt;opupControl&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xpg&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;P&lt;/span&gt;&lt;/strong&gt;a&lt;strong&gt;&lt;span style="color:#b00000;"&gt;g&lt;/span&gt;&lt;/strong&gt;eControl&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xrb&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;R&lt;/span&gt;&lt;/strong&gt;adio&lt;strong&gt;&lt;span style="color:#b00000;"&gt;B&lt;/span&gt;&lt;/strong&gt;utton&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xrbl&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;R&lt;/span&gt;&lt;/strong&gt;adio&lt;strong&gt;&lt;span style="color:#b00000;"&gt;B&lt;/span&gt;&lt;/strong&gt;utton&lt;strong&gt;&lt;span style="color:#b00000;"&gt;L&lt;/span&gt;&lt;/strong&gt;ist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xrp&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;R&lt;/span&gt;&lt;/strong&gt;ound&lt;strong&gt;&lt;span style="color:#b00000;"&gt;P&lt;/span&gt;&lt;/strong&gt;anel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xs&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;S&lt;/span&gt;&lt;/strong&gt;plitter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xse&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;S&lt;/span&gt;&lt;/strong&gt;pin&lt;strong&gt;&lt;span style="color:#b00000;"&gt;E&lt;/span&gt;&lt;/strong&gt;dit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xtb&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;T&lt;/span&gt;&lt;/strong&gt;ext&lt;strong&gt;&lt;span style="color:#b00000;"&gt;B&lt;/span&gt;&lt;/strong&gt;ox&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xte&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;T&lt;/span&gt;&lt;/strong&gt;ime&lt;strong&gt;&lt;span style="color:#b00000;"&gt;E&lt;/span&gt;&lt;/strong&gt;dit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xtv&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;T&lt;/span&gt;&lt;/strong&gt;ree&lt;strong&gt;&lt;span style="color:#b00000;"&gt;V&lt;/span&gt;&lt;/strong&gt;iew&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xu&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;U&lt;/span&gt;&lt;/strong&gt;ploadControl&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;h3&gt;Items, Nodes, Groups, Panes, and Tab Pages&lt;/h3&gt;
&lt;p&gt;These templates make it easier to create elements inside the MVC controls. Copy the reference that will own these elements (e.g., &amp;ldquo;settings&amp;rdquo;, &amp;ldquo;settings.Properties&amp;rdquo;,&amp;nbsp; &amp;ldquo;firstMenu&amp;rdquo;,&amp;nbsp; etc.) to the clipboard before expanding.&lt;/p&gt;
&lt;p&gt;   
&lt;table cellspacing="0" cellpadding="0"&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#4f81bd;"&gt;Template&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#4f81bd;"&gt;Calls&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="color:#ffffff;"&gt;&lt;strong&gt;&lt;span style="color:#4f81bd;"&gt;Use Inside&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#ffffff;"&gt;&lt;/span&gt;&lt;span style="color:#ffffff;background-color:#4f81bd;"&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ga&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;G&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#000000;"&gt;roups.&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;A&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#000000;"&gt;dd()&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;NavBar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ia&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;I&lt;/span&gt;&lt;/strong&gt;tems.&lt;strong&gt;&lt;span style="color:#b00000;"&gt;A&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#000000;"&gt;dd()&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;ComboBox, ListBox, Menu, RadioButtonList&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;na&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;N&lt;/span&gt;&lt;/strong&gt;odes.&lt;strong&gt;&lt;span style="color:#b00000;"&gt;A&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#000000;"&gt;dd()&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;TreeView&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pa&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;P&lt;/span&gt;&lt;/strong&gt;anes.&lt;strong&gt;&lt;span style="color:#b00000;"&gt;A&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#000000;"&gt;dd()&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Splitter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tpa&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;T&lt;/span&gt;&lt;/strong&gt;ab&lt;strong&gt;&lt;span style="color:#b00000;"&gt;P&lt;/span&gt;&lt;/strong&gt;ages.&lt;strong&gt;&lt;span style="color:#b00000;"&gt;A&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#000000;"&gt;dd()&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;PageControl&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;/p&gt;
&lt;h3&gt;Other Templates    
&lt;table cellspacing="0" cellpadding="0"&gt;

&lt;tr&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;/h3&gt;
&lt;p&gt;   
&lt;table cellspacing="0" cellpadding="0"&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#4f81bd;"&gt;Template&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="color:#ffffff;"&gt;&lt;strong&gt;&lt;span style="color:#4f81bd;"&gt;Expansion&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xrs&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;R&lt;/span&gt;&lt;/strong&gt;ender&lt;strong&gt;&lt;span style="color:#b00000;"&gt;S&lt;/span&gt;&lt;/strong&gt;cripts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xrss&lt;/td&gt;
&lt;td&gt;&lt;span style="color:#b00000;"&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;&lt;span style="color:#b00000;"&gt;R&lt;/span&gt;&lt;/strong&gt;ender&lt;strong&gt;&lt;span style="color:#b00000;"&gt;S&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;tyle&lt;strong&gt;&lt;span style="color:#b00000;"&gt;S&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#000000;"&gt;heets&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;To install, follow these steps:&lt;/p&gt;
&lt;p&gt;1. Right-click and &lt;strong&gt;save &lt;/strong&gt;each of the templates below.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/Templates/HTML_MVC_DevEx%20Extensions.xml"&gt;HTML_MVC_DevEx Extensions.xml&lt;/a&gt;       &lt;br /&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/Templates/CSharp_ASP.NET_MVC_DevEx%20Extensions.xml"&gt;CSharp_ASP.NET_MVC_DevEx Extensions.xml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#c0504d;"&gt;IMPORTANT:&amp;nbsp; &lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#000000;"&gt;For VB developers, we have two sets of templates to choose from. &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="color:#000000;"&gt;If you are working in &lt;strong&gt;CodeRush 10.2.5 or less&lt;/strong&gt;, use these templates: &lt;a href="http://community.devexpress.com/blogs/markmiller/Templates/VBMVC/10.2.5/Basic_ASP.NET_MVC_DevEx%20Extensions.xml"&gt;Basic_ASP.NET_MVC_DevEx Extensions.xml&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#000000;"&gt;If you are working in &lt;strong&gt;CodeRush 10.2.6 or greater&lt;/strong&gt;, use these templates instead: &lt;a href="http://community.devexpress.com/blogs/markmiller/Templates/VBMVC/10.2.6/Basic_ASP.NET_MVC_DevEx%20Extensions.xml"&gt;Basic_ASP.NET_MVC_DevEx Extensions.xml&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;2. Start Visual Studio if it&amp;rsquo;s not running already.&lt;/p&gt;
&lt;p&gt;3. From the &lt;strong&gt;DevExpress &lt;/strong&gt;menu, select &lt;strong&gt;Options&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;4. Navigate to the &lt;strong&gt;Editor&lt;/strong&gt;\&lt;strong&gt;Templates&lt;/strong&gt; options page.&lt;/p&gt;
&lt;p align="left"&gt;5. &lt;strong&gt;&lt;span style="color:#c0504d;"&gt;IMPORTANT: &lt;/span&gt;&lt;/strong&gt;Change the &lt;strong&gt;Language&lt;/strong&gt; combo box at the bottom of the Options dialog to &lt;strong&gt;HTML&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="left"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="LanguageHtml" border="0" alt="LanguageHtml" src="http://community.devexpress.com/blogs/markmiller/LanguageHtml_2778E03D.png" width="218" height="31" /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;6. &lt;strong&gt;Right-click&lt;/strong&gt; the template TreeView and choose &lt;strong&gt;Import Templates&amp;hellip;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;7. Select the &lt;strong&gt;HTML_MVC_DevEx Extensions&lt;/strong&gt; xml file downloaded in step one, and click &lt;strong&gt;Open&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;8. If you see a &lt;strong&gt;Category Exists &lt;/strong&gt;warning message, click &lt;strong&gt;OK&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="CategoryExists" border="0" alt="CategoryExists" src="http://community.devexpress.com/blogs/markmiller/CategoryExists_38E94115.png" width="677" height="246" /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Next, we need to install the templates for adding items, groups, nodes, panes, and tab pages. These templates must be imported into the appropriate language group of templates.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;If You Work in Visual Basic&amp;hellip;&lt;/h3&gt;
&lt;p align="left"&gt;1. &lt;strong&gt;&lt;span style="color:#c0504d;"&gt;IMPORTANT: &lt;/span&gt;&lt;/strong&gt;Change the &lt;strong&gt;Language&lt;/strong&gt; combo box at the bottom of the Options dialog to &lt;strong&gt;Basic&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="left"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="LanguageBasic" border="0" alt="LanguageBasic" src="http://community.devexpress.com/blogs/markmiller/LanguageBasic_5B1126CE.png" width="218" height="29" /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;2. &lt;strong&gt;Right-click&lt;/strong&gt; the template TreeView and choose &lt;strong&gt;Import Templates&amp;hellip;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;3. Select the &lt;strong&gt;Basic_ASP.NET_MVC_DevEx Extensions&lt;/strong&gt; xml file downloaded in step one, and click &lt;strong&gt;Open&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;4. If you see a &lt;strong&gt;Category Exists &lt;/strong&gt;warning message, click &lt;strong&gt;OK&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;If You Work in C#&amp;hellip;&lt;/h3&gt;
&lt;p align="left"&gt;1. &lt;strong&gt;&lt;span style="color:#c0504d;"&gt;IMPORTANT: &lt;/span&gt;&lt;/strong&gt;Change the &lt;strong&gt;Language&lt;/strong&gt; combo box at the bottom of the Options dialog to &lt;strong&gt;CSharp&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="left"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="LanguageCSharp" border="0" alt="LanguageCSharp" src="http://community.devexpress.com/blogs/markmiller/LanguageCSharp_13BBD0DC.png" width="216" height="27" /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;2. &lt;strong&gt;Right-click&lt;/strong&gt; the template TreeView and choose &lt;strong&gt;Import Templates&amp;hellip;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;3. Select the &lt;strong&gt;CSharp_ASP.NET_MVC_DevEx Extensions&lt;/strong&gt; xml file downloaded in step one, and click &lt;strong&gt;Open&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;4. If you see a &lt;strong&gt;Category Exists &lt;/strong&gt;warning message, click &lt;strong&gt;OK&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Testing&lt;/h2&gt;
&lt;p&gt;After importing the MVC Extension templates as shown above, click &lt;strong&gt;OK &lt;/strong&gt;to close the Options dialog. Inside an MVC application, open an aspx file, go to an empty line, and expand one or more of the templates on this page. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/MVC-TreeView-expansion_6157FD5C.gif"&gt;&lt;img style="display:inline;" title="MVC TreeView expansion" alt="MVC TreeView expansion" src="http://community.devexpress.com/blogs/markmiller/MVC-TreeView-expansion_thumb_7FC23E45.gif" width="708" height="468" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=338537" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/markmiller/archive/tags/CodeRush/default.aspx">CodeRush</category></item><item><title>Updating Plug-ins on the Community Site</title><link>http://community.devexpress.com/blogs/markmiller/archive/2011/02/17/updating-plug-ins-on-the-community-site.aspx</link><pubDate>Thu, 17 Feb 2011 21:53:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:336648</guid><dc:creator>Mark Miller (DevExpress)</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.devexpress.com/blogs/markmiller/rsscomments.aspx?PostID=336648</wfw:commentRss><comments>http://community.devexpress.com/blogs/markmiller/archive/2011/02/17/updating-plug-ins-on-the-community-site.aspx#comments</comments><description>&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="font-family:&amp;#39;arial black&amp;#39;, &amp;#39;avant garde&amp;#39;;color:#ff0000;font-size:medium;"&gt;Update: The content at the community site has been updated, and nearly all the plug-ins there currently build with 10.2.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;Binary plug-in compatibility across versions of the DXCore is a huge priority for us. For most of our releases, we&amp;rsquo;ve delivered on that intention; after updating you could simply continue to use a plug-in compiled for a previous version. In a few releases, we required a recompile but no source code changes to the plug-in. In 2010, we introduced changes that meant the code had to change in a few plug-ins that were still using the obsolete architecture, and we moved our parsers out to a separate DLL.&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="color:black;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="color:black;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="color:black;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="color:black;"&gt;There are CodeRush and DXCore plug-ins out on the community site in need of updates to match the architectural changes introduced in 10.1 and 10.2.&amp;nbsp;&lt;/span&gt;Here&amp;rsquo;s where things currently stand at the community site:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="color:black;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;No Changes Needed&lt;/h1&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="color:black;"&gt;The following plug-ins compile:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="color:black;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="color:black;"&gt;CR_BlockPainterPlus&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_CCConsole&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_ClearAllMarkers&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_CodeIssuesContrib&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_CreateTestMethod&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_DeclareClassInProject&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_DrawLinesBetweenMethods&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_ExecuteScript&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_GenerateTest&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_JumpToImplementation&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_Loop&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_MetricShader&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_NavigateToTest&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;   &lt;span style="color:black;"&gt;   &lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;Need References&lt;/h1&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;The following plug-ins need to add a reference to &lt;strong&gt;DevExpress.DXCore.Parser&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="color:black;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="color:black;"&gt;CR_CodeBlockContentProviders&lt;/span&gt;&lt;span style="color:black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_ColorizeMemberNames&lt;/span&gt;&lt;span style="color:black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_CreateDelegate&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_CreateHeader&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_DumbAss_Issues &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_EnhancedForEach &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_EasyGoto &amp;ndash; also &lt;strong&gt;Specific Version&lt;/strong&gt; needs to be set to &lt;strong&gt;false&lt;/strong&gt; for &lt;strong&gt;DevExpress.CodeRush.Library&lt;/strong&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_EventHandlerCheckTC &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_ExceptionHelper &amp;ndash; also needs ambiguous Xml references changed to&lt;strong&gt; System.Xml&lt;/strong&gt; and needs a change to DxCoreEvents1_EditorPaintForeground handler which uses m_Highlighter&lt;/span&gt;&lt;/li&gt;
&lt;span style="color:black;"&gt;&lt;/span&gt;
&lt;li&gt;&lt;span style="color:black;"&gt;CR_Execute &lt;/span&gt;      &lt;/li&gt;
&lt;li&gt;CR_MoveFile&lt;/li&gt;
&lt;li&gt;CR_MsdnBclHelp &lt;/li&gt;
&lt;li&gt;CR_MultiFileTemplates&lt;/li&gt;
&lt;li&gt;CR_NavigationContrib&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;The following plug-ins need references to both &lt;strong&gt;DevExpress.DXCore.Controls.Utils.v6.3&lt;/strong&gt; and &lt;strong&gt;DevExpress.DXCore.Parser&lt;/strong&gt;.&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;CR_Initials&lt;/li&gt;
&lt;li&gt;CR_MarkerExtensions&lt;/li&gt;
&lt;li&gt;CR_mdMarkerExtensions (also needs to change &lt;strong&gt;LocatorBeacon&lt;/strong&gt; to &lt;strong&gt;GdiLocatorBeacon&lt;/strong&gt;)
&lt;ul&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;br /&gt;The following plug-ins need to set the &lt;strong&gt;Specific Version &lt;/strong&gt;property to &lt;strong&gt;false&lt;/strong&gt; for &lt;strong&gt;DevExpress.DXCore.Parser&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CR_NavigateToDefinition&lt;/li&gt;
&lt;li&gt;CR_MethodNameReformatting&lt;/li&gt;
&lt;li&gt;CR_MethodPreview
&lt;ul&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;The following plug-in needs a reference to &lt;strong&gt;DevExpress.DXCore.Controls.Utils.v6.3&lt;/strong&gt; (with its &lt;strong&gt;Specific Version&lt;/strong&gt; property to &lt;strong&gt;false&lt;/strong&gt;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CR_ClassCleaner
&lt;ul&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="color:black;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Code Changes Required&lt;/h1&gt;
&lt;p&gt;These plug-ins require some changes to the source code to meet the recent architecture changes.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CR_Colorizer&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Needs reference to &lt;strong&gt;DevExpress.DXCore.Parser&lt;/strong&gt;.&lt;br /&gt;Adding this reference and recompiling produces this error:&lt;br /&gt;Error&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;DevExpress.CodeRush.Core.TextView&amp;#39; does not contain a definition for &amp;#39;Repaint&amp;#39; and no extension method &amp;#39;Repaint&amp;#39; accepting a first argument of type &amp;#39;DevExpress.CodeRush.Core.TextView&amp;#39; could be found&lt;br /&gt;&amp;nbsp;&lt;br /&gt;We recommend fixing with this code:&lt;/p&gt;
&lt;ul&gt;
&lt;blockquote&gt;     &lt;/blockquote&gt;&lt;span style="font-family:Consolas;"&gt;&lt;span style="color:#008080;"&gt;IGdiTextView &lt;/span&gt;gdiTextView = &lt;span style="color:#008080;"&gt;CodeRush&lt;/span&gt;.TextViews.Active &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; &lt;span style="color:#008080;"&gt;IGdiTextView&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;      &lt;/blockquote&gt;&lt;span style="font-family:Consolas;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (gdiTextView != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="color:black;"&gt;&lt;span style="font-family:Consolas;"&gt;&amp;nbsp; gdiTextView.Repaint();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="color:black;"&gt;&lt;span style="font-family:Consolas;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="color:black;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;CR_NCover&lt;br /&gt;&lt;/strong&gt;Could not locate the assembly &amp;quot;&lt;strong&gt;Typemock.ArrangeActAssert&lt;/strong&gt;, Version=5.3.1.0, Culture=neutral, PublicKeyToken=3dae460033b8d8e2, processorArchitecture=MSIL&amp;quot;.&lt;/p&gt;
&lt;p&gt;It also needs &lt;strong&gt;DevExpress.DXCore.Parser &lt;/strong&gt;and &lt;strong&gt;DevExpress.DXCore.Platform&lt;/strong&gt; references.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CR_ExtractHqlNamedQuery&lt;/strong&gt;&lt;br /&gt;Specific Version needs to be set to False for all DXCore assemblies&lt;br /&gt;Needs references to DevExpress.DXCore.Controls.Utils.v6.3 and DevExpress.DXCore.Parser.&lt;br /&gt;Also, the &lt;strong&gt;findFileInSolution &lt;/strong&gt;method needs this change:&lt;/p&gt;
&lt;ul&gt;
&lt;blockquote&gt;     &lt;/blockquote&gt;&lt;span style="font-family:Consolas;"&gt;&lt;span style="color:#008080;"&gt;SolutionElement&lt;/span&gt; solution = currentProject.Solution &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; &lt;span style="color:#008080;"&gt;SolutionElement&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="font-family:Consolas;"&gt;&lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; project &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; solution.AllProjects)&lt;/span&gt;&lt;/p&gt;
&lt;/ul&gt;
&lt;p&gt;And this:&lt;/p&gt;
&lt;ul&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="font-family:Consolas;"&gt;&lt;span style="color:#008080;"&gt;SourceFile&lt;/span&gt; namedQueriesXmlFile = getNamedQueriesXmlFile(hqlQueryElement.Project as &lt;span style="color:#008080;"&gt;ProjectElement&lt;/span&gt;);           &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="font-family:Consolas;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/ul&gt;
&lt;h1&gt;Working to Make this Better&lt;/h1&gt;
&lt;p&gt;Both Rory Becker (CodeRush evangelist) and the CodeRush team are working right now to update the plug-ins at the community site. If you&amp;rsquo;re an author of one of these plug-ins, I encourage you to update your source code using the hints on this page (it might be a good idea to check first to make sure the fix hasn&amp;rsquo;t already been submitted). I want to thank you for your patience and support as we go through the 50+ plug-ins and update them accordingly. In the future as we prepare to release, the CodeRush team will check the new build against all the plug-ins on the community site and if there are any issues, we&amp;rsquo;ll either change things on our side or connect with the plug-in author and get them to change their code before we ship. &lt;/p&gt;
&lt;p&gt;Our commitment is to a strong plug-in community. We will invest whatever it takes to support the plug-in community and make transitions to future versions as painless as possible.&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=336648" width="1" height="1"&gt;</description></item><item><title>WPF &amp; Silverlight Grids – Faster Creation Using CodeRush Templates and a Custom Plug-in</title><link>http://community.devexpress.com/blogs/markmiller/archive/2011/01/06/wpf-amp-silverlight-grids-faster-creation-using-coderush-templates-and-a-custom-plug-in.aspx</link><pubDate>Thu, 06 Jan 2011 14:00:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:332352</guid><dc:creator>Mark Miller (DevExpress)</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.devexpress.com/blogs/markmiller/rsscomments.aspx?PostID=332352</wfw:commentRss><comments>http://community.devexpress.com/blogs/markmiller/archive/2011/01/06/wpf-amp-silverlight-grids-faster-creation-using-coderush-templates-and-a-custom-plug-in.aspx#comments</comments><description>&lt;p&gt;A few days ago a customer asked for a faster way to create WPF and Silverlight grids. &lt;a href="http://www.devexpress.com/rory" target="_blank"&gt;Rory Becker&lt;/a&gt; and I recorded a video showing how to create this feature in CodeRush. Rory and I discuss and build the feature in about 30 minutes.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the final version of the feature in action (the mnemonic is &amp;ldquo;g&amp;rdquo; followed by the dimensions of the grid, so &amp;ldquo;g2x3&amp;rdquo; creates a 2x3 grid):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/markmiller/GridTemplateExpansion_35BE4D7A.gif"&gt;&lt;img style="display:inline;" title="GridTemplateExpansion" alt="GridTemplateExpansion" src="http://community.devexpress.com/blogs/markmiller/GridTemplateExpansion_thumb_0547C904.gif" width="548" height="628" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the video Rory and I show how we built this feature step-by-step. We create a template and add a custom plug-in to make the template more dynamic and intelligent. You can follow along with the video to create this yourself and learn about templates and plug-ins, or you can follow the download instructions below if you simply want the feature. Here&amp;rsquo;s the &lt;a href="http://tv.devexpress.com/#CRLoopTextCommand"&gt;video&lt;/a&gt; (be sure to watch it through to the end &amp;ndash; I added a video update where I improved the template to make it even easier to use):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://tv.devexpress.com/#CRLoopTextCommand"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="BuildingGridsFasterVideoLink2" border="0" alt="BuildingGridsFasterVideoLink2" src="http://community.devexpress.com/blogs/markmiller/BuildingGridsFasterVideoLink2_304D439B.png" width="491" height="298" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Installing the Smart Grid Templates&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Right-click and download this &lt;a href="http://community.devexpress.com/blogs/markmiller/Templates/XAML_SmartGrid.xml" target="_blank"&gt;Smart Grid templates&lt;/a&gt; link. &lt;/li&gt;
&lt;li&gt;Start Visual Studio. &lt;/li&gt;
&lt;li&gt;From the &lt;strong&gt;DevExpress &lt;/strong&gt;menu, select &lt;strong&gt;Options&lt;/strong&gt;. &lt;/li&gt;
&lt;li&gt;Inside the &lt;strong&gt;Editor &lt;/strong&gt;folder, select the &lt;strong&gt;Templates &lt;/strong&gt;options page. &lt;/li&gt;
&lt;li&gt;&lt;span style="color:#800000;"&gt;IMPORTANT: &lt;/span&gt;In the &lt;strong&gt;Language&lt;/strong&gt; combo box at the bottom of the Options page, make sure &lt;strong&gt;XAML&lt;/strong&gt; is selected:       &lt;br /&gt;      &lt;br /&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="LanguageXaml" border="0" alt="LanguageXaml" src="http://community.devexpress.com/blogs/markmiller/LanguageXaml_50C6F6BB.png" width="173" height="41" /&gt;       &lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Right-click&lt;/strong&gt; the template tree list and choose &lt;strong&gt;Import Templates&amp;hellip;&lt;/strong&gt;.       &lt;br /&gt;      &lt;br /&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Import Templates" border="0" alt="Import Templates" src="http://community.devexpress.com/blogs/markmiller/Import-Templates_6956940B.png" width="565" height="407" /&gt;       &lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Navigate to the folder where you downloaded the Smart Grid templates. Select &lt;a href="http://community.devexpress.com/blogs/markmiller/Templates/XAML_SmartGrid.xml"&gt;&lt;strong&gt;XAML_SmartGrid.xml&lt;/strong&gt;&lt;/a&gt; and click &lt;strong&gt;Open&lt;/strong&gt;. The smart grid templates will appear inside the template tree list.       &lt;br /&gt;      &lt;br /&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SmartGridTemplatesImported" border="0" alt="SmartGridTemplatesImported" src="http://community.devexpress.com/blogs/markmiller/SmartGridTemplatesImported_4143E4EC.png" width="158" height="76" /&gt;       &lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; to close the Options dialog. &lt;/li&gt;
&lt;li&gt;From the &lt;strong&gt;DevExpress &lt;/strong&gt;menu, selection &lt;strong&gt;About&amp;hellip;&lt;/strong&gt;. The DXCore About box will appear.       &lt;br /&gt;      &lt;br /&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="DXCoreAbout" border="0" alt="DXCoreAbout" src="http://community.devexpress.com/blogs/markmiller/DXCoreAbout_5355EF44.png" width="553" height="485" /&gt;       &lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;Settings&amp;hellip;&lt;/strong&gt; button. A &lt;strong&gt;Windows Explorer &lt;/strong&gt;window will appear. &lt;/li&gt;
&lt;li&gt;Navigate to the &lt;strong&gt;Settings.xml\Core&lt;/strong&gt; folder inside Explorer. &lt;/li&gt;
&lt;li&gt;Download and save the &lt;a href="http://community.devexpress.com/blogs/markmiller/Dynamic%20Lists/Dynamic%20Lists_Numbers.xml" target="_blank"&gt;Numbers&lt;/a&gt; dynamic list to this folder. &lt;/li&gt;
&lt;li&gt;Back on the &lt;strong&gt;DXCore About box&lt;/strong&gt;, click the &lt;strong&gt;Plug-ins&amp;hellip; &lt;/strong&gt;button. This will open two more &lt;strong&gt;Windows Explorer &lt;/strong&gt;windows (&lt;strong&gt;Bin\PlugIns&lt;/strong&gt; and &lt;strong&gt;Community\PlugIns&lt;/strong&gt;). Download and save the &lt;/li&gt;
&lt;li&gt;Download and unzip the &lt;a href="http://community.devexpress.com/blogs/markmiller/PlugIns/CR_Loop.zip"&gt;CR_Loop binary&lt;/a&gt; to the &lt;strong&gt;Bin\PlugIns&lt;/strong&gt; folder (latest CR_Loop source is &lt;a href="http://code.google.com/p/dxcorecommunityplugins/wiki/CR_Loop"&gt;here&lt;/a&gt; if you&amp;rsquo;re interested). &lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;OK &lt;/strong&gt;on the &lt;strong&gt;DXCore About box.&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restart Visual Studio&lt;/strong&gt;. &lt;/li&gt;
&lt;/ol&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=332352" width="1" height="1"&gt;</description></item><item><title>Mads Torgersen on the Future of C# and the New Async Keyword</title><link>http://community.devexpress.com/blogs/markmiller/archive/2011/01/05/mads-torgersen-on-the-future-of-c-and-the-new-async-keyword.aspx</link><pubDate>Wed, 05 Jan 2011 21:35:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:332452</guid><dc:creator>Mark Miller (DevExpress)</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.devexpress.com/blogs/markmiller/rsscomments.aspx?PostID=332452</wfw:commentRss><comments>http://community.devexpress.com/blogs/markmiller/archive/2011/01/05/mads-torgersen-on-the-future-of-c-and-the-new-async-keyword.aspx#comments</comments><description>&lt;p&gt;I had the pleasure of interviewing Mads Torgersen, product manager for the C# language at Microsoft. Mads talks about the new &lt;strong&gt;async &lt;/strong&gt;and &lt;strong&gt;await &lt;/strong&gt;keywords coming in C# 5.0, the criteria behind C# design choices, and C# futures.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://tv.devexpress.com/#MadsTorgersen"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="MadsTorgersenInterview" border="0" alt="MadsTorgersenInterview" src="http://community.devexpress.com/blogs/markmiller/MadsTorgersenInterview_54F360D1.png" width="658" height="404" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=332452" width="1" height="1"&gt;</description></item><item><title>Upcoming CodeRush Webinars</title><link>http://community.devexpress.com/blogs/markmiller/archive/2011/01/04/upcoming-coderush-webinars.aspx</link><pubDate>Tue, 04 Jan 2011 18:42:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:332357</guid><dc:creator>Mark Miller (DevExpress)</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.devexpress.com/blogs/markmiller/rsscomments.aspx?PostID=332357</wfw:commentRss><comments>http://community.devexpress.com/blogs/markmiller/archive/2011/01/04/upcoming-coderush-webinars.aspx#comments</comments><description>&lt;p&gt;Join us every Tuesday at 12:00pm Pacific time for an in-depth dive into CodeRush with Mark Miller and Rory Becker. Here&amp;#39;s what we have coming up:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#3e5dc1;"&gt;4 Jan 2011&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="https://www3.gotomeeting.com/register/524692166" target="_blank"&gt;Navigation with CodeRush&lt;/a&gt;&lt;br /&gt;&lt;/strong&gt;Mark Miller and Rory Becker reveal powerful CodeRush features that help you get to where you want to be, featuring Quick Nav, Recent Files, Bookmarks, Markers, Structural Navigation, Tab to Next Reference, Jumping to Member Overrides, Base Types, Interface Implementers, Camel Case navigation and more.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#3e5dc1;"&gt;11 Jan 2011&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;a href="https://www3.gotomeeting.com/register/133252958" target="_blank"&gt;Consume-first Declaration with CodeRush&lt;/a&gt;&lt;br /&gt;&lt;/strong&gt;Mark Miller and Rory Becker show how to write consumption code first (which can improve the quality of your API), and then use CodeRush to generate and fill in the missing pieces.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-weight:normal;font-size:14px;color:#3e5dc1;"&gt;18 Jan 2011&lt;br /&gt;&lt;/span&gt;&lt;a href="https://www3.gotomeeting.com/register/991001414" target="_blank"&gt;Declaring and Refactoring Properties with CodeRush&lt;/a&gt;&lt;br /&gt;&lt;/strong&gt;Mark Miller and Rory Becker reveal everything you need to know about working with properties in CodeRush.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-weight:normal;font-size:14px;color:#3e5dc1;"&gt;25 Jan 2011&lt;br /&gt;&lt;/span&gt;&lt;a href="https://www3.gotomeeting.com/register/545606270" target="_blank"&gt;Declaring and Refactoring Events with CodeRush&lt;/a&gt;&lt;br /&gt;&lt;/strong&gt;Mark Miller and Rory Becker reveal everything you need to know about working with events in CodeRush.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=332357" width="1" height="1"&gt;</description></item><item><title>Visual Studio’s Greatest Test Runner? Take a Look at CodeRush 10.2</title><link>http://community.devexpress.com/blogs/markmiller/archive/2010/12/15/visual-studio-s-greatest-test-runner-take-a-look-at-coderush-10-2.aspx</link><pubDate>Wed, 15 Dec 2010 22:22:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:330243</guid><dc:creator>Mark Miller (DevExpress)</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.devexpress.com/blogs/markmiller/rsscomments.aspx?PostID=330243</wfw:commentRss><comments>http://community.devexpress.com/blogs/markmiller/archive/2010/12/15/visual-studio-s-greatest-test-runner-take-a-look-at-coderush-10-2.aspx#comments</comments><description>&lt;p&gt;CodeRush 10.2 was released last week and the Test Runner that ships inside appears to be the greatest Test Runner available for .NET development.&lt;/p&gt;
&lt;p&gt;So before I show you why the CodeRush Test Runner is the best, let&amp;rsquo;s first consider the criteria by which we might judge greatness. I suggest greatness can be measured in one or more of the following:&lt;/p&gt;
&lt;li&gt;&lt;b&gt;Native support &lt;/b&gt;for your test frameworks &lt;/li&gt;
&lt;li&gt;Ability to &lt;b&gt;run unit tests quickly&lt;/b&gt; &lt;/li&gt;
&lt;li&gt;A user interface prioritizing &lt;b&gt;clarity over noise&lt;/b&gt; &lt;/li&gt;
&lt;li&gt;Ability to &lt;b&gt;run and debug a single test&lt;/b&gt; &lt;/li&gt;
&lt;p&gt;If you can think of important criteria that isn&amp;rsquo;t listed above please let me know in a comment below. However, if your criteria for greatness &lt;i&gt;&lt;b&gt;is &lt;/b&gt;&lt;/i&gt;listed above, we have really good news for you: The CodeRush Test Runner is going to impress you.&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;Native Test Framework Support&lt;/h2&gt;
&lt;p&gt;The CodeRush Test Runner natively supports NUnit, MSTest, xUnit, MbUnit and Silverlight. Native support means CodeRush fully supports each framework, so new extensions and new features added to the framework can be exploited immediately without needing an update from DevExpress. No other test runner out there has built-in native support for all these testing frameworks.&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;Performance&lt;/h2&gt;
&lt;p&gt;The CodeRush Test Runner is the fastest test runner available for .NET. With our new multi-threaded run option, you can run tests in multiple assemblies in separate threads, resulting in a test run that is &lt;b&gt;up to three times as fast &lt;/b&gt;as the competition.&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="TestRunCompareTime3" alt="TestRunCompareTime3" src="http://community.devexpress.com/blogs/markmiller/TestRunCompareTime3_20B861DD.png" width="724" border="0" height="359" /&gt;&lt;/p&gt;
&lt;p&gt;Like waiting? You don&amp;rsquo;t have to. CodeRush finishes your multi-assembly test run up to three times faster.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Run &amp;amp; Debug a Single Test&lt;/h2&gt;
&lt;p&gt;Seems like a simple request, but being able to run and debug a single test is important, especially to Silverlight developers. &lt;b&gt;CodeRush is currently the only unit test framework that lets you run or debug a single test in all frameworks supported, including Silverlight. &lt;/b&gt;Not even Visual Studio&amp;rsquo;s built-in test runner can do this.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Clarity in the User Interface&lt;/h2&gt;
&lt;p&gt;The CodeRush Test Runner user interface delivers more clarity and less noise than any of the competing test runners, helping you see essential information quickly. &lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the output of a failed test in CodeRush:&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="CodeRushTestRunnerResultsLineView" alt="CodeRushTestRunnerResultsLineView" src="http://community.devexpress.com/blogs/markmiller/CodeRushTestRunnerResultsLineView_18548C86.png" width="598" border="0" height="109" /&gt;&lt;/p&gt;
&lt;p&gt;Differences between expected and actual values are highlighted automatically.&lt;/p&gt;
&lt;p&gt;Redundant details (e.g., &amp;ldquo;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#1f497d;font-size:11pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:en-us;mso-fareast-language:en-us;mso-bidi-language:ar-sa;"&gt;String lengths are both 28. Strings differ at index 4.&lt;/span&gt;&amp;rdquo;) are removed to reduce noise and enhance clarity. &lt;b&gt;CodeRush is the only test runner that visually highlights differences &lt;/b&gt;between expected and actual results like this. &lt;/p&gt;
&lt;p&gt;If you right-click the debug output&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="TestRunnerMenu" alt="TestRunnerMenu" src="http://community.devexpress.com/blogs/markmiller/TestRunnerMenu_62ED80D3.png" width="322" border="0" height="211" /&gt;&lt;/p&gt;
&lt;p&gt;you can change the call stack display from &lt;b&gt;line view&lt;/b&gt; to &lt;b&gt;tree view&lt;/b&gt;, which groups methods by parenting class, like this:&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="CodeRushTestRunnerResultsTreeView" alt="CodeRushTestRunnerResultsTreeView" src="http://community.devexpress.com/blogs/markmiller/CodeRushTestRunnerResultsTreeView_5A1D7887.png" width="490" border="0" height="149" /&gt;&lt;/p&gt;
&lt;p&gt;You may find this call stack view more interesting as methods are grouped by owning class. &lt;/p&gt;
&lt;p&gt;You can change the syntax highlight colors in the DevExpress Options dialog on the Unit Testing\Test Runner Window options page: &lt;/p&gt;
&lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px 0px 0px 19px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="OptionsUnitTesting" alt="OptionsUnitTesting" src="http://community.devexpress.com/blogs/markmiller/OptionsUnitTesting_34475224.png" width="656" border="0" height="560" /&gt;&lt;/p&gt;
&lt;p&gt;Note: If you don&amp;rsquo;t see this options page, change the &lt;b&gt;Level&lt;/b&gt; combo box from &amp;quot;New User&amp;rdquo; to &amp;ldquo;&lt;b&gt;Advanced&lt;/b&gt;&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="AdvancedLevel" alt="AdvancedLevel" src="http://community.devexpress.com/blogs/markmiller/AdvancedLevel_2B0B16E3.png" width="340" border="0" height="105" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Compare Results with the Competition&lt;/h2&gt;
&lt;p&gt;Compare the readability of the CodeRush Test Runner results with similar results from competing test runners.&lt;/p&gt;
&lt;p&gt; &lt;span style="color:#89233d;"&gt;&lt;font color="#009525"&gt;
&lt;h3&gt;&lt;font color="#009525"&gt;&lt;font color="#0000ff"&gt;Competitor #1: &lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="TestDrivenDotNetResults2" alt="TestDrivenDotNetResults2" src="http://community.devexpress.com/blogs/markmiller/TestDrivenDotNetResults2_6DB8ABA8.png" width="779" border="0" height="200" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This competing test runner (shown above) does not ship a test result tool window for Visual Studio, so test results can only be viewed through the Output window (the CodeRush Test Runner can send output here as well if needed). Note that only the &lt;b&gt;first &lt;/b&gt;change is shown (the letter &amp;ldquo;&lt;b&gt;f&lt;/b&gt;&amp;rdquo; in &amp;ldquo;fox&amp;rdquo;). Subsequent differences (e.g., &amp;ldquo;&lt;b&gt;dog&lt;/b&gt;&amp;rdquo; vs. &amp;ldquo;&lt;b&gt;log&lt;/b&gt;&amp;rdquo;) are much harder to see and must be determined by visually scanning and comparing the results.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#89233d;"&gt;&lt;font color="#009525"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="color:#89233d;"&gt;Competitor #2:&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt; &lt;span style="color:#89233d;"&gt;
&lt;h3&gt;&lt;/h3&gt;
&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="resharperResult2" alt="resharperResult2" src="http://community.devexpress.com/blogs/markmiller/resharperResult2_1C7E644B.png" width="637" border="0" height="207" /&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This competitor makes the most important information harder to read by including redundant details (e.g., &amp;ldquo;String lengths are both 28&amp;rdquo;) in the results. Paradoxically, the &lt;b&gt;essential information &lt;/b&gt;is rendered in black text on a gray background. Contrast for important information needs to be higher so it&amp;rsquo;s easy to see. And just like competitor #1, only the &lt;b&gt;first difference &lt;/b&gt;is shown.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt; &lt;span style="color:#008000;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="color:#009525;"&gt;Competitor #3: &lt;/span&gt;&lt;span style="color:#009525;"&gt;     &lt;br /&gt;&lt;/span&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="JustCodeResults2" alt="JustCodeResults2" src="http://community.devexpress.com/blogs/markmiller/JustCodeResults2_3151ED71.png" width="641" border="0" height="238" /&gt;&lt;/h3&gt;
&lt;p&gt;This competitor shows the results in a variable-width font, so the difference indicator actually points to the &lt;b&gt;wrong character &lt;/b&gt;(e.g., the &amp;ldquo;h&amp;rdquo; in &amp;ldquo;The&amp;rdquo; &amp;ndash; but there&amp;rsquo;s no difference there). Also, this competitor &lt;b&gt;wraps &lt;/b&gt;the results in the window, which can make reading the call stack more challenging.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Here is the result from CodeRush Test Runner again:&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="CodeRushTestRunnerResultsLineView" alt="CodeRushTestRunnerResultsLineView" src="http://community.devexpress.com/blogs/markmiller/CodeRushTestRunnerResultsLineView_18548C86.png" width="598" border="0" height="109" /&gt;&lt;/p&gt;
&lt;p&gt;Which presentation do you prefer to read?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;In-source Test Result Icons&lt;/h2&gt;
&lt;p&gt;CodeRush also makes it easier to work with tests in the source code, with test result icons appearing next to each test case. In the screenshot below, the first test has not run yet (&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="TestTube" alt="TestTube" src="http://community.devexpress.com/blogs/markmiller/TestTube_43D0D23B.png" width="20" border="0" height="16" /&gt;), however the next two tests have run, one passing (&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="TestPassed" alt="TestPassed" src="http://community.devexpress.com/blogs/markmiller/TestPassed_4E21F69B.png" width="20" border="0" height="16" /&gt;) and the other failing (&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="TestFailed" alt="TestFailed" src="http://community.devexpress.com/blogs/markmiller/TestFailed_2D9AB6E9.png" width="20" border="0" height="16" /&gt;):&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="TestMethodIcons" alt="TestMethodIcons" src="http://community.devexpress.com/blogs/markmiller/TestMethodIcons_3A9496FA.png" width="853" border="0" height="431" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If your hand is on the mouse, you can click the icon to bring up a test case menu, which allows you to run or debug that test.&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="TestCaseMenu" alt="TestCaseMenu" src="http://community.devexpress.com/blogs/markmiller/TestCaseMenu_4B98C4DD.png" width="846" border="0" height="117" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Test fixtures &amp;amp; namespaces containing unit tests have icons summarizing the run results of their contents. For example, the namespace below and the test fixture both have a red &amp;ldquo;X&amp;rdquo; (&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="TestFailed" alt="TestFailed" src="http://community.devexpress.com/blogs/markmiller/TestFailed_2D9AB6E9.png" width="20" border="0" height="16" /&gt;), indicating they contain at least one test which has failed:&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="TestCaseParents" alt="TestCaseParents" src="http://community.devexpress.com/blogs/markmiller/TestCaseParents_51736876.png" width="561" border="0" height="206" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you hover the mouse over one of these test fixture icons, you can see a summary of results for unit tests in this class.&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="TestRunSummary" alt="TestRunSummary" src="http://community.devexpress.com/blogs/markmiller/TestRunSummary_574E0C0F.png" width="266" border="0" height="127" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you click one of these test fixture or test namespace icons, a popup menu appears that allows you to run or debug all tests contained within.&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="RunAllContainedTests" alt="RunAllContainedTests" src="http://community.devexpress.com/blogs/markmiller/RunAllContainedTests_16ABBFA0.png" width="272" border="0" height="140" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If your hands are on the keyboard, don&amp;rsquo;t worry &amp;ndash; CodeRush gives you powerful commands to run test cases without reaching for the mouse.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Full Keyboard Control&lt;/h2&gt;
&lt;p&gt;CodeRush offers full keyboard control over your test runs from inside Visual Studio. The keyboard shortcuts for running tests that ship with 10.2:&lt;/p&gt;
&lt;p&gt;   
&lt;table cellpadding="0" cellspacing="0"&gt;

&lt;tr&gt;
&lt;td&gt;&lt;span style="color:#2c3087;"&gt;&lt;b&gt;Shortcut&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;span style="color:#2c3087;"&gt;&lt;b&gt;Behavior&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ctrl+T, S&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;Run all tests in the solution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ctrl+T, P&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;Run all tests in the active project&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ctrl+T, F&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;Run all tests in the active file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ctrl+T, R&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;Run active test&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ctrl+T, D&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;Debug active test&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ctrl+T, T&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;Show the CodeRush Test Runner&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;If you prefer the Visual Studio shortcuts, CodeRush ships an alternate collection of bindings reflecting those commands. You can change the bindings for any of these commands if you like.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;What&amp;rsquo;s Coming in 2011&lt;/h2&gt;
&lt;p&gt;OK, so we just shipped 10.2, so it seems a bit crazy to tell you what&amp;rsquo;s coming in 11.1. But, you know, things get a little crazy over here at DevExpress from time to time. Our intention is to continue to maintain test runner dominance among all .NET alternatives, including Visual Studio. With that in mind, we will add support for even more testing frameworks, add more commands for controlling which test cases to run, and we&amp;rsquo;re working on improving visualization of code coverage, as well as a bigger feature we are going to save for later discussions.&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=330243" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/markmiller/archive/tags/v2010.2/default.aspx">v2010.2</category><category domain="http://community.devexpress.com/blogs/markmiller/archive/tags/TestRunner/default.aspx">TestRunner</category><category domain="http://community.devexpress.com/blogs/markmiller/archive/tags/CodeRush/default.aspx">CodeRush</category></item><item><title>Minority Report Meets Visual Studio</title><link>http://community.devexpress.com/blogs/markmiller/archive/2010/12/14/minority-report-meets-visual-studio.aspx</link><pubDate>Tue, 14 Dec 2010 23:34:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:330691</guid><dc:creator>Mark Miller (DevExpress)</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.devexpress.com/blogs/markmiller/rsscomments.aspx?PostID=330691</wfw:commentRss><comments>http://community.devexpress.com/blogs/markmiller/archive/2010/12/14/minority-report-meets-visual-studio.aspx#comments</comments><description>&lt;p&gt;One of the cool things I get to do here at DevExpress is explore new technologies to interface humans with machines, and more specifically, developers with their code. In the past you&amp;rsquo;ve seen us write code with chopsticks, super models, guitars, and our minds. With the release of Microsoft&amp;rsquo;s Kinect, we knew it wouldn&amp;rsquo;t be long before we&amp;rsquo;d be working on an interface for Visual Studio to let you write code with your hands, Minority Report style.&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="SelectPreview" border="0" alt="SelectPreview" src="http://community.devexpress.com/blogs/markmiller/SelectPreview_11C21415.png" width="435" height="670" /&gt;&lt;/p&gt;
&lt;p&gt;Navigating, coding, declaring, refactoring, testing &amp;ndash; you&amp;rsquo;ll do it all with your hands. As with everything else we build here at DevExpress, our intention is to craft a great user interface around this technology. An experience that&amp;#39;s as efficient at writing code as using the keyboard and mouse. And we expect to make the source code available so you&amp;rsquo;ll be able to play with it yourself.&lt;/p&gt;
&lt;p&gt;Don&amp;#39;t be surprised if you see this at a major developer conference in the very near future. Stay tuned.&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=330691" width="1" height="1"&gt;</description></item><item><title>Science of Great UI &amp; Windows Phone 7</title><link>http://community.devexpress.com/blogs/markmiller/archive/2010/11/05/science-of-great-ui-amp-windows-phone-7.aspx</link><pubDate>Sat, 06 Nov 2010 00:55:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:326397</guid><dc:creator>Mark Miller (DevExpress)</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.devexpress.com/blogs/markmiller/rsscomments.aspx?PostID=326397</wfw:commentRss><comments>http://community.devexpress.com/blogs/markmiller/archive/2010/11/05/science-of-great-ui-amp-windows-phone-7.aspx#comments</comments><description>&lt;p&gt;The Windows Phone 7 release is imminent. Here are screenshots of two versions of the start page tiles:&lt;/p&gt;
&lt;p&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="Originals" border="0" alt="Originals" src="http://community.devexpress.com/blogs/markmiller/Originals_71B61B17.png" width="498" height="412" /&gt; &lt;/p&gt;
&lt;p&gt;When I first saw this screenshot I noticed a few variances from the guidelines presented in my &lt;a href="http://tv.devexpress.com/#ScienceOfGreatUIWebinar" target="_blank"&gt;Science of Great UI&lt;/a&gt; talk. &lt;/p&gt;
&lt;p&gt;One of the things I mention in my talk is that everything presented onscreen is information (everything &amp;ndash; data, background, borders, etc.), and not all information has the same relevance. Since our eyes are attracted to great contrast, relevant information should be rendered in a higher contrast than less important information.&lt;/p&gt;
&lt;p&gt;When I look at the screenshots above, my eyes are primarily attracted to the large black &amp;ldquo;+&amp;rdquo; sign formed by the proximity of the top four tiles (in bright amber or blue) over the black background. The sharp edges of the borders attract my eyes. After that the bright tiles themselves attract my eyes. However the data that varies inside the tiles (presumably the important information), is rendered in a much lower contrast &amp;ndash; white on a highly saturated light background.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s my redesign of the front page, using the guidelines from the Science of Great UI session:&lt;/p&gt;
&lt;p&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="Redesign" border="0" alt="Redesign" src="http://community.devexpress.com/blogs/markmiller/Redesign_21FCEFCE.png" width="498" height="412" /&gt; &lt;/p&gt;
&lt;p&gt;Here you can see I&amp;rsquo;m placing a higher emphasis on the actual data inside the tiles, and a lower emphasis on the tile background itself. Also, I&amp;rsquo;ve softened the edges of the tiles with a subtle gradient to lower their contrast against the black background. I&amp;rsquo;ve increased the size of the time &amp;ndash; an important piece of information that is now easier to see. And since we&amp;rsquo;re showing the time, I added the day and date as well near the top. The final change was a redesign of the high-contrast button (the arrow pointing to the right).&lt;/p&gt;
&lt;p&gt;Here are the original (on the left) and the redesign (on the right):&lt;/p&gt;
&lt;p&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="SideBySide" border="0" alt="SideBySide" src="http://community.devexpress.com/blogs/markmiller/SideBySide_5558B32A.png" width="498" height="412" /&gt; &lt;/p&gt;
&lt;p&gt;What do you think?&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=326397" width="1" height="1"&gt;</description></item></channel></rss>
