<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss1full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:cc="http://web.resource.org/cc/" xmlns="http://purl.org/rss/1.0/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">

<channel rdf:about="http://bradwilson.typepad.com/blog/">
<title>Brad Wilson</title>
<link>http://bradwilson.typepad.com/blog/</link>
<description>Technologist. Agile Evangelist. Poker Player. Amateur Neologist. Metalhead.</description>
<dc:language>en-US</dc:language>
<dc:creator />
<dc:date>2008-11-18T13:03:29-06:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.typepad.com/" />


<items>
<rdf:Seq><rdf:li rdf:resource="tag:flickr.com,2005:/photo/3040922577" /><rdf:li rdf:resource="tag:flickr.com,2005:/photo/3004253424" /><rdf:li rdf:resource="tag:flickr.com,2005:/photo/3003417407" /><rdf:li rdf:resource="http://bradwilson.typepad.com/blog/2008/10/c-anonymous-object-tip.html" />
<rdf:li rdf:resource="http://bradwilson.typepad.com/blog/2008/10/breaking-change.html" />
<rdf:li rdf:resource="http://bradwilson.typepad.com/blog/2008/10/meme-time-growi.html" />
<rdf:li rdf:resource="tag:flickr.com,2005:/photo/2901807831" /><rdf:li rdf:resource="http://bradwilson.typepad.com/blog/2008/09/friday-fill-ins.html" />
<rdf:li rdf:resource="http://bradwilson.typepad.com/blog/2008/09/xunitnet-103-re.html" />
<rdf:li rdf:resource="http://bradwilson.typepad.com/blog/2008/08/htmlrenderparti.html" />
<rdf:li rdf:resource="http://bradwilson.typepad.com/blog/2008/08/partial-renderi.html" />
<rdf:li rdf:resource="http://bradwilson.typepad.com/blog/2008/08/xunitnet-102-re.html" />
<rdf:li rdf:resource="http://bradwilson.typepad.com/blog/2008/08/xunitnet-suppor.html" />
<rdf:li rdf:resource="http://bradwilson.typepad.com/blog/2008/08/presentation-sl.html" />
<rdf:li rdf:resource="tag:flickr.com,2005:/photo/2656832412" /></rdf:Seq>
</items>

<geo:lat>47.677471</geo:lat><geo:long>-122.121383</geo:long><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FBradWilson" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FBradWilson" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FBradWilson" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/BradWilson" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FBradWilson" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FBradWilson" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FBradWilson" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><geo:lat>47.677471</geo:lat><geo:long>-122.121383</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/BradWilson-ThenetGuy" type="application/rss+xml" /></channel>

<item rdf:about="tag:flickr.com,2005:/photo/3040922577"><title>OOF? [Flickr]</title><link>http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~3/457524816/</link><dc:subject>rss</dc:subject><dc:subject>microsoft</dc:subject><dc:subject>oof</dc:subject><dc:creator>Brad Wilson</dc:creator><dc:date>2008-11-18T13:03:29-06:00</dc:date><description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/dotnetguy/"&gt;Brad Wilson&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/dotnetguy/3040922577/" title="OOF?"&gt;&lt;img src="http://farm4.static.flickr.com/3135/3040922577_7d30e766e0_m.jpg" width="240" height="180" alt="OOF?" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Long before I joined Microsoft, the standard term for being away from your office was &amp;quot;OOF&amp;quot; (out of facility), rather than the traditional &amp;quot;OOO&amp;quot; (out of office).&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BradWilson/~4/457503654" height="1" width="1"/&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=kONvN"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=kONvN" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=7msBN"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=7msBN" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=WoUxN"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=WoUxN" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=rL0Wn"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=rL0Wn" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~4/457524816" height="1" width="1"/&gt;</description><dc:date.Taken>2008-11-15T00:28:46-08:00</dc:date.Taken><feedburner:origLink>http://www.flickr.com/photos/dotnetguy/3040922577/</feedburner:origLink><feedburner:origLink>http://feeds.feedburner.com/~r/BradWilson/~3/457503654/</feedburner:origLink></item><item rdf:about="tag:flickr.com,2005:/photo/3040922577"><title>OOF? [Flickr]</title><link>http://www.flickr.com/photos/dotnetguy/3040922577/</link><dc:subject>rss</dc:subject><dc:subject>microsoft</dc:subject><dc:subject>oof</dc:subject><dc:creator>Brad Wilson</dc:creator><dc:date>2008-11-18T13:03:29-06:00</dc:date><description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/dotnetguy/"&gt;Brad Wilson&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/dotnetguy/3040922577/" title="OOF?"&gt;&lt;img src="http://farm4.static.flickr.com/3135/3040922577_7d30e766e0_m.jpg" width="240" height="180" alt="OOF?" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Long before I joined Microsoft, the standard term for being away from your office was &amp;quot;OOF&amp;quot; (out of facility), rather than the traditional &amp;quot;OOO&amp;quot; (out of office).&lt;/p&gt;</description><dc:date.Taken>2008-11-15T00:28:46-08:00</dc:date.Taken></item><item rdf:about="tag:flickr.com,2005:/photo/3004253424"><title>My Desk at Work [Flickr]</title><link>http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~3/442665074/</link><dc:subject>work</dc:subject><dc:subject>rss</dc:subject><dc:creator>Brad Wilson</dc:creator><dc:date>2008-11-04T18:13:52-06:00</dc:date><description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/dotnetguy/"&gt;Brad Wilson&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/dotnetguy/3004253424/" title="My Desk at Work"&gt;&lt;img src="http://farm4.static.flickr.com/3042/3004253424_a5b3c8af29_m.jpg" width="240" height="180" alt="My Desk at Work" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I haven't taken a desk picture in a while... this one's a little boring compared to the last, but I figured I'd take it anyway. :)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BradWilson/~4/442663835" height="1" width="1"/&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=0UAQN"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=0UAQN" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=O5qEN"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=O5qEN" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=ZbzjN"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=ZbzjN" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=vyBun"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=vyBun" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~4/442665074" height="1" width="1"/&gt;</description><dc:date.Taken>2008-11-04T16:13:52-08:00</dc:date.Taken><feedburner:origLink>http://www.flickr.com/photos/dotnetguy/3004253424/</feedburner:origLink><feedburner:origLink>http://feeds.feedburner.com/~r/BradWilson/~3/442663835/</feedburner:origLink></item><item rdf:about="tag:flickr.com,2005:/photo/3004253424"><title>My Desk at Work [Flickr]</title><link>http://www.flickr.com/photos/dotnetguy/3004253424/</link><dc:subject>work</dc:subject><dc:subject>rss</dc:subject><dc:creator>Brad Wilson</dc:creator><dc:date>2008-11-04T18:13:52-06:00</dc:date><description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/dotnetguy/"&gt;Brad Wilson&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/dotnetguy/3004253424/" title="My Desk at Work"&gt;&lt;img src="http://farm4.static.flickr.com/3042/3004253424_a5b3c8af29_m.jpg" width="240" height="180" alt="My Desk at Work" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I haven't taken a desk picture in a while... this one's a little boring compared to the last, but I figured I'd take it anyway. :)&lt;/p&gt;</description><dc:date.Taken>2008-11-04T16:13:52-08:00</dc:date.Taken></item><item rdf:about="tag:flickr.com,2005:/photo/3003417407"><title>My Bookshelf at Work [Flickr]</title><link>http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~3/442665075/</link><dc:subject>work</dc:subject><dc:subject>rss</dc:subject><dc:creator>Brad Wilson</dc:creator><dc:date>2008-11-04T18:13:47-06:00</dc:date><description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/dotnetguy/"&gt;Brad Wilson&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/dotnetguy/3003417407/" title="My Bookshelf at Work"&gt;&lt;img src="http://farm4.static.flickr.com/3148/3003417407_2851c9ea11_m.jpg" width="240" height="97" alt="My Bookshelf at Work" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I packed all the tech books I wanted to keep and brought them into work today. I had to steal the hanging bookshelf from my mythical officemate (this week being filled by Dave Reed).&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BradWilson/~4/442663836" height="1" width="1"/&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=bOllN"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=bOllN" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=Y0zEN"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=Y0zEN" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=V8pGN"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=V8pGN" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=JwPLn"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=JwPLn" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~4/442665075" height="1" width="1"/&gt;</description><dc:date.Taken>2008-11-04T16:13:47-08:00</dc:date.Taken><feedburner:origLink>http://www.flickr.com/photos/dotnetguy/3003417407/</feedburner:origLink><feedburner:origLink>http://feeds.feedburner.com/~r/BradWilson/~3/442663836/</feedburner:origLink></item><item rdf:about="tag:flickr.com,2005:/photo/3003417407"><title>My Bookshelf at Work [Flickr]</title><link>http://www.flickr.com/photos/dotnetguy/3003417407/</link><dc:subject>work</dc:subject><dc:subject>rss</dc:subject><dc:creator>Brad Wilson</dc:creator><dc:date>2008-11-04T18:13:47-06:00</dc:date><description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/dotnetguy/"&gt;Brad Wilson&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/dotnetguy/3003417407/" title="My Bookshelf at Work"&gt;&lt;img src="http://farm4.static.flickr.com/3148/3003417407_2851c9ea11_m.jpg" width="240" height="97" alt="My Bookshelf at Work" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I packed all the tech books I wanted to keep and brought them into work today. I had to steal the hanging bookshelf from my mythical officemate (this week being filled by Dave Reed).&lt;/p&gt;</description><dc:date.Taken>2008-11-04T16:13:47-08:00</dc:date.Taken></item><item rdf:about="http://bradwilson.typepad.com/blog/2008/10/c-anonymous-object-tip.html">
<title>C# Anonymous Object Tip</title>
<link>http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~3/421979330/c-anonymous-object-tip.html</link>
<description>I was in the middle of writing a URL helper for the default route in MVC, with this signature: static string Default(this UrlHelper url, string controller, string action, object id) My initial implementation looked like this: static string Default(this UrlHelper...</description>
<content:encoded><![CDATA[<p>I was in the middle of writing a URL helper for the default route in MVC, with this signature:</p>
<pre class="c-sharp:nogutter" name="code">static string Default(this UrlHelper url, string controller, string action, object id)</pre>
<p>My initial implementation looked like this:</p>
<pre class="c-sharp:nogutter" name="code">static string Default(this UrlHelper url, string controller, string action, object id)
{
    return url.RouteUrl("default", new { controller = controller,
                                         action = action,
                                         id = id });
}</pre>
<p>That's when Resharper chimed in and grayed some things out for me, teaching me a new trick: <b>If you want your anonymous object field names to be the same as the value you're passing in, you don't need the name.</b></p>
<p>The abbreviated version looks like this:
<pre class="c-sharp:nogutter" name="code">static string Default(this UrlHelper url, string controller, string action, object id)
{
    return url.RouteUrl("default", new { controller, action, id });
}</pre><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/BradWilson?a=JJ9LM"><img src="http://feeds.feedburner.com/~f/BradWilson?i=JJ9LM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=goMDM"><img src="http://feeds.feedburner.com/~f/BradWilson?i=goMDM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=sKeKM"><img src="http://feeds.feedburner.com/~f/BradWilson?i=sKeKM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=T5ahm"><img src="http://feeds.feedburner.com/~f/BradWilson?i=T5ahm" border="0"></img></a>
 <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=u27JM"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=u27JM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=Z2KFM"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=Z2KFM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=g2DbM"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=g2DbM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=Quhrm"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=Quhrm" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/BradWilson/~4/421979267" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~4/421979330" height="1" width="1"/>]]></content:encoded>


<dc:subject>Technical</dc:subject>

<dc:creator>Brad Wilson</dc:creator>
<dc:date>2008-10-15T14:24:38-07:00</dc:date>
<feedburner:origLink>http://bradwilson.typepad.com/blog/2008/10/c-anonymous-object-tip.html</feedburner:origLink><feedburner:origLink>http://feeds.feedburner.com/~r/BradWilson/~3/421979267/c-anonymous-object-tip.html</feedburner:origLink></item>
<item rdf:about="http://bradwilson.typepad.com/blog/2008/10/breaking-change.html">
<title>(Breaking) Changes Coming in xUnit.net 1.1</title>
<link>http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~3/413202598/breaking-change.html</link>
<description>We're going to be releasing xUnit.net version 1.1 soon, and we wanted to take the opportunity to do a little cleanup work (that will have breaking changes). We're adding the following features: Support for TeamCity; requires:TeamCity v3.1 or later Tests...</description>
<content:encoded><![CDATA[<p>We're going to be releasing xUnit.net version 1.1 soon, and we wanted to take the opportunity to do a little cleanup work (that will have breaking changes).</p>

<p>We're adding the following features:</p>

<ul><li>Support for TeamCity; requires:<ul><li>TeamCity v3.1 or later</li>

<li>Tests linked against xunit.dll v1.1 or later</li>

<li>xunit.console.exe or xunit.runner.msbuild.dll v1.1 or later</li></ul></li>

<li>Higher level version-independent runner APIs (more below).</li></ul>

<p>We're also planning the following breaking changes from v1.0x:</p>

<ul><li>Renaming XunitExt namespace to Xunit.Extensions.</li>

<li>Renaming DLLs:<ul><li>xunitext.dll =&gt; xunit.extensions.dll</li>

<li>xunitext.runner.msbuild.dll =&gt; xunit.runner.msbuild.dll</li>

<li>xunitext.runner.jetbrains.dll =&gt; xunit.runner.resharper.dll</li>

<li>xunitext.runner.tdnet.dll =&gt; xunit.runner.tdnet.dll</li></ul></li>

<li>Dropping the xunitext35.dll project entirely (see more below)</li>

<li>Adding a &lt;start&gt; XML element to the version independent runners (see more below)</li></ul>

<p><strong><u>TeamCity Support</u></strong></p>

<p>The runners will automatically detect when they're running in the context of TeamCity, so no changes are necessary to your automated build files, and you can use the same build targets for interactive use and continuous integration.</p>

<p><strong><u>Dropping xunitext35.dll</u></strong></p>

<p>We're going to be dropping the xunitext35.dll project, and moving the extension methods into the xunit.extensions.dll project (in the Xunit.Extensions.Assertions namespace). If all goes as planned, you will be able to use the extension methods from Visual Studio 2008, even if your project targets .NET 2.0 (since they are a function of the C# 3.0 compiler, not the .NET 3.5 runtime).</p>

<p><strong><u>The new &lt;start&gt; XML element</u></strong></p>

<p>The &lt;start&gt; XML element is being added to xunit.dll v1.1 for version independent runners to be notified that a test is beginning to run. This should allow runners to show which test is currently running, which can be helpful when diagnosing issues with long-running tests. Version independent runners which are linked against ExecutorWrapper need to be written in such a way to cope with the presence or absence of the &lt;start&gt; element, since the it will only be provided when the tests are linked against xunit.dll v1.1 or later.</p>

<p><strong><u>Higher level version-independent test runner APIs</u></strong></p>

<p>One of the things we've had on our list for a while is documenting the XML that's used to communicate between version independent test runners and the xUnit.net execution engine. Today, you can link against xunit.runner.utility.dll and use the ExecutorWrapper class to gain access to these XML-based APIs, but since the XML is undocumented, it is a rarely used API. So the first thing we'll be doing with v1.1 is documenting the XML format on the xUnit.net project wiki.</p>

<p>Second, we're introducing a higher level abstraction for version independent runner authors, which &quot;cracks&quot; the XML elements and converts them into calls against a new interface named IRunnerLogger. The version independent runner author implements one (or more) implementations of this logger, and uses the callbacks to the logger to present information to the user about the progress of the test run, as well as allowing the user to cancel the test run.</p>

<p>The higher level APIs are as yet incomplete; we're fleshing them out by converting all the existing runners we supply (except ReSharper) to this new API. We have already checked in the updated versions of the MSBuild and Console runners which use this new API, including the new TeamCity support. We also started adapting the TD.NET runner to use this new API, and will be using that the flesh out the rest of it.</p>

<p>It will still be important to understand which XML elements are supported based on which version of xunit.dll the user linked against. For example, if the user is linked against a version of xunit.dll prior to v1.1, the XML will not contain any of the &lt;start&gt; elements (and therefore IRunnerLogger.TestStart will never be called). Authors of version independent runners will need to be able to deal with the variance present between the available versions of xunit.dll.</p>

<p>Of course, we will continue to support the XML-based APIs as well as these newer APIs.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/BradWilson?a=tnYiM"><img src="http://feeds.feedburner.com/~f/BradWilson?i=tnYiM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=bg0uM"><img src="http://feeds.feedburner.com/~f/BradWilson?i=bg0uM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=1FcnM"><img src="http://feeds.feedburner.com/~f/BradWilson?i=1FcnM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=pH8Xm"><img src="http://feeds.feedburner.com/~f/BradWilson?i=pH8Xm" border="0"></img></a>
 <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=JnJwM"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=JnJwM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=IRWJM"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=IRWJM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=OTY7M"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=OTY7M" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=eqb0m"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=eqb0m" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/BradWilson/~4/413202595" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~4/413202598" height="1" width="1"/>]]></content:encoded>


<dc:subject>Agile</dc:subject>
<dc:subject>Technical</dc:subject>
<dc:subject>xUnit.net</dc:subject>

<dc:creator>Brad Wilson</dc:creator>
<dc:date>2008-10-06T15:21:26-07:00</dc:date>
<feedburner:origLink>http://bradwilson.typepad.com/blog/2008/10/breaking-change.html</feedburner:origLink><feedburner:origLink>http://feeds.feedburner.com/~r/BradWilson/~3/413202595/breaking-change.html</feedburner:origLink></item><item rdf:about="tag:flickr.com,2005:/photo/2901807831"><title>Liar's Dice [Flickr]</title><link>http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~3/407510140/</link><dc:subject>dice</dc:subject><dc:subject>mouse</dc:subject><dc:subject>rss</dc:subject><dc:subject>microsoft</dc:subject><dc:subject>liarsdice</dc:subject><dc:subject>sidewinder</dc:subject><dc:subject>razer</dc:subject><dc:subject>exactmat</dc:subject><dc:creator>Brad Wilson</dc:creator><dc:date>2008-09-30T13:10:02-05:00</dc:date><description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/dotnetguy/"&gt;Brad Wilson&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/dotnetguy/2901807831/" title="Liar's Dice"&gt;&lt;img src="http://farm4.static.flickr.com/3006/2901807831_c83b8002c9_m.jpg" width="240" height="210" alt="Liar's Dice" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Liar's_dice"&gt;Liar's Dice&lt;/a&gt;!&lt;br /&gt;
&lt;br /&gt;
They sell them by the dozen at the gaming store, so five dozen means a dozen players with five dice. :)&lt;br /&gt;
&lt;br /&gt;
They're hanging out with my &lt;a href="http://www.microsoft.com/hardware/gaming/productdetails.aspx?pid=100"&gt;Microsoft Sidewinder&lt;/a&gt; mouse on my &lt;a href="http://www.amazon.com/Razer-Exactmat-Exactrest-Gaming-Rest-Black/dp/B000E0TJL2"&gt;Razer eXactMat&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BradWilson/~4/407503290" height="1" width="1"/&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=ORoLL"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=ORoLL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=PbAKL"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=PbAKL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=2V5NL"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=2V5NL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=oLi8l"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=oLi8l" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~4/407510140" height="1" width="1"/&gt;</description><dc:date.Taken>2008-09-30T11:10:02-08:00</dc:date.Taken><feedburner:origLink>http://www.flickr.com/photos/dotnetguy/2901807831/</feedburner:origLink><feedburner:origLink>http://feeds.feedburner.com/~r/BradWilson/~3/407503290/</feedburner:origLink></item><item rdf:about="tag:flickr.com,2005:/photo/2901807831"><title>Liar's Dice [Flickr]</title><link>http://www.flickr.com/photos/dotnetguy/2901807831/</link><dc:subject>dice</dc:subject><dc:subject>mouse</dc:subject><dc:subject>rss</dc:subject><dc:subject>microsoft</dc:subject><dc:subject>liarsdice</dc:subject><dc:subject>sidewinder</dc:subject><dc:subject>razer</dc:subject><dc:subject>exactmat</dc:subject><dc:creator>Brad Wilson</dc:creator><dc:date>2008-09-30T13:10:02-05:00</dc:date><description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/dotnetguy/"&gt;Brad Wilson&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/dotnetguy/2901807831/" title="Liar's Dice"&gt;&lt;img src="http://farm4.static.flickr.com/3006/2901807831_c83b8002c9_m.jpg" width="240" height="210" alt="Liar's Dice" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Liar's_dice"&gt;Liar's Dice&lt;/a&gt;!&lt;br /&gt;
&lt;br /&gt;
They sell them by the dozen at the gaming store, so five dozen means a dozen players with five dice. :)&lt;br /&gt;
&lt;br /&gt;
They're hanging out with my &lt;a href="http://www.microsoft.com/hardware/gaming/productdetails.aspx?pid=100"&gt;Microsoft Sidewinder&lt;/a&gt; mouse on my &lt;a href="http://www.amazon.com/Razer-Exactmat-Exactrest-Gaming-Rest-Black/dp/B000E0TJL2"&gt;Razer eXactMat&lt;/a&gt;.&lt;/p&gt;</description><dc:date.Taken>2008-09-30T11:10:02-08:00</dc:date.Taken></item>
<item rdf:about="http://bradwilson.typepad.com/blog/2008/10/meme-time-growi.html">
<title>Meme Time: Growing Up Geek</title>
<link>http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~3/410944145/meme-time-growi.html</link>
<description>I've been tagged by Scott Hanselman with his new "Growing Up Geek" meme. Even though I was 5 when this picture was taken, I definitely remember taking it. We hadn't been living in that house long, and it was the...</description>
<content:encoded><![CDATA[<div style="float: right; width: 250px; height: 189px; text-align: right"><a title="Family portrait by Brad Wilson, on Flickr" href="http://www.flickr.com/photos/dotnetguy/329783469/"><img height="179" alt="Family portrait" src="http://farm1.static.flickr.com/157/329783469_5f5b5b256a_m.jpg" width="240"></a></div> <p>I've been <a href="http://www.hanselman.com/blog/MemeTimeGrowingUpGeek.aspx">tagged by Scott Hanselman</a> with his new "Growing Up Geek" meme.</p> <p>Even though I was 5 when this picture was taken, I definitely remember taking it. We hadn't been living in that house long, and it was the one I would spend almost my entire childhood in. My sister moved away to college before we moved out of that house, but I was 16. My mom had remarried (as my dad passed away in the summer between 6th and 7th grade).</p> <p>I didn't really much think of myself as a geek back in these days, I think mostly because my dad had some very geekish tendencies. His first career was as a state policeman, and then after retirement became an insurance fraud investigator.</p> <p>At home, though, he was quite the electronics geek, and was responsible for me being into amateur radio. One of my favorite pre-computer geek toys was one of those 100-in-1 Electronics kits from Radio Shack. I definitely credit my dad with sparking my geeky interests.</p> <p><em>I'm tagging </em><a href="http://www.beantowngeek.com/"><em>Lisa Holsberg</em></a><em>, </em><a href="http://www.peterprovost.org/"><em>Peter Provost</em></a><em>, </em><a href="http://scottdensmore.typepad.com/"><em>Scott Densmore</em></a><em>, and </em><a href="http://agileprogrammer.com/oneagilecoder/"><em>Brian Button</em></a><em>.</em></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/BradWilson?a=bPjqM"><img src="http://feeds.feedburner.com/~f/BradWilson?i=bPjqM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=zg1uM"><img src="http://feeds.feedburner.com/~f/BradWilson?i=zg1uM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=nLPDM"><img src="http://feeds.feedburner.com/~f/BradWilson?i=nLPDM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=eMaTm"><img src="http://feeds.feedburner.com/~f/BradWilson?i=eMaTm" border="0"></img></a>
 <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=fNlWM"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=fNlWM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=nFW0M"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=nFW0M" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=U4e3M"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=U4e3M" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=UPbam"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=UPbam" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/BradWilson/~4/410944143" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~4/410944145" height="1" width="1"/>]]></content:encoded>



<dc:creator>Brad Wilson</dc:creator>
<dc:date>2008-10-04T01:04:45-07:00</dc:date>
<feedburner:origLink>http://bradwilson.typepad.com/blog/2008/10/meme-time-growi.html</feedburner:origLink><feedburner:origLink>http://feeds.feedburner.com/~r/BradWilson/~3/410944143/meme-time-growi.html</feedburner:origLink></item>
<item rdf:about="http://bradwilson.typepad.com/blog/2008/09/friday-fill-ins.html">
<title>Friday Fill-Ins #91</title>
<link>http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~3/404081366/friday-fill-ins.html</link>
<description>From Lisa... 1. Pumpkin flavored foods (especially soup and pie) are some of the things I'm most looking forward to in October. 2. Sometimes I say something and immediately wish I hadn't. (Sometimes it sucks to be red.) 3. The...</description>
<content:encoded><![CDATA[<p>From <a href="http://www.beantowngeek.com/archives/2008/09/friday_fill-ins_91.php">Lisa</a>...</p>

<p>1. <u>Pumpkin flavored foods (especially soup and pie)</u> are some of the things I'm most looking forward to in October.</p>

<p>2. Sometimes I <u>say something and immediately wish I hadn't</u>. <em>(Sometimes it sucks to be <a href="http://www.insights.com/index.aspx">red</a>.)</em></p>

<p>3. <u>The Wright Brothers didn't listen to critics of heavier-than-air flight, so today we can fly around the world in a day</u> and that's why there is a saying, "never say never"!</p>

<p>4. When I'm down, I <u>kick puppies</u>. It usually works.</p>

<p>5. <u>At Microsoft in building 42</u> is where you'll find me most often. <em>(It's a close tie between that and "in bed, asleep". :-p)</em>.</p>

<p>6. A rainy day is good for <u>catching up on reading</u>.</p>

<p>7. And as for the weekend, tonight I'm looking forward to <u>packing</u>, tomorrow my plans include <u>packing</u> and Sunday, I want to <u>be done with packing</u>. <em>(Okay, seriously, I'm not actually looking forward to packing, but that's how the weekends will go until moving day.)</em></p>

<p><em>Bonus Points: At least one answer above is not really true. Can you guess which one?</em></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/BradWilson?a=YHaHL"><img src="http://feeds.feedburner.com/~f/BradWilson?i=YHaHL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=WQdYL"><img src="http://feeds.feedburner.com/~f/BradWilson?i=WQdYL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=dkyWL"><img src="http://feeds.feedburner.com/~f/BradWilson?i=dkyWL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=udrLl"><img src="http://feeds.feedburner.com/~f/BradWilson?i=udrLl" border="0"></img></a>
 <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=unQiL"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=unQiL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=S3lGL"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=S3lGL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=KVMFL"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=KVMFL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=erUEl"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=erUEl" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/BradWilson/~4/404079861" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~4/404081366" height="1" width="1"/>]]></content:encoded>



<dc:creator>Brad Wilson</dc:creator>
<dc:date>2008-09-26T13:10:52-07:00</dc:date>
<feedburner:origLink>http://bradwilson.typepad.com/blog/2008/09/friday-fill-ins.html</feedburner:origLink><feedburner:origLink>http://feeds.feedburner.com/~r/BradWilson/~3/404079861/friday-fill-ins.html</feedburner:origLink></item>
<item rdf:about="http://bradwilson.typepad.com/blog/2008/09/xunitnet-103-re.html">
<title>xUnit.net 1.0.3 Released</title>
<link>http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~3/394619059/xunitnet-103-re.html</link>
<description>We shipped xUnit.net 1.0.3 today. Primarily this release is about adding support for ReSharper 4.1, but it also fixes a couple of annoying ReSharper-related bugs. Enjoy!</description>
<content:encoded><![CDATA[<p>We shipped <a href="http://www.codeplex.com/xunit/Release/ProjectReleases.aspx?ReleaseId=17368">xUnit.net 1.0.3</a> today. Primarily this release is about adding support for ReSharper 4.1, but it also fixes a couple of annoying ReSharper-related bugs.</p>

<p>Enjoy!</p>

<p><a title="xUnit.net 1.0.3 installer by Brad Wilson, on Flickr" href="http://www.flickr.com/photos/dotnetguy/2863334843/"><img height="388" width="552" alt="xUnit.net 1.0.3 installer" src="http://farm4.static.flickr.com/3225/2863334843_9772f20903_o.png" border="0" /></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/BradWilson?a=j4MrL"><img src="http://feeds.feedburner.com/~f/BradWilson?i=j4MrL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=ytGuL"><img src="http://feeds.feedburner.com/~f/BradWilson?i=ytGuL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=YEcfL"><img src="http://feeds.feedburner.com/~f/BradWilson?i=YEcfL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=DULAl"><img src="http://feeds.feedburner.com/~f/BradWilson?i=DULAl" border="0"></img></a>
 <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=3sJML"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=3sJML" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=QJ1aL"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=QJ1aL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=TMBVL"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=TMBVL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=DMztl"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=DMztl" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/BradWilson/~4/394618665" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~4/394619059" height="1" width="1"/>]]></content:encoded>


<dc:subject>Agile</dc:subject>
<dc:subject>Technical</dc:subject>
<dc:subject>xUnit.net</dc:subject>

<dc:creator>Brad Wilson</dc:creator>
<dc:date>2008-09-16T15:49:03-07:00</dc:date>
<feedburner:origLink>http://bradwilson.typepad.com/blog/2008/09/xunitnet-103-re.html</feedburner:origLink><feedburner:origLink>http://feeds.feedburner.com/~r/BradWilson/~3/394618665/xunitnet-103-re.html</feedburner:origLink></item>
<item rdf:about="tag:flickr.com,2005:/photo/2656832412"><title>iPhone 2.0 is live! [Flickr]</title><link>http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~3/332113298/</link><dc:subject>rss</dc:subject><dc:subject>20</dc:subject><dc:subject>iphone</dc:subject><dc:subject>iphone20</dc:subject><dc:creator>Brad Wilson</dc:creator><dc:date>2008-07-10T15:28:21-05:00</dc:date><description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/dotnetguy/"&gt;Brad Wilson&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/dotnetguy/2656832412/" title="iPhone 2.0 is live!"&gt;&lt;img src="http://farm4.static.flickr.com/3086/2656832412_723fb5e2b8_m.jpg" width="160" height="240" alt="iPhone 2.0 is live!" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My iPhone Edge, upgraded to 2.0. Now my calendar will never be out of date, and I'll never be more than 10 seconds away from some hot Monkey Ball action. :)&lt;br /&gt;
&lt;br /&gt;
P.S. This screen shot was taken with the iPhone 2.0 built-in screen shot function. Hold the home button and press the sleep button, and it will place the screen shot in your camera roll.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BradWilson/~4/332099335" height="1" width="1"/&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=aAp7QJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=aAp7QJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=KFZZaJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=KFZZaJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=2ocpVJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=2ocpVJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=bFLQuj"&gt;&lt;img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=bFLQuj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~4/332113298" height="1" width="1"/&gt;</description><dc:date.Taken>2008-07-10T13:28:21-08:00</dc:date.Taken><feedburner:origLink>http://www.flickr.com/photos/dotnetguy/2656832412/</feedburner:origLink><feedburner:origLink>http://feeds.feedburner.com/~r/BradWilson/~3/332099335/</feedburner:origLink></item><item rdf:about="tag:flickr.com,2005:/photo/2656832412"><title>iPhone 2.0 is live! [Flickr]</title><link>http://www.flickr.com/photos/dotnetguy/2656832412/</link><dc:subject>rss</dc:subject><dc:subject>20</dc:subject><dc:subject>iphone</dc:subject><dc:subject>iphone20</dc:subject><dc:creator>Brad Wilson</dc:creator><dc:date>2008-07-10T15:28:21-05:00</dc:date><description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/dotnetguy/"&gt;Brad Wilson&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/dotnetguy/2656832412/" title="iPhone 2.0 is live!"&gt;&lt;img src="http://farm4.static.flickr.com/3086/2656832412_723fb5e2b8_m.jpg" width="160" height="240" alt="iPhone 2.0 is live!" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My iPhone Edge, upgraded to 2.0. Now my calendar will never be out of date, and I'll never be more than 10 seconds away from some hot Monkey Ball action. :)&lt;br /&gt;
&lt;br /&gt;
P.S. This screen shot was taken with the iPhone 2.0 built-in screen shot function. Hold the home button and press the sleep button, and it will place the screen shot in your camera roll.&lt;/p&gt;</description><dc:date.Taken>2008-07-10T13:28:21-08:00</dc:date.Taken></item><item rdf:about="http://bradwilson.typepad.com/blog/2008/08/htmlrenderparti.html">
<title>Html.RenderPartial &amp;amp; Compiler Error CS1502</title>
<link>http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~3/379403951/htmlrenderparti.html</link>
<description>Thanks to Derik Whittaker for first documenting this. If you're using the new partial rendering system in ASP.NET MVC and you get the following error... CS1502: The best overloaded method match for 'System.IO.TextWriter.Write(char)' has some invalid arguments error ...then you...</description>
<content:encoded><![CDATA[<p><em>Thanks to <a href="http://devlicio.us/blogs/derik_whittaker/archive/2008/08/30/asp-net-renderpartial-exception-cs1502.aspx">Derik Whittaker</a> for first documenting this.</em></p> <p>If you're using the new partial rendering system in ASP.NET MVC and you get the following error...</p> <blockquote> <p>CS1502: The best overloaded method match for 'System.IO.TextWriter.Write(char)' has some invalid arguments error</p></blockquote> <p>...then you need to change this...</p> <blockquote> <p>&lt;%= Html.RenderPartial("viewName") %&gt;</p></blockquote> <p>...to this...</p> <blockquote> <p>&lt;% Html.RenderPartial("viewName"); %&gt;</p></blockquote> <p><strong>Notice: no equals sign, and an added semicolon.</strong> (Thanks to Matt Hinze in the comments for catching my typo!) The RenderPartial method returns void, as the views render directly into the output stream, not into a string.</p> <p>If you want more information about why this is, check out my <a href="http://bradwilson.typepad.com/blog/2008/08/partial-renderi.html">partial rendering blog post</a>, especially the section titled "Implementing views: the IView interface".</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/BradWilson?a=WI3BZK"><img src="http://feeds.feedburner.com/~f/BradWilson?i=WI3BZK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=xb3cfK"><img src="http://feeds.feedburner.com/~f/BradWilson?i=xb3cfK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=Kg9hXK"><img src="http://feeds.feedburner.com/~f/BradWilson?i=Kg9hXK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=kW0JDk"><img src="http://feeds.feedburner.com/~f/BradWilson?i=kW0JDk" border="0"></img></a>
 <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=fYq9uK"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=fYq9uK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=478MgK"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=478MgK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=7fVP2K"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=7fVP2K" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=AAyVmk"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=AAyVmk" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/BradWilson/~4/379403885" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~4/379403951" height="1" width="1"/>]]></content:encoded>



<dc:creator>Brad Wilson</dc:creator>
<dc:date>2008-08-30T21:36:18-07:00</dc:date>
<feedburner:origLink>http://bradwilson.typepad.com/blog/2008/08/htmlrenderparti.html</feedburner:origLink><feedburner:origLink>http://feeds.feedburner.com/~r/BradWilson/~3/379403885/htmlrenderparti.html</feedburner:origLink></item>
<item rdf:about="http://bradwilson.typepad.com/blog/2008/08/partial-renderi.html">
<title>Partial Rendering &amp;amp; View Engines in ASP.NET MVC</title>
<link>http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~3/378390934/partial-renderi.html</link>
<description>Background The ASP.NET MVC team just dropped CodePlex Preview 5. It contains a whole raft of new stuff, but there are two highly related features that I worked on. Since I have one foot in the "Dynamic Data" space and...</description>
<content:encoded><![CDATA[<h3><strong>Background</strong></h3> <p>The ASP.NET MVC team just dropped <a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=16775">CodePlex Preview 5</a>. It contains a whole raft of new stuff, but there are two highly related features that I worked on. Since I have one foot in the "Dynamic Data" space and one foot into the "MVC" space (being the guy working on "Dynamic Data for MVC"), it means I get to have conversations like this:</p> <blockquote> <p><strong>Me:</strong> I need partial rendering for Dynamic Data for MVC. <br><strong><a href="http://www.haacked.com/">Phil Haack</a>:</strong> Yeah, okay, I'll put it on a list somewhere.</p> <p><em>(...time passes...)</em></p> <p><strong>Me:</strong> I need partial rendering, like, soon! <br><strong>Phil:</strong> I know! Go away.</p> <p><em>(...time passes...)</em></p> <p><strong>Me:</strong> Okay, seriously? I need partial rendering tomorrow. <br><strong>Phil:</strong> Sounds like you'll be doing it yourself then, right? ... Right? <br><strong>Me:</strong> ...</p></blockquote> <p>I totally walked into that.</p> <p>The team went through a few iterations of design discussions with me spiking a variety of ways to implement the feature. One thing we wanted to be sure to enable was the idea that the partial view you render can be done with a different view engine if necessary.</p> <p>In the process, we uncovered several issues with the current implementation of view engines.</p> <ul> <li><strong>Controllers choose the view engine.</strong> Since the base Controller class chooses the WebForms view engine by default, many MVC users might not even realize this. Does the decision about view engines really belong with the controllers? They are otherwise divorced from view details, so this felt wrong.  <li><strong>Installing View Engines was awkward.</strong> Since controllers make the decision about view engines, how do you install a view engine? The "least intrusive" method turned out to be overriding the controller factory, yet another smell that things that shouldn't know about each other, did.  <li><strong>The View Engine decision was basically "one at a time".</strong> Since controllers make the decision about view engines, and most non-WebForms view engines get injected via the controller factory, you're more or less stuck using just a single view engine in your application (unless you want to perform a bunch of view engine overrides in your controllers).  <li><strong>Partial views don't have controllers.</strong> When a partial view is rendered, there is no associated controller, so who makes the decision about which view engine to use? </li></ul> <p>Given those limitations, and our desire to support multiple simultaneous view engines, we decided to revamp the view engine system at the same time we implemented partial rendering.</p> <h3><strong>Partial views and Html.RenderPartial</strong></h3> <p>There are four versions of Html.RenderPartial, and they all take a partial view name as their first parameter.</p><pre class="c-sharp:nogutter" name="code">// Renders the partial view using the view data and model from the parent view.
public void RenderPartial(string partialViewName);

// Renders the partial view with an empty view data and the given model.
public void RenderPartial(string partialViewName, object model);

// Renders the partial view with the given view data.
public void RenderPartial(string partialViewName, ViewDataDictionary viewData);

// Renders the partial view with a copy of the given view data and the provided model.
public void RenderPartial(string partialViewName, object model, ViewDataDictionary viewData);</pre>
<p>The purpose of partial views are to be small, reusable pieces of view. Ideally, they will be able to get the data to display from the ViewData of the parent, or through the use of the model that was passed specifically into them. Since partial views are intended to be a partial rendering, there is no concept of a "master view" for partial views.</p>
<p>In the WebForms view engine, both views and partial views can be either .aspx or .ascx files. In practice, we expect that most views will be .aspx files (pages) and most partial views will be .ascx files (user controls).</p>
<p>Individual view engines can set their own rules for how they process views vs. partial views.</p>
<p>One of the best features of this new system is that your partial views can use a different view engine than your views, and it doesn’t require any coding gymnastics to make it happen. It all comes down to how the new view system resolves which view engine renders which views.</p>
<h3><strong>Implementing views: the IView interface</strong></h3>
<p>That's right: we brought back IView! You'll notice that RenderPartial returns void, not string. This means you use the inline code syntax (no equal sign):</p><pre class="c-sharp:nogutter:nocontrols" name="code">&lt;% Html.RenderPartial("viewName"); %&gt;</pre>
<p>When views and partial views render themselves, they are not turned into strings. We did this primarily for reasons of memory consumption and scalability, but also because it was more natural with the way WebForms already work.</p>
<p>There is a single interface which represents both views and partial views:</p><pre class="c-sharp:nogutter:nocontrols" name="code">public interface IView
{
    void Render(ViewContext viewContext, TextWriter writer);
}</pre>
<p>Views are asked to render themselves into a text writer. In production usage, the provided text writer will be HttpContext.Current.Response.Output.</p>
<p>By providing the text writer to the Render method, it means those who are interested in testing the rendering of their views can do so without needing to mock the HttpResponse object. In your tests, you can pass a StringWriter, which wraps around StringBuilder, and inspect the resulting string when you’re done rendering.</p>
<h3><strong>The rules of rendering (or, what's that TextWriter there for?)</strong></h3>
<p>Consider the following view:</p><pre class="html:nogutter:nocontrols" name="code">&lt;p&gt;Paragraph 1&lt;/p&gt;
&lt;% Html.RenderView("partialView"); %&gt;
&lt;p&gt;Paragraph 3&lt;/p&gt;</pre>
<p>And the following partial view:</p><pre class="html:nogutter:nocontrols" name="code">&lt;p&gt;Paragraph 2&lt;/p&gt;</pre>
<p>Let's assume that our view engine renders by putting everything in a string and then doing one big write at the end (there is at least one view engine today which does this, but I don't want to out anybody :-p). Our hypothetical view ends up resulting in the following code:</p><pre class="c-sharp:nogutter:nocontrols" name="code">public void Render(ViewContext viewContext, TextWriter writer) {
    string result = "";
    result += "&lt;p&gt;Paragraph 1&lt;/p&gt;";
    Html.RenderPartial("partialView");
    result += "&lt;p&gt;Paragraph 3&lt;/p&gt;";
    viewContext.HttpContext.Response.Write(result);
}</pre>
<p>And our partial view's code ends up being:</p><pre class="c-sharp:nogutter:nocontrols" name="code">public void Render(ViewContext viewContext, TextWriter writer) {
    string result = "";
    result += "&lt;p&gt;Paragraph 2&lt;/p&gt;";
    viewContext.HttpContext.Response.Write(result);
}</pre>
<p>What's the actual output result?</p><pre class="html:nogutter:nocontrols" name="code">&lt;p&gt;Paragraph 2&lt;/p&gt;
&lt;p&gt;Paragraph 1&lt;/p&gt;
&lt;p&gt;Paragraph 3&lt;/p&gt;</pre>
<p>I'm pretty sure that's not what we wanted. :)</p>
<p>Let's consider an implementation that uses the text writer:</p><pre class="c-sharp:nogutter:nocontrols" name="code">public void Render(ViewContext viewContext, TextWriter writer) {
    writer.Write("&lt;p&gt;Paragraph 1&lt;/p&gt;");
    Html.RenderPartial("partialView");
    writer.Write("&lt;p&gt;Paragraph 3&lt;/p&gt;");
}</pre>
<p>and:</p><pre class="c-sharp:nogutter:nocontrols" name="code">public void Render(ViewContext viewContext, TextWriter writer) {
    writer.Write("&lt;p&gt;Paragraph 2&lt;/p&gt;");
}</pre>
<p>And the new result?</p><pre class="html:nogutter:nocontrols" name="code">&lt;p&gt;Paragraph 1&lt;/p&gt;
&lt;p&gt;Paragraph 2&lt;/p&gt;
&lt;p&gt;Paragraph 3&lt;/p&gt;</pre>
<p>That's much better.</p>
<p>This is why views are given the text writer. Even if we could ignore memory consumption and scalability (I can hear <a href="http://blogs.msdn.com/tmarq/default.aspx">Thomas</a> groaning at such a suggestion), we needed to choose this implementation for another reason: WebForms already exists. :)</p>
<p>There's a whole bunch of infrastructure already set into place with .aspx/.ascx which means these things will be using Response.Write to put content out into the response stream. We need everything to play together in the same way, so passing Response.Output as the text writer encourages the correct implementation from view engine authors. As a bonus, it also gives us that extra test point. You know how much we love testing. :)</p>
<h3><strong>Implementing view engines: the IViewEngine interface</strong></h3>
<p>We split the behavior of rendering (IView) from the behavior of locating (IViewEngine):</p><pre class="c-sharp:nogutter:nocontrols" name="code">public interface IViewEngine
{
    ViewEngineResult FindPartialView(ControllerContext controllerContext,
                                     string partialViewName);
    ViewEngineResult FindView(ControllerContext controllerContext,
                              string viewName, string masterName);
}</pre>
<p>View engines are about finding views (and partial views). The ViewEngineResult that is returned offers two different constructors:</p><pre class="c-sharp:nogutter:nocontrols" name="code">// Use this constructor when you didn't find an appropriate view
public ViewEngineResult(IEnumerable&lt;string&gt; searchedLocations);

// Use this constructor when you did find a view
public ViewEngineResult(IView view);</pre>
<p>The system will run through the list of registered view engines (in order of registration) until it finds one that returns a view that can be rendered. If it never finds an appropriate view, then it throws an exception which lists all the locations that were searched.</p>
<p>For example, the WebForms view engine searches the following virtual paths looking for views and partial views:</p>
<blockquote>
<p>~/Views/&lt;controllerName&gt;/&lt;viewName&gt;.aspx <br>~/Views/&lt;controllerName&gt;/&lt;viewName&gt;.ascx <br>~/Views/Shared/&lt;viewName&gt;.aspx <br>~/Views/Shared/&lt;viewName&gt;.ascx</p></blockquote>
<p>Additionally, when you provide a non-null, non-empty master view name for FindView, it looks in the following locations:</p>
<blockquote>
<p>~/Views/&lt;controllerName&gt;/&lt;masterName&gt;.master <br>~/Views/Shared/&lt;masterName&gt;.master</p></blockquote>
<p>We anticipate that most of the view engines will be based on files in the file system, so we provided a base class which does almost all the hard work: VirtualPathProviderViewEngine. Implementing a view engine to derive from this class is very simple:</p>
<ol>
<li>In the constructor, set MasterLocationFormats, ViewLocationFormats, and PartialViewLocationFormats. 
<li>Override CreateView() and CreatePartialView() to create the views when they've been found. </li></ol>
<p>That's it. In fact, here's the whole source to WebFormsViewEngine:</p><pre class="c-sharp:nogutter:nogutter" name="code">public class WebFormViewEngine : VirtualPathProviderViewEngine {
    public WebFormViewEngine() {
        MasterLocationFormats = new[] {
            "~/Views/{1}/{0}.master",
            "~/Views/Shared/{0}.master"
        };
        ViewLocationFormats = new[] {
            "~/Views/{1}/{0}.aspx",
            "~/Views/{1}/{0}.ascx",
            "~/Views/Shared/{0}.aspx",
            "~/Views/Shared/{0}.ascx"
        };
        PartialViewLocationFormats = ViewLocationFormats;
    }

    protected override IView CreatePartialView(ControllerContext controllerContext,
                                               string partialPath) {
        return new WebFormView(partialPath, null);
    }

    protected override IView CreateView(ControllerContext controllerContext,
                                        string viewPath,
                                        string masterPath) {
        return new WebFormView(viewPath, masterPath);
    }
}</pre>
<p>The VirtualPathProviderViewEngine not only does the work of looking up the view through all the provided locations, it also takes care of caching the results of those lookups. When you're running ASP.NET in debug mode, it does not cache the lookup, so that you can add and remove view files without restarting your development web server; when you're running ASP.NET in production mode, it will cache the lookup results with a sliding timeout of 15 minutes.</p>
<h3><strong>Changes to Controller/ViewResult</strong></h3>
<p>We removed the ViewEngine property from the Controller base class.</p>
<p>On ViewResult, we added the ability for you to set an IView object directly if you need to directly create the view (rather than letting the view engines get a crack at it). We also added an overload to Controller.View() which takes an IView.</p>
<p>We also added a PartialViewResult class, and Controller.PartialView() methods which return it. You might find this useful to return partial views in response to AJAX partial HTML requests.</p>
<h3><strong>Registering the view engine</strong></h3>
<p>Once the view engine has been written, you register it with the system during Application_Start in your global.asax:</p><pre class="c-sharp:nogutter:nocontrols" name="code">ViewEngines.Engines.Add(new MyViewEngine());</pre>
<p>When attempting to render a view or partial view, the system will walk the list of view engines in order until one says "I can render this view". By default, the WebForms view engine is registered for you. As you register additional engines, you'll be able to interleave views that use any of the registered engines.</p>
<p>As mentioned earlier, you can render partials that use a different view engine from the parent view. This should help the case where you want to transition from one view engine to another, to be able to keep both running simultaneously, moving views over one at a time. Hopefully we can poke Phil into re-releasing his IronRuby sample, this time using both view engines to mix Ruby RHTML views with WebForms views. :)</p>
<p><strong>ViewEngines.Engines is not thread-safe, so you should only register new view engines during Application_Start.</strong> If you need to be able to register view engines dynamically at runtime, you can create an instance of CompositeViewEngine, initialized with a thread safe collection, and then add and remove your view engines with that thread safe collection. Remember to register your instance of CompositeViewEngine into ViewEngine.Engines (in Application_Start, of course).</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/BradWilson?a=ZrV4CK"><img src="http://feeds.feedburner.com/~f/BradWilson?i=ZrV4CK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=4QY1UK"><img src="http://feeds.feedburner.com/~f/BradWilson?i=4QY1UK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=OKS1HK"><img src="http://feeds.feedburner.com/~f/BradWilson?i=OKS1HK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=MPJtxk"><img src="http://feeds.feedburner.com/~f/BradWilson?i=MPJtxk" border="0"></img></a>
 <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=tsFgTK"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=tsFgTK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=nC4r6K"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=nC4r6K" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=kLLEmK"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=kLLEmK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=KJIBAk"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=KJIBAk" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/BradWilson/~4/378390902" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~4/378390934" height="1" width="1"/>]]></content:encoded>



<dc:creator>Brad Wilson</dc:creator>
<dc:date>2008-08-29T13:47:51-07:00</dc:date>
<feedburner:origLink>http://bradwilson.typepad.com/blog/2008/08/partial-renderi.html</feedburner:origLink><feedburner:origLink>http://feeds.feedburner.com/~r/BradWilson/~3/378390902/partial-renderi.html</feedburner:origLink></item>
<item rdf:about="http://bradwilson.typepad.com/blog/2008/08/xunitnet-102-re.html">
<title>xUnit.net 1.0.2 Released</title>
<link>http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~3/374969370/xunitnet-102-re.html</link>
<description>Jim and I finished up work on xUnit 1.0.2 on Saturday and we pushed the publish button this afternoon. The one new notable feature is support for Resharper 4.0. We also fixed five bugs in the bug database (and probably...</description>
<content:encoded><![CDATA[<p>Jim and I finished up work on <a href="http://www.codeplex.com/xunit/Release/ProjectReleases.aspx?ReleaseId=16589">xUnit 1.0.2</a> on Saturday and we pushed the publish button this afternoon. The one new notable feature is support for Resharper 4.0. We also fixed five bugs in the bug database (and probably a few more here and there that didn't get tracked).</p> <p>It's been almost 3 months since 1.0.1, and if it doesn't seem like we've made a lot of progress for those three months, you're probably right.</p> <ul> <li>When I was on the CodePlex team, we had a dedicated 20% Slack day to work on xUnit.net, so it got ~ 40 hours/month work on it. Now that I'm on the ASP.NET team, Jim and I have to carve off a Saturday or Sunday, and we're probably running more like 12-18 hours/month right now.</li> <li>It's summer, and the end of the fiscal year at Microsoft, so there has been inevitable vacations, plus speaking gigs for both of us where travel eats into the weekend.</li> <li>We've been working on trying to make progress with our GUI runner, as well as doing some investigative work around supporting the Visual Studio Test runner. While we are making progress of sorts, it's not the kind of "release every month" progress right now.</li></ul> <p>Hopefully we'll be able to find some more solid time to work on it soon. Now that we have an officially supported release for Resharper 4.0, we can re-focus on the other runners.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/BradWilson?a=uAdBFK"><img src="http://feeds.feedburner.com/~f/BradWilson?i=uAdBFK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=HWQNGK"><img src="http://feeds.feedburner.com/~f/BradWilson?i=HWQNGK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=RKYIYK"><img src="http://feeds.feedburner.com/~f/BradWilson?i=RKYIYK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=V4nhik"><img src="http://feeds.feedburner.com/~f/BradWilson?i=V4nhik" border="0"></img></a>
 <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=OmdphK"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=OmdphK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=8Q2WeK"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=8Q2WeK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=Lu238K"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=Lu238K" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=XfFlNk"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=XfFlNk" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/BradWilson/~4/374969361" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~4/374969370" height="1" width="1"/>]]></content:encoded>


<dc:subject>Agile</dc:subject>
<dc:subject>Technical</dc:subject>
<dc:subject>xUnit.net</dc:subject>

<dc:creator>Brad Wilson</dc:creator>
<dc:date>2008-08-25T23:57:42-07:00</dc:date>
<feedburner:origLink>http://bradwilson.typepad.com/blog/2008/08/xunitnet-102-re.html</feedburner:origLink><feedburner:origLink>http://feeds.feedburner.com/~r/BradWilson/~3/374969361/xunitnet-102-re.html</feedburner:origLink></item>
<item rdf:about="http://bradwilson.typepad.com/blog/2008/08/xunitnet-suppor.html">
<title>xUnit.net: Support Visual Studio Test Runner?</title>
<link>http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~3/370400227/xunitnet-suppor.html</link>
<description>Jim and I have been doing some investigation into the idea of supporting the Visual Studio test runner, and we’ve come across some issues that we think requires the input of the community. If you’re interested in using xUnit.net with...</description>
<content:encoded><![CDATA[<p>Jim and I have been doing some investigation into the idea of supporting the Visual Studio test runner, and we’ve come across some issues that we think requires the input of the community.</p>  <p>If you’re interested in using xUnit.net with Visual Studio’s test runner support (Visual Studio 2008 SP1, Professional Edition or higher), please visit the <a href="http://www.codeplex.com/xunit/Thread/View.aspx?ThreadId=33953">xUnit.net forum post that describes the situation</a> and provide us with your feedback.</p>  <p>Thanks!</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/BradWilson?a=eThrdK"><img src="http://feeds.feedburner.com/~f/BradWilson?i=eThrdK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=qUXWcK"><img src="http://feeds.feedburner.com/~f/BradWilson?i=qUXWcK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=53OddK"><img src="http://feeds.feedburner.com/~f/BradWilson?i=53OddK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=57i6Qk"><img src="http://feeds.feedburner.com/~f/BradWilson?i=57i6Qk" border="0"></img></a>
 <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=LaJkAK"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=LaJkAK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=lkuBbK"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=lkuBbK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=2NttFK"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=2NttFK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=CZyOwk"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=CZyOwk" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/BradWilson/~4/370399641" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~4/370400227" height="1" width="1"/>]]></content:encoded>


<dc:subject>Agile</dc:subject>
<dc:subject>Technical</dc:subject>
<dc:subject>xUnit.net</dc:subject>

<dc:creator>Brad Wilson</dc:creator>
<dc:date>2008-08-20T16:23:21-07:00</dc:date>
<feedburner:origLink>http://bradwilson.typepad.com/blog/2008/08/xunitnet-suppor.html</feedburner:origLink><feedburner:origLink>http://feeds.feedburner.com/~r/BradWilson/~3/370399641/xunitnet-suppor.html</feedburner:origLink></item>
<item rdf:about="http://bradwilson.typepad.com/blog/2008/08/presentation-sl.html">
<title>Presentation Slides</title>
<link>http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~3/367797335/presentation-sl.html</link>
<description>Occasionally I have people pinging me about slides for talks I give. While I've been blogging the individual event, that post gets buried into the history and then hard to find. So if you've been looking for my slides, I...</description>
<content:encoded><![CDATA[<p>Occasionally I have people pinging me about slides for talks I give. While I've been blogging the individual event, that post gets buried into the history and then hard to find.</p> <p>So if you've been looking for my slides, I added a permanent page with a simple URL -- <a href="http://bradwilson.typepad.com/blog/talks.html">Talks &amp; Presentations</a> -- and linked it in my sidebar.</p> <p>Enjoy!</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/BradWilson?a=inCwRK"><img src="http://feeds.feedburner.com/~f/BradWilson?i=inCwRK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=WotsNK"><img src="http://feeds.feedburner.com/~f/BradWilson?i=WotsNK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=EuuhUK"><img src="http://feeds.feedburner.com/~f/BradWilson?i=EuuhUK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson?a=sLkXSk"><img src="http://feeds.feedburner.com/~f/BradWilson?i=sLkXSk" border="0"></img></a>
 <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=eW3q7K"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=eW3q7K" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=JA1UWK"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=JA1UWK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=2T5FcK"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=2T5FcK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?a=TvxY0k"><img src="http://feeds.feedburner.com/~f/BradWilson-ThenetGuy?i=TvxY0k" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/BradWilson/~4/367797334" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/BradWilson-ThenetGuy/~4/367797335" height="1" width="1"/>]]></content:encoded>


<dc:subject>Speaking</dc:subject>
<dc:subject>Technical</dc:subject>

<dc:creator>Brad Wilson</dc:creator>
<dc:date>2008-08-17T21:58:21-07:00</dc:date>
<feedburner:origLink>http://bradwilson.typepad.com/blog/2008/08/presentation-sl.html</feedburner:origLink><feedburner:origLink>http://feeds.feedburner.com/~r/BradWilson/~3/367797334/presentation-sl.html</feedburner:origLink></item>


</rdf:RDF><!-- ph=1 --><!-- nhm:dynamic-ssi -->
