<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Eric Hexter</title><link>http://www.lostechies.com/blogs/hex/default.aspx</link><description>Where the rubber meets the road.</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/EricHexter" type="application/rss+xml" /><item><title>Running a x64 build server. Challenges overcome.</title><link>http://feeds.feedburner.com/~r/EricHexter/~3/342592372/running-a-x64-build-server-challenges-overcome.aspx</link><pubDate>Tue, 22 Jul 2008 14:02:10 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:4222</guid><dc:creator>erichexter</dc:creator><slash:comments>5</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/hex/rsscomments.aspx?PostID=4222</wfw:commentRss><comments>http://www.lostechies.com/blogs/hex/archive/2008/07/22/running-a-x64-build-server-challenges-overcome.aspx#comments</comments><description>&lt;p&gt;We just setup a new build server on my current project and with it came some of those little hiccups which made the setup take longer than planned.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;strike&gt;Cruise Control&lt;/strike&gt; Team Foundation Client&amp;#160; issues&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. Although our continuous integration server (Cruise Control.Net) fully supports running on 64 bit not all of its dependencies do.&amp;#160; Team Foundation Client 2008 does not support 64 bit operating systems.&amp;#160; The fix was to force the .Net framework to run the cruise control service in 32 bit mode, by setting the 32 bit flag on the ccservice.exe. This was done using the &lt;a href="http://msdn.microsoft.com/en-us/library/ms164699(VS.80).aspx"&gt;corFlags.exe&lt;/a&gt; from the .Net SDK.&amp;#160; The actual command that was run is:&lt;/strong&gt;&lt;/p&gt;  &lt;div class="CodeSnippetTitleBar"&gt;   &lt;div class="CodeDisplayLanguage"&gt;&lt;/div&gt; &lt;/div&gt;  &lt;div class=""&gt;   &lt;blockquote&gt;     &lt;pre class="libCScode" id="ctl00_rs1_mainContentContainer_ctl01other"&gt;CorFlags.exe ccservice.exe /32BIT+&lt;/pre&gt;

    &lt;pre class="libCScode"&gt;&amp;#160;&lt;/pre&gt;
  &lt;/blockquote&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;2.&lt;strong&gt; Running Asp.Net on wow32.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Although our application code could run 64 bit.. not all of our dependencies can.&amp;#160; Our web application kept failing on startup claiming that one dll could not run on x64.&amp;#160; Rather than tracking down a new version for that dll only to deal with the next one I first wanted to see the application work on the server running wow32 (that&amp;#39;s Windows On Windows 32 bit) there are the operations that need to be done in order to make this happen. The first two are enabling 32 bit in IIS and registering the 32 bit .Net framework.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
    &lt;br /&gt;%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i&amp;#160; &lt;br /&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The third step is enabling the Asp.net (32) in the Web Extensions in IIS Manager. This option show us after you run the aspnet_regiis command.&lt;/p&gt;

&lt;p&gt;Once I can test my application in 32 bit mode and I know it all works, now it is time to get back to 64 bit mode and track down the culprit that prevented this in the first place.&amp;#160; &lt;/p&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=4222" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/EricHexter/~4/342592372" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/hex/archive/tags/Asp.Net/default.aspx">Asp.Net</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/CC.Net/default.aspx">CC.Net</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/x64/default.aspx">x64</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/IIS/default.aspx">IIS</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/continous+integration/default.aspx">continous integration</category><feedburner:origLink>http://www.lostechies.com/blogs/hex/archive/2008/07/22/running-a-x64-build-server-challenges-overcome.aspx</feedburner:origLink></item><item><title>Running your build/source code from a ram disk.</title><link>http://feeds.feedburner.com/~r/EricHexter/~3/341781725/running-your-build-source-code-from-a-ram-disk.aspx</link><pubDate>Mon, 21 Jul 2008 18:18:21 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:4214</guid><dc:creator>erichexter</dc:creator><slash:comments>5</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/hex/rsscomments.aspx?PostID=4214</wfw:commentRss><comments>http://www.lostechies.com/blogs/hex/archive/2008/07/21/running-your-build-source-code-from-a-ram-disk.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;As a test I wanted to run a build from a drive in ram rather than on a physical disk drive using the old Dos style Ram disk. For a trivial build that includes compilation, Asp.net compilation, database updates, unit test, and integration tests. I saw the build time decrease by 41%. That is pretty good. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.lostechies.com/blogs/hex/WindowsLiveWriter/Runningyoursourcecodefromaramdisk_ACBC/buildFromRamDisk_2.jpg"&gt;&lt;img title="buildFromRamDisk" style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="420" alt="buildFromRamDisk" src="http://www.lostechies.com/blogs/hex/WindowsLiveWriter/Runningyoursourcecodefromaramdisk_ACBC/buildFromRamDisk_thumb.jpg" width="687" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Running MvcContrib build using this same method return the following results, a decrease in build time from 37 to 28.7 seconds.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.lostechies.com/blogs/hex/WindowsLiveWriter/Runningyoursourcecodefromaramdisk_ACBC/RamDiskCompileMvcContrib_2.jpg"&gt;&lt;img title="RamDiskCompileMvcContrib" style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="461" alt="RamDiskCompileMvcContrib" src="http://www.lostechies.com/blogs/hex/WindowsLiveWriter/Runningyoursourcecodefromaramdisk_ACBC/RamDiskCompileMvcContrib_thumb.jpg" width="690" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I am running this from an XP virtual machine with the ram disk that is available for free from here:&amp;#160; &lt;a href="http://www.mydigitallife.info/2007/05/27/free-ramdisk-for-windows-vista-xp-2000-and-2003-server/"&gt;http://www.mydigitallife.info/2007/05/27/free-ramdisk-for-windows-vista-xp-2000-and-2003-server/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is just a prototype and I am just playing with this idea right now.&amp;#160; Next I am going to do some tests with loading database files to the ram disk and look at some options for ensuing all my data is not lost…. The important thing to know about the RAM Disk is that when the machine shuts down it dumps the contents of the disk.&amp;#160; There are some options where the drive can be mapped to an image file so that the drive can start up with some basic configuration.&amp;#160; More to come….&lt;/p&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=4214" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/EricHexter/~4/341781725" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/hex/archive/tags/c_2300_/default.aspx">c#</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/testing/default.aspx">testing</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/.Net/default.aspx">.Net</category><feedburner:origLink>http://www.lostechies.com/blogs/hex/archive/2008/07/21/running-your-build-source-code-from-a-ram-disk.aspx</feedburner:origLink></item><item><title>Come see me speak about Silverlight 2.0 at the Alamo Coders on Tuesday July  8th</title><link>http://feeds.feedburner.com/~r/EricHexter/~3/322902507/come-see-me-speak-about-silverlight-2-0-at-the-alamo-coders-on-tuesday-july-8th.aspx</link><pubDate>Mon, 30 Jun 2008 01:26:26 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:3941</guid><dc:creator>erichexter</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/hex/rsscomments.aspx?PostID=3941</wfw:commentRss><comments>http://www.lostechies.com/blogs/hex/archive/2008/06/29/come-see-me-speak-about-silverlight-2-0-at-the-alamo-coders-on-tuesday-july-8th.aspx#comments</comments><description>&lt;p&gt;I am excited to have a chance to speak to the &lt;a href="http://www.alamocoders.net/" target="_blank"&gt;Alamo Coders user group&lt;/a&gt; about Silverlight 2.0.&amp;nbsp; I am planing on covering some general information about Silverlight and where if fits in the overall technology stack against some of the other technologies like AIR and FLEX.&amp;nbsp; I do plan on demonstrating the areas that I think makes it a legitimate Application platform which is it&amp;#39;s built in support for testability and rich APIs.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The meeting will be at&amp;nbsp; Tuesday July 8th at 6:00pm at the &lt;a href="http://maps.google.com/maps?f=l&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=New+Horizons&amp;amp;near=San+Antonio,+TX&amp;amp;sll=29.531793,-98.672588&amp;amp;sspn=0.006282,0.010042&amp;amp;ie=UTF8&amp;amp;ei=wevnRq2jJKXSrQKxgqiPBg&amp;amp;cd=1&amp;amp;dtab=5&amp;amp;cid=29515251,-98555474,17178413233909865539&amp;amp;li=lmd&amp;amp;z=14&amp;amp;t=m" target="_blank"&gt;New Horizons Learning Center&lt;/a&gt; .&amp;nbsp; If you are near San Antonio feel free to drop in and see me!&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;You can subscribe to this feed here &lt;a href="http://feeds.feedburner.com/EricHexter"&gt;http://feeds.feedburner.com/EricHexter&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;br /&gt;See you next week. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Eric &lt;/p&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=3941" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/EricHexter/~4/322902507" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.lostechies.com/blogs/hex/archive/2008/06/29/come-see-me-speak-about-silverlight-2-0-at-the-alamo-coders-on-tuesday-july-8th.aspx</feedburner:origLink></item><item><title>Session materials posted for my Austin Code Camp 2008 Silverlight 2 Unit Testing session</title><link>http://feeds.feedburner.com/~r/EricHexter/~3/319343064/session-materials-posted-for-my-austin-code-camp-2008-silverlight-2-unit-testing-session.aspx</link><pubDate>Wed, 25 Jun 2008 01:55:41 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:3814</guid><dc:creator>erichexter</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/hex/rsscomments.aspx?PostID=3814</wfw:commentRss><comments>http://www.lostechies.com/blogs/hex/archive/2008/06/24/session-materials-posted-for-my-austin-code-camp-2008-silverlight-2-unit-testing-session.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I have been really busy between starting as a Principal Consultant for Headspring Systems and a long awaited vacation.&amp;nbsp; I am just &lt;br /&gt;catching up on some blog posts. &lt;br /&gt;&lt;br /&gt;My Silverlight Unit Testing session at the &lt;a href="http://austincodecamp.com/" target="_blank"&gt;Austin Code Camp 2008&lt;/a&gt; went really well.&amp;nbsp;&amp;nbsp; The source code and presentation is available for download &lt;a href="http://code.google.com/p/austincodecamp08/downloads/detail?name=SilverlightUnitTesting.zip&amp;amp;can=2&amp;amp;q=#makechanges" target="_blank"&gt;here&lt;/a&gt;. &lt;br /&gt;I got some great feedback and look forward to being able to speak on the topic some more!&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I wanted to formally thank &lt;a href="http://www.lostechies.com/blogs/johnteague/" target="_blank"&gt;John Teague&lt;/a&gt; for all of his hard work organizing the code camp.&amp;nbsp; With a new baby at home there was no way I could have organized &lt;br /&gt;it this year so I was happy to have John pull it together while I was able to focus on sponsorships and swag.&amp;nbsp; I think it was a great event and I will have a retrospective &lt;br /&gt;with John so that we can share all that we have learned about running a camp as well as how to successfully hand off the execution from one person to the next. &lt;br /&gt;I think there is more value in being able to grow a community where we have more leaders who can execute these types of events and I believe we have some &lt;br /&gt;great lessons to share.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;There is some great material for all of the code camp sessions on our code camp source repository.&amp;nbsp; Please check it out &lt;a href="http://code.google.com/p/austincodecamp08/downloads/list" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Subscribe to my feed here &lt;a href="http://feeds.feedburner.com/EricHexter"&gt;http://feeds.feedburner.com/EricHexter&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=3814" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/EricHexter/~4/319343064" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.lostechies.com/blogs/hex/archive/2008/06/24/session-materials-posted-for-my-austin-code-camp-2008-silverlight-2-unit-testing-session.aspx</feedburner:origLink></item><item><title>Silverlight Beta 2 Released and what that means for the Testing Framework.</title><link>http://feeds.feedburner.com/~r/EricHexter/~3/307572103/silverlight-beta-2-released-and-what-that-means-for-the-testing-framework.aspx</link><pubDate>Sun, 08 Jun 2008 21:49:00 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:3643</guid><dc:creator>erichexter</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/hex/rsscomments.aspx?PostID=3643</wfw:commentRss><comments>http://www.lostechies.com/blogs/hex/archive/2008/06/08/silverlight-beta-2-released-and-what-that-means-for-the-testing-framework.aspx#comments</comments><description>&lt;p&gt;ok..&amp;nbsp; So Silverlight Beta 2 was released on and it has some great new features. But what is the story about testing...?&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;1 &lt;a href="http://www.jeff.wilcox.name/2008/06/06/unit-testing-templates-for-microsoft-silverlight-2-beta-2/"&gt;Jeff Willcox&lt;/a&gt; blogged about a small change you will need to make in order to use the existing testing framework. It is &lt;br /&gt;essentially adding a cast to the initial startup code for the testing framework.&amp;nbsp; He also posted new C# and VB.net project&lt;br /&gt;and item templates. He also hinted that there will be a new release of the test framework and some samples of integration&lt;br /&gt;with a Continuous Integration server.&amp;nbsp; I am excited about that.&amp;nbsp; I have some prototypes that were half baked to do this,&lt;br /&gt;I just have not had any time to make it usable.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2. The one feature that I am happy to see is the UI Automation (UIA) support. The UIA will make test driving the UI and &lt;br /&gt;producing a true end-to-end test possible with a well documented and supported API.&amp;nbsp; &lt;a title="Accessibility" href="http://msdn.microsoft.com/en-us/library/ms753388.aspx"&gt;Accessibility&lt;/a&gt; is supported in WPF&lt;br /&gt;so there are some controls that implement these features in this latest release of silverlight. UI Automation has all the hooks to allow &lt;br /&gt;testing tools to drive an application through the U.&amp;nbsp; Reference &lt;a href="http://en.wikipedia.org/wiki/Microsoft_UI_Automation"&gt;http://en.wikipedia.org/wiki/Microsoft_UI_Automation&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The best part about silverlight supporting UIA is that a number of people have already paved the way by testing WPF using&lt;br /&gt;this&amp;nbsp; API... &lt;a href="http://blogs.msdn.com/llobo/archive/2007/09/06/testing-using-wpf-ui-automation.aspx"&gt;http://blogs.msdn.com/llobo/archive/2007/09/06/testing-using-wpf-ui-automation.aspx&lt;/a&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Once again I think ThoughtWorks leads the way with their open source project &lt;a href="http://www.codeplex.com/white"&gt;http://www.codeplex.com/white&lt;/a&gt;.&amp;nbsp; Looking at&lt;br /&gt;the getting started page, I am excited to see how easier their helper &amp;quot;core&amp;quot; library integrates with nunit.... What more could I ask for?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As I upgrade my previous samples to the Beta 2 Framework and experiment with the White project I will have some posting coming soon.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Happily Testing&lt;/p&gt;
&lt;p&gt;Eric Hexter&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=3643" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/EricHexter/~4/307572103" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/hex/archive/tags/c_2300_/default.aspx">c#</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/testing/default.aspx">testing</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/silverlight/default.aspx">silverlight</category><feedburner:origLink>http://www.lostechies.com/blogs/hex/archive/2008/06/08/silverlight-beta-2-released-and-what-that-means-for-the-testing-framework.aspx</feedburner:origLink></item><item><title>Silverlight Testing - Part 2 - Making the test easier understand.</title><link>http://feeds.feedburner.com/~r/EricHexter/~3/274896113/silverlight-testing-part-2-making-the-test-easier-understand.aspx</link><pubDate>Mon, 21 Apr 2008 18:59:00 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:2988</guid><dc:creator>erichexter</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/hex/rsscomments.aspx?PostID=2988</wfw:commentRss><comments>http://www.lostechies.com/blogs/hex/archive/2008/04/21/silverlight-testing-part-2-making-the-test-easier-understand.aspx#comments</comments><description>&lt;p&gt;Now that we have a working test that can make the proper assertions, the next step is to make the test easier to understand.&amp;nbsp; First, here is the existing test.&lt;/p&gt;
&lt;p&gt;&lt;a title="FluentUiTest" href="http://erichexter.googlecode.com/svn/trunk/EndToEndSilverlightDemo/EndToEndSilverlightDemo/EndtoEndSilverlightDemo.Tests/Test.cs" target="_blank"&gt;&lt;img height="194" alt="FluentUiTest" src="http://static.flickr.com/2363/2431211087_06ec8d318d.jpg" width="579" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The test is loaded with infrastructure code that helps execute the asynchronous calls with the testing framework. This does not help the readability of the tests.&amp;nbsp; More than half of the code in this methods are helper methods and plumbing.&amp;nbsp; This is far from ideal.&amp;nbsp; Another approach to this would be to use a fluent interface that abstracts the plumbing code and leaves a test that is easier to comprehend.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a class="" title="FluentUiTest" href="http://erichexter.googlecode.com/svn/trunk/EndToEndSilverlightDemo/EndToEndSilverlightDemo/EndtoEndSilverlightDemo.Tests/IntegrationTestPartII.cs" target="_blank"&gt;&lt;img height="285" alt="FluentUiTest" src="http://static.flickr.com/3269/2432024392_69f4b19130.jpg" width="553" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In this code you will see the UiTestHelper class which hides more of the magic EnqeueXXXX calls to the SilverlightTest base class. This class also hides the code needed to add/remove the control to the test surface as well as call the TestComplete method.&amp;nbsp; This approach is less complicated and as a result allows for easier comprehension when you need to come back and change the code or the tests later in the project.&amp;nbsp; The tests are doing the exact same work and making the same assertion.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Subscribe to this feed: &lt;/em&gt;&lt;/strong&gt;&lt;a href="http://feeds.feedburner.com/erichexter"&gt;http://feeds.feedburner.com/erichexter&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The code for this project is located here : &lt;a href="http://erichexter.googlecode.com/svn/trunk/EndToEndSilverlightDemo"&gt;http://erichexter.googlecode.com/svn/trunk/EndToEndSilverlightDemo&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=2988" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/EricHexter/~4/274896113" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/hex/archive/tags/testing/default.aspx">testing</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/silverlight/default.aspx">silverlight</category><feedburner:origLink>http://www.lostechies.com/blogs/hex/archive/2008/04/21/silverlight-testing-part-2-making-the-test-easier-understand.aspx</feedburner:origLink></item><item><title>Silverlight Testing - Part 1 - Testing the untested.</title><link>http://feeds.feedburner.com/~r/EricHexter/~3/274453016/silverlight-testing-part-1-testing-the-untested.aspx</link><pubDate>Mon, 21 Apr 2008 04:49:00 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:2964</guid><dc:creator>erichexter</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/hex/rsscomments.aspx?PostID=2964</wfw:commentRss><comments>http://www.lostechies.com/blogs/hex/archive/2008/04/20/silverlight-testing-part-1-testing-the-untested.aspx#comments</comments><description>&lt;pre class="code"&gt;&lt;font face="Arial"&gt;The Silverlight testing framework was recently released and shows some great potential for being&lt;br /&gt; a first class application platform. For more information about the test framework see this post from&lt;br /&gt;&lt;/font&gt;&lt;a href="http://www.jeff.wilcox.name/2008/03/07/silverlight-unit-testing/"&gt;&lt;font face="Arial"&gt;Jeff Wilcox&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt;. &lt;/font&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;font face="Arial"&gt;To start off I choose to use a code sample that had some complexity in it.  Brad Abrams just posted &lt;br /&gt;a Silverlight walk &lt;/font&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2008/04/17/end-to-end-data-centric-application-with-silverlight-2.aspx"&gt;&lt;font face="Arial"&gt;End-to-End Data Centric Application with Silverlight 2&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt;.  This seemed like a good&lt;br /&gt; sample to use, since the post did not consider how to test the code.&lt;/font&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;font face="Arial"&gt;&lt;strong&gt;&lt;em&gt;Step 1:  Add a test project and test class. &lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;After the installing the assemblies and project templates, add a new unit test project to the solution.&lt;br /&gt;Change the test class to inherit from SilverlightTest.&lt;br /&gt;The following code demonstrates a simple integration test.  &lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;font face="Arial"&gt;This test does the following: &lt;/font&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;pre class="code"&gt;&lt;font face="Arial"&gt;Instantiates the page.&lt;/font&gt;&lt;/pre&gt;
&lt;li&gt;&lt;pre class="code"&gt;&lt;font face="Arial"&gt;Clears the local storage.&lt;/font&gt;&lt;/pre&gt;
&lt;li&gt;&lt;pre class="code"&gt;&lt;font face="Arial"&gt;Adds the page to the Test framework TestSurface.&lt;/font&gt;&lt;/pre&gt;
&lt;li&gt;&lt;pre class="code"&gt;&lt;font face="Arial"&gt;Enters the letter s into the text box.&lt;/font&gt;&lt;/pre&gt;
&lt;li&gt;&lt;pre class="code"&gt;&lt;font face="Arial"&gt;Clicks the search button.&lt;/font&gt;&lt;/pre&gt;
&lt;li&gt;&lt;pre class="code"&gt;&lt;font face="Arial"&gt;Verifies that 9 products are displayed in the DataGrid.&lt;/font&gt;&lt;/pre&gt;
&lt;li&gt;&lt;pre class="code"&gt;&lt;font face="Arial"&gt;Removes the page from the TestSurface.&lt;/font&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre class="code"&gt;&lt;font face="Arial"&gt;&lt;br /&gt;Here is the code for the test class:&lt;/font&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;div class="csharpcode"&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;font color="#000000"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    [TestClass]&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font color="#000000"&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; The_data_page_should_load:SilverlightTest&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font color="#000000"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    {&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font color="#000000"&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font color="#000000"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        [TestMethod]&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font color="#000000"&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; When_searching_for_products_starting_with_s_nine_products_should_be_displayed()&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font color="#000000"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        {&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font color="#000000"&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            EndToEndSilverlightDemo.Page pageUnderTest = &lt;span class="kwrd"&gt;new&lt;/span&gt; EndToEndSilverlightDemo.Page();&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font color="#000000"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            IPageTestDriver testDriver = pageUnderTest;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font color="#000000"&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            testDriver.ClearLocalStorage();&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font color="#000000"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.Silverlight.TestSurface.Children.Add(pageUnderTest);&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font color="#000000"&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            testDriver.TypeSearchPrefix(&lt;span class="str"&gt;&amp;quot;s&amp;quot;&lt;/span&gt;);&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font color="#000000"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            testDriver.ClickSearchButton();&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font color="#000000"&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            Assert.AreEqual(9,testDriver.DisplayedProductRows);&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font color="#000000"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.Silverlight.TestSurface.Children.Remove(pageUnderTest);&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font color="#000000"&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        }&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font color="#000000"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    }&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;div class="csharpcode"&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class="csharpcode"&gt;Here is the Test Driver interface:&lt;/div&gt;
&lt;div class="csharpcode"&gt;
&lt;blockquote&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; IPageTestDriver&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;   {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;       &lt;span class="kwrd"&gt;void&lt;/span&gt; TypeSearchPrefix(&lt;span class="kwrd"&gt;string&lt;/span&gt; searchPrefix);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;       &lt;span class="kwrd"&gt;void&lt;/span&gt; ClickSearchButton();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;       &lt;span class="kwrd"&gt;int&lt;/span&gt; DisplayedProductRows { get; }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;       &lt;span class="kwrd"&gt;void&lt;/span&gt; ClearLocalStorage();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;       &lt;span class="kwrd"&gt;bool&lt;/span&gt; WebserviceHasReturnedData();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;   }&lt;/pre&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;pre class="code"&gt;Here is the portions of the Page class that implement the IPageTestDriver interface. It is a good idea to &lt;br /&gt;hide the complexity of the Page classes internal controls from the test class.  This is equivalent to &lt;br /&gt;creating a Test Fixture in other frameworks.  &lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;void&lt;/span&gt; IPageTestDriver.TypeSearchPrefix(&lt;span class="kwrd"&gt;string&lt;/span&gt; searchPrefix)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.txtProductString.Text = searchPrefix;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;void&lt;/span&gt; IPageTestDriver.ClickSearchButton()&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.Button_Click(&lt;span class="kwrd"&gt;this&lt;/span&gt;.btnOne,&lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;int&lt;/span&gt; IPageTestDriver.DisplayedProductRows&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            get { &lt;span class="kwrd"&gt;return&lt;/span&gt; (&lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;object&lt;/span&gt;&amp;gt;((IEnumerable&amp;lt;&lt;span class="kwrd"&gt;object&lt;/span&gt;&amp;gt;) &lt;span class="kwrd"&gt;this&lt;/span&gt;.dataGridResults.ItemsSource)).Count; }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &lt;span class="kwrd"&gt;void&lt;/span&gt; IPageTestDriver.ClearLocalStorage()&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            settings.Clear();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            settings.Save();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            dataGridResults.ItemsSource = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        &lt;span class="kwrd"&gt;bool&lt;/span&gt; IPageTestDriver.WebserviceHasReturnedData()&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; dataGridResults.ItemsSource != &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;    }&lt;/pre&gt;&lt;/div&gt;&lt;/blockquote&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class="csharpcode"&gt;Now run the test and everything is good right?&amp;nbsp; Not so.&amp;nbsp; But why is that?&lt;br /&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;a title="sl-test-failed" href="http://www.flickr.com/photos/45074821@N00/2430481984/"&gt;&lt;img height="396" alt="sl-test-failed" src="http://static.flickr.com/3223/2430481984_1997e3ac7e.jpg" width="318" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;br /&gt;The test has failed because the application is making an Asynchronous call to the web service.&amp;nbsp; This means &lt;br /&gt;our test runs and completes before the remote call to return data can complete and load the data into the data grid.&lt;/div&gt;
&lt;div class="csharpcode"&gt;&amp;nbsp;&lt;/div&gt;
&lt;h3&gt;Solution:&amp;nbsp; Use the Asynchronous features of the test framework.&lt;/h3&gt;
&lt;div class="csharpcode"&gt;The framework provides the functionality to be able to drive unit tests in an async fashion.&amp;nbsp; This allows the &lt;br /&gt;test to run and wait for a condition to be met before proceeding.&amp;nbsp; In this case on line 10 the EnqueueConditional&lt;br /&gt;call waits until the helper method returns true before the test proceeds with the next call.&lt;/div&gt;
&lt;blockquote&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        [TestMethod,Asynchronous]&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; When_searching_for_products_starting_with_s_nine_products_should_be_displayed_async()&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            EndToEndSilverlightDemo.Page pageUnderTest = &lt;span class="kwrd"&gt;new&lt;/span&gt; EndToEndSilverlightDemo.Page();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            IPageTestDriver testDriver = pageUnderTest;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            testDriver.ClearLocalStorage();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.Silverlight.TestSurface.Children.Add(pageUnderTest);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            EnqueueCallback(() =&amp;gt; testDriver.TypeSearchPrefix(&lt;span class="str"&gt;&amp;quot;s&amp;quot;&lt;/span&gt;));&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            EnqueueCallback(() =&amp;gt; testDriver.ClickSearchButton());&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            EnqueueConditional(testDriver.WebserviceHasReturnedData);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            EnqueueCallback(() =&amp;gt; Assert.AreEqual(9, testDriver.DisplayedProductRows));&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            EnqueueCallback(() =&amp;gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;.Silverlight.TestSurface.Children.Remove(pageUnderTest));&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            EnqueueTestComplete();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        }&lt;/pre&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;div class="csharpcode"&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class="csharpcode"&gt;And the results?....&lt;br /&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;a title="sl-test-passed" href="http://www.flickr.com/photos/45074821@N00/2429689269/"&gt;&lt;img alt="sl-test-passed" src="http://static.flickr.com/2187/2429689269_cd56db94ae.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;The test passes and verifies the full remote call to the web service as well as getting the data back into the user interface. &lt;br /&gt;Pretty cool?&amp;nbsp; This sample demonstrates that it is possible to test drive the user interface.&amp;nbsp; The code to do so is far from &lt;br /&gt;being readable and comprehendible.&amp;nbsp; The next post in this series will address the readability of the testing code and put a &lt;br /&gt;fluent interface around the ugly Enqueue method calls.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The source code for this sample is available here; &lt;a href="http://erichexter.googlecode.com/svn/trunk/EndToEndSilverlightDemo/EndToEndSilverlightDemo/"&gt;http://erichexter.googlecode.com/svn/trunk/EndToEndSilverlightDemo/EndToEndSilverlightDemo/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=2964" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/EricHexter/~4/274453016" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/hex/archive/tags/c_2300_/default.aspx">c#</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/testing/default.aspx">testing</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/silverlight/default.aspx">silverlight</category><feedburner:origLink>http://www.lostechies.com/blogs/hex/archive/2008/04/20/silverlight-testing-part-1-testing-the-untested.aspx</feedburner:origLink></item><item><title>Silverlight Testing framework bug - FrameworkElements are not visible on the TestSurface</title><link>http://feeds.feedburner.com/~r/EricHexter/~3/273907115/silverlight-testing-framework-bug-frameworkelements-are-not-visible-on-the-testsurface.aspx</link><pubDate>Sun, 20 Apr 2008 05:24:36 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:2962</guid><dc:creator>erichexter</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/hex/rsscomments.aspx?PostID=2962</wfw:commentRss><comments>http://www.lostechies.com/blogs/hex/archive/2008/04/20/silverlight-testing-framework-bug-frameworkelements-are-not-visible-on-the-testsurface.aspx#comments</comments><description>&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6a6b4e40-7ade-4c03-ad46-c13ee4a7aa62" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Unit%20Testing" rel="tag"&gt;Unit Testing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Test%20Framework" rel="tag"&gt;Test Framework&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Working with the Silverlight testing framework the last three weeks has been interesting.&amp;nbsp; I ran into a crazy intermittent bug which drove me made for about 2 hours.&amp;nbsp; The usercontrol that I was adding to the TestSurface would be visible about 50% of the time when running my tests. The test would still run and I could hear the audio portion of the videos that were playing as part of an integration test, but the Controls were not visible on the test surface. All I could see was the blank test surface and the testing framework status on the right side of the test runner. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;br /&gt;After resorting to reflector on the test framework I found that the TestSurface is a Grid control.&amp;nbsp; That got me to think that since my controls parent control is also a Grid control that maybe the nested grids are just having some sort of issue.&amp;nbsp; I ended up solving the problem by Adding my controls to a Canvas control and adding the Canvas instance to the TestSurface.&amp;nbsp; Code as follows......&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;em&gt;Subscribe to this feed: &lt;/em&gt;&lt;a href="http://feeds.feedburner.com/erichexter"&gt;&lt;em&gt;http://feeds.feedburner.com/erichexter&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&amp;nbsp; &lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="si-testing-testsurfacebug" href="http://www.flickr.com/photos/45074821@N00/2426484873/"&gt;&lt;img alt="si-testing-testsurfacebug" src="http://static.flickr.com/2183/2426484873_04cd4296a5.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;This solved my problem... The issue is not with the test framework as much as the silverlight runtime.&amp;nbsp; It is still beta so what do you expect?&lt;/p&gt; &lt;p&gt;More posts on the test framework, both unit testing and integration testing, to come soon.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Additional Info:&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt; For more information about the silverlight testing framework see: &lt;a href="http://www.jeff.wilcox.name/2008/03/31/silverlight2-unit-testing/"&gt;http://www.jeff.wilcox.name/2008/03/31/silverlight2-unit-testing/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=2962" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/EricHexter/~4/273907115" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/hex/archive/tags/testing/default.aspx">testing</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/silverlight/default.aspx">silverlight</category><feedburner:origLink>http://www.lostechies.com/blogs/hex/archive/2008/04/20/silverlight-testing-framework-bug-frameworkelements-are-not-visible-on-the-testsurface.aspx</feedburner:origLink></item><item><title>ASP.Net MVC framework - New version of the MVC Contrib project! - v 0.0.1.101</title><link>http://feeds.feedburner.com/~r/EricHexter/~3/273521918/asp-net-mvc-framework-new-version-of-the-mvc-contrib-project-v-0-0-1-101.aspx</link><pubDate>Sat, 19 Apr 2008 12:38:00 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:2956</guid><dc:creator>erichexter</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/hex/rsscomments.aspx?PostID=2956</wfw:commentRss><comments>http://www.lostechies.com/blogs/hex/archive/2008/04/19/asp-net-mvc-framework-new-version-of-the-mvc-contrib-project-v-0-0-1-101.aspx#comments</comments><description>&lt;p&gt;There was a new source code release of the &lt;a href="http://shrinkster.com/x4x"&gt;Asp.Net MVC framework&lt;/a&gt; .&amp;nbsp; We just got the MVC Contrib project upgraded to work against the new release.&lt;/p&gt;
&lt;p&gt;You can find the &lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=MVCContrib&amp;amp;ReleaseId=12711"&gt;release here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;First I would like to thank &lt;a href="http://blog.jeremyskinner.me.uk/"&gt;Jeremy Skinner&lt;/a&gt; for his hard work upgrading the release! &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Here is what changed in the release:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Upgraded to the 0416 Source Code drop of ASP.NET MVC. 
&lt;li&gt;Moved most of ConventionController&amp;#39;s logic into ConventionControllerActionInvoker. 
&lt;li&gt;ControllerDescriptor now only treats methods that return an ActionResult as a valid action. 
&lt;li&gt;Moved the filters implementation more in line with the implementation in ControllerActionInvoker. 
&lt;li&gt;Removed the ReturnBinders implementation. The same result can be achieved by using custom ActionResults. 
&lt;li&gt;Introduced XmlResult to replace XmlReturnBinder. 
&lt;li&gt;Added RenderText and RenderXML methods to ConventionController. 
&lt;li&gt;TestControllerBuilder no longer proxies controllers or captures renderview/redirect calls&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Keep up to date by subscribing to &lt;a href="http://feeds.feedburner.com/EricHexter"&gt;http://feeds.feedburner.com/EricHexter&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Do you twitter?&amp;nbsp; You can follow the project on twitter here: &lt;a href="http://twitter.com/mvccontrib"&gt;http://twitter.com/mvccontrib&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=2956" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/EricHexter/~4/273521918" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/hex/archive/tags/mvc/default.aspx">mvc</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/mvccontrib/default.aspx">mvccontrib</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/Asp.Net/default.aspx">Asp.Net</category><feedburner:origLink>http://www.lostechies.com/blogs/hex/archive/2008/04/19/asp-net-mvc-framework-new-version-of-the-mvc-contrib-project-v-0-0-1-101.aspx</feedburner:origLink></item><item><title>ASP.Net MVC - MvcContrib - We need your opinion!</title><link>http://feeds.feedburner.com/~r/EricHexter/~3/260683976/asp-net-mvc-mvccontrib-we-need-your-opinion.aspx</link><pubDate>Sun, 30 Mar 2008 11:22:00 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:2717</guid><dc:creator>erichexter</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/hex/rsscomments.aspx?PostID=2717</wfw:commentRss><comments>http://www.lostechies.com/blogs/hex/archive/2008/03/30/asp-net-mvc-mvccontrib-we-need-your-opinion.aspx#comments</comments><description>&lt;p&gt;I started working with sandcastle to generate api documentation for the Asp.Net MVC - MvcContrib project (&lt;a href="http://mvccontrib.org/"&gt;http://MvcContrib.org&lt;/a&gt;).&amp;nbsp; I wanted to get some feedback as to how useful the general API Namespace/Class listings are. Below are two of the outputs of the documentation. I encourage you to take a quick look at it so that you can provide feedback. 
&lt;p&gt;&lt;em&gt;&lt;br /&gt;&lt;strong&gt;To Subscribe to this RSS feed use this url: &lt;/strong&gt;&lt;/em&gt;&lt;a href="http://feeds.feedburner.com/EricHexter"&gt;&lt;em&gt;&lt;strong&gt;http://feeds.feedburner.com/EricHexter&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; 
&lt;p&gt;&lt;br /&gt;Here is an html versions that the project could host online. 
&lt;p&gt;&lt;a href="http://mvccontrib.googlecode.com/svn/trunk/Documentation/Help/Index.html"&gt;http://mvccontrib.googlecode.com/svn/trunk/Documentation/Help/Index.html&lt;/a&gt; 
&lt;p&gt;Here is a CHM help file.&amp;nbsp; To view this you will need to Save As, than goto the file properties and click Unblock.&amp;nbsp; If you do not unblock the file you will see the navigation tree, but all of the content will display a page not found error. 
&lt;p&gt;&lt;a href="http://mvccontrib.googlecode.com/svn/trunk/Documentation/Help/MvcContrib-Api-Documentation.chm"&gt;http://mvccontrib.googlecode.com/svn/trunk/Documentation/Help/MvcContrib-Api-Documentation.chm&lt;/a&gt; 
&lt;p&gt;Questions I need feedback on: 
&lt;ol&gt;
&lt;li&gt;Does having the Namespaces and classes browsable in this format provide and value as a user of the mvccontrib project?&amp;nbsp; 
&lt;li&gt;If all of the feature documentation from the CodePlex wiki was included in the help file would that make a difference to the value that this documentation provides? (The wiki docs are located here: &lt;a href="http://www.codeplex.com/MVCContrib/Wiki/View.aspx?title=Documentation&amp;amp;referringTitle=Home"&gt;http://www.codeplex.com/MVCContrib/Wiki/View.aspx?title=Documentation&amp;amp;referringTitle=Home&lt;/a&gt;) 
&lt;li&gt;Is there a better way to provide general api documentation, do you have some examples of something you like?&lt;/li&gt;&lt;/ol&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=2717" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/EricHexter/~4/260683976" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/hex/archive/tags/mvc/default.aspx">mvc</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/mvccontrib/default.aspx">mvccontrib</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/Asp.Net/default.aspx">Asp.Net</category><feedburner:origLink>http://www.lostechies.com/blogs/hex/archive/2008/03/30/asp-net-mvc-mvccontrib-we-need-your-opinion.aspx</feedburner:origLink></item><item><title>Eric Hexter - About Me</title><link>http://feeds.feedburner.com/~r/EricHexter/~3/258736665/eric-hexter-about-me.aspx</link><pubDate>Thu, 27 Mar 2008 03:53:00 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:2507</guid><dc:creator>erichexter</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/hex/rsscomments.aspx?PostID=2507</wfw:commentRss><comments>http://www.lostechies.com/blogs/hex/archive/2008/03/26/eric-hexter-about-me.aspx#comments</comments><description>&lt;p&gt;I thought I would take a moment to introduce myself and give some context around my opinions.&lt;/p&gt;
&lt;p&gt;For the past 12 years, I have been developing software professionally in consulting, product development, corporate IT, premium Brand web sites and e-commerce.&amp;nbsp; Until recently, I&amp;nbsp;worked for a well-known golf equipment company as the Director of eCommerce Technology.&amp;nbsp; In this role I worked on a number of ecommerce sites and learned a great deal about online retail for both new and used products.&amp;nbsp; I learned a great deal about online marketing and order fulfillment.&amp;nbsp; It was a&amp;nbsp;terrific opportunity&amp;nbsp;and has really added to my previous experiences working for manufacturing companies.&lt;/p&gt;
&lt;p&gt;Recently, I&amp;nbsp;started a new job.&amp;nbsp; I am working in the role of Technical Architect for Ascentium.&amp;nbsp; I am very excited about the company in terms of culture and opportunities. More to come on this in the future.&lt;/p&gt;
&lt;p&gt;Primarily, I&amp;nbsp;use Microsoft .Net technologies and the Microsoft application stack (IIS, ASP.Net, Sql server).&amp;nbsp; I had the unfortunate experience to develop, maintain, support, and bring back to life web site based on Microsoft Commerce Server 2002.&amp;nbsp; This led me to developing some skills in running command line debuggers on production servers and analyzing User Mode memory dumps to help facilitate conversations with the Commerce Server support team about their use of COM and unmanaged code in a managed domain. If you ever meet me in person I could go into great deal about this.&lt;/p&gt;
&lt;p&gt;I am an advocate of agile project management and software engineering practices.&amp;nbsp; I have learned the hard way that writing un-testable tightly coupled code gets you no where fast.&amp;nbsp; In fact, that type of code usually keeps one in the same spot unable to change and adapt software to the ever-changing needs of the business that uses said software.&lt;/p&gt;
&lt;p&gt;As an active member&amp;nbsp;in the Austin .Net Users Group, I am one of three directors who helps run the organization.&amp;nbsp; I organized and facilitated the 2007 code camp, which was a great success.&amp;nbsp; For the upcoming 2008 Code Camp, I will serve as an advisor. Many thanks to John Teague for chairing the 2008 Code Camp.&amp;nbsp; I have some new family commitments that just made running this camp unrealistic for me.&amp;nbsp; So I am glad to help pass the torch.&amp;nbsp; I have spent many phone calls and emails with user group leaders across the South Central district helping them understand how to run Code Camps and events, using what I learned from my experience.&amp;nbsp; I have spoken to User Groups and at the Code Camp as well.&amp;nbsp; My primary focus is around web site operations, deployment, and web farm management.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;I have been actively working on the following Open Source Projects:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://mvccontrib.org/"&gt;MvcContrib&lt;/a&gt;&amp;nbsp; - This is a project that fills in the gaps of the upcoming ASP.Net MVC framework.&amp;nbsp; There are many contributors and I am happy to be part of this project.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code.google.com/p/tarantino/"&gt;Tarantino&lt;/a&gt; - This is a project that has pulled together some libraries and utilities to facilitate application development and deployment.&amp;nbsp; The features that I am fond of is the Database Change Management tools, web farm management, and application deployment tools.&amp;nbsp; Kevin Hurwitz is the primary developer on this project and since he is not blogging I have encouraged his work on this and have been pitching in and really pushing to get some solid documentation in place so that the project can be easily picked up and used to help developer work less on infrastructure.&lt;/p&gt;
&lt;p&gt;TDD-Generator - This is a pet project that I am still working out.&amp;nbsp; It is a Visual Studio addin that generates Test,Interface, &amp;amp; Class files with a few keystrokes.&amp;nbsp; I found that Visual Studio makes it very difficult and to do things the right way.&amp;nbsp; The intent of this project is to make creating the code files used in TDD easier and with less friction than developing using the Project-Add&amp;nbsp; New file metaphor that is built into Visual Studio.&amp;nbsp; Here is a screen cast which demonstrates the addin &lt;a href="http://erichexter.googlecode.com/svn/trunk/TestFirstGenerator/docs/ScreenCast.htm"&gt;http://erichexter.googlecode.com/svn/trunk/TestFirstGenerator/docs/ScreenCast.htm&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=2507" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/EricHexter/~4/258736665" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.lostechies.com/blogs/hex/archive/2008/03/26/eric-hexter-about-me.aspx</feedburner:origLink></item><item><title>New MvcContrib build released on CodePlex - Build 0.0.1.91 Beta</title><link>http://feeds.feedburner.com/~r/EricHexter/~3/258718648/new-mvccontrib-build-released-on-codeplex-build-0-0-1-91-beta.aspx</link><pubDate>Thu, 27 Mar 2008 03:10:00 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:2506</guid><dc:creator>erichexter</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/hex/rsscomments.aspx?PostID=2506</wfw:commentRss><comments>http://www.lostechies.com/blogs/hex/archive/2008/03/26/new-mvccontrib-build-released-on-codeplex-build-0-0-1-91-beta.aspx#comments</comments><description>&lt;p&gt;I just released the latest build in binary and source code format on CodePlex.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;To Subscribe to this RSS feed use this url: &lt;/em&gt;&lt;a href="http://feeds.feedburner.com/EricHexter"&gt;&lt;em&gt;http://feeds.feedburner.com/EricHexter&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;What&amp;#39;s new in this release?&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;The following items are changes from the previous release:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;Revision: 275&lt;/b&gt;&lt;br /&gt;- corrected some warnings/errors.&lt;br /&gt;- added ViewDataExtensions. This brings the functionality of the smartbag to ViewData.&lt;br /&gt;- now, we have easy adding and getting to and from ViewData. No more casting, and if you only put a single &amp;quot;Customer&amp;quot; in Viewdata using new Add() method, you just have to Get&amp;lt;Customer&amp;gt;(), and that&amp;#39;s it.&lt;br /&gt;&lt;b&gt;Revision: 272&lt;/b&gt;&lt;br /&gt;Patch 1018 By:alley Added support for Unity as IoC container.&lt;br /&gt;&lt;b&gt;Revision: 270&lt;/b&gt;&lt;br /&gt;Replaced all remaining occurrences of the MVCContrib namespace with MvcContrib. &lt;br /&gt;&lt;b&gt;Rev 267&lt;/b&gt;&lt;br /&gt;- the ability to use TestControllerBuilder with controllers that have constructor arguments&lt;br /&gt;- associated unit test&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You can download the release here:&lt;br /&gt;&lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=MVCContrib&amp;amp;ReleaseId=12005"&gt;https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=MVCContrib&amp;amp;ReleaseId=12005&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;The documentation for the features in the MvcContrib project are located here:&lt;br /&gt;&lt;a href="http://www.codeplex.com/MVCContrib/Wiki/View.aspx?title=Documentation&amp;amp;referringTitle=Home"&gt;http://www.codeplex.com/MVCContrib/Wiki/View.aspx?title=Documentation&amp;amp;referringTitle=Home&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;If you have some cool feature that adds to the MVC framework then contribute and share with the community! Here are details on how to contribute.&lt;br /&gt;&lt;a href="http://www.codeplex.com/MVCContrib/Wiki/View.aspx?title=Contribute&amp;amp;referringTitle=Home"&gt;http://www.codeplex.com/MVCContrib/Wiki/View.aspx?title=Contribute&amp;amp;referringTitle=Home&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=2506" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/EricHexter/~4/258718648" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/hex/archive/tags/mvc/default.aspx">mvc</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/mvccontrib/default.aspx">mvccontrib</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/Asp.Net/default.aspx">Asp.Net</category><feedburner:origLink>http://www.lostechies.com/blogs/hex/archive/2008/03/26/new-mvccontrib-build-released-on-codeplex-build-0-0-1-91-beta.aspx</feedburner:origLink></item><item><title>Batch file to Checkout all root level project trunks in a Subversion repository</title><link>http://feeds.feedburner.com/~r/EricHexter/~3/249652689/batch-file-to-checkout-all-root-level-project-trunks-in-a-subversion-repository.aspx</link><pubDate>Tue, 11 Mar 2008 17:46:15 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:2308</guid><dc:creator>erichexter</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/hex/rsscomments.aspx?PostID=2308</wfw:commentRss><comments>http://www.lostechies.com/blogs/hex/archive/2008/03/11/batch-file-to-checkout-all-root-level-project-trunks-in-a-subversion-repository.aspx#comments</comments><description>&lt;p&gt;Our source control tree is setup with the projects at the root of our server and each has a separate trunk, tags, and branches.&amp;nbsp; While this makes it very easy to have a location agnostic build and include all the dependencies in one place for a particular project, this aspect can be painful when you want to checkout the trunk of each project to a new developer machine.&amp;nbsp; I wrote a little batch file to ease the pain.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Sample Source Control Repository&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Project1&lt;br /&gt;&amp;nbsp;&amp;nbsp; trunk&lt;br /&gt;&amp;nbsp;&amp;nbsp; tags&lt;br /&gt;&amp;nbsp;&amp;nbsp; branches&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;Project2&lt;br /&gt;&amp;nbsp;&amp;nbsp; trunk&lt;br /&gt;&amp;nbsp;&amp;nbsp; tags&lt;br /&gt;&amp;nbsp;&amp;nbsp; branches&lt;/p&gt; &lt;p&gt;ect ...&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Batch file to pull checkout all of the trunks.&lt;/p&gt; &lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;background-color:#f4f4f4;"&gt; &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; set svnbin=&lt;span style="color:#006080;"&gt;&amp;quot;d:\Program Files\CollabNet Subversion Server\bin\svn.exe&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; set svnroot=http://sourceserver:8080/svn/cgi/&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt; %svnbin% list %svnroot%&amp;gt;projects.txt&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt; FOR /F &lt;span style="color:#006080;"&gt;&amp;quot;tokens=1&amp;quot;&lt;/span&gt; %%i IN (projects.txt) DO %svnbin% checkout %svnroot%%%itrunk %%i&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Subscribe to this feed:&lt;/em&gt;&lt;/strong&gt;&amp;nbsp; &lt;a title="http://feeds.feedburner.com/EricHexter" href="http://feeds.feedburner.com/EricHexter"&gt;http://feeds.feedburner.com/EricHexter&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;This is pretty easy to modify, simple replace your bin location for subversion executable and update the svnroot to the path to your subversion repository and you are good to go.&amp;nbsp; The one important gotcha here is that subversion is case sensitive.&amp;nbsp; I ran into a problem where our repository has some of the trunks starting with a lowercase t and other starting with a uppercase t.&amp;nbsp; In that case, I just added an additional line 4 with the uppercase Trunk.&amp;nbsp; That batch file roles on without stopping if there is a mismatch in the case of trunk.&lt;/p&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=2308" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/EricHexter/~4/249652689" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.lostechies.com/blogs/hex/archive/2008/03/11/batch-file-to-checkout-all-root-level-project-trunks-in-a-subversion-repository.aspx</feedburner:origLink></item><item><title>ASP.NET 3.5 Extensions Preview - New version of MS MVC is available.</title><link>http://feeds.feedburner.com/~r/EricHexter/~3/246267311/asp-net-3-5-extensions-preview-new-version-of-ms-mvc-is-available.aspx</link><pubDate>Wed, 05 Mar 2008 17:53:00 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:2265</guid><dc:creator>erichexter</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/hex/rsscomments.aspx?PostID=2265</wfw:commentRss><comments>http://www.lostechies.com/blogs/hex/archive/2008/03/05/asp-net-3-5-extensions-preview-new-version-of-ms-mvc-is-available.aspx#comments</comments><description>&lt;p&gt;As part of the Mix 08 conference a new version of the Microsoft MVC framework is available for download.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A9C6BC06-B894-4B11-8300-35BD2F8FC908&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=A9C6BC06-B894-4B11-8300-35BD2F8FC908&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The MvcContrib team will be working to get the contrib project up and running on the new version.&lt;/p&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=2265" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/EricHexter/~4/246267311" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/hex/archive/tags/mvc/default.aspx">mvc</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/mvccontrib/default.aspx">mvccontrib</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/Asp.Net/default.aspx">Asp.Net</category><feedburner:origLink>http://www.lostechies.com/blogs/hex/archive/2008/03/05/asp-net-3-5-extensions-preview-new-version-of-ms-mvc-is-available.aspx</feedburner:origLink></item><item><title>New MvcContrib build released on CodePlex - Build 0.0.1.75 Beta</title><link>http://feeds.feedburner.com/~r/EricHexter/~3/243277152/new-mvccontrib-build-released-on-codeplex-build-0-0-1-75-beta.aspx</link><pubDate>Fri, 29 Feb 2008 11:57:00 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:2234</guid><dc:creator>erichexter</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/hex/rsscomments.aspx?PostID=2234</wfw:commentRss><comments>http://www.lostechies.com/blogs/hex/archive/2008/02/29/new-mvccontrib-build-released-on-codeplex-build-0-0-1-75-beta.aspx#comments</comments><description>&lt;p&gt;I just released the latest build in binary and source code format on CodePlex.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;To Subscribe to this RSS feed use this url: &lt;/em&gt;&lt;a href="http://feeds.feedburner.com/EricHexter"&gt;&lt;em&gt;http://feeds.feedburner.com/EricHexter&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The following items are changes from the previous release:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added support for InputImage in FormHelper (new methods FormHelper.ImageButton()) 
&lt;li&gt;Added Password Tag 
&lt;li&gt;Added support for Password tag in FormHelper (new methods FormHelper.PasswordField()) 
&lt;li&gt;Updated test to maintain 100% on form helper and UI 
&lt;li&gt;Changed TextArea to use a full Close tag when value is empty instead of a XML tag close (&amp;quot;/&amp;gt;&amp;quot;). 
&lt;li&gt;Fixed UI.Html/FormHelperTester.cs tests to anticipate new results. 
&lt;li&gt;Patch #882 - tehlike ReturnBinder implementation ported from MonoRail. / Modified tests slightly to reach 100% coverage. 
&lt;li&gt;Patch #864 - Woil This patch cleans up some of the namespaces from the older MvcTestFramework to the new MvcContrib.TestHelper namespace. 
&lt;li&gt;Added comments to all of the TestHelper classes which should make them easier to use. Applied with minor modification - 
&lt;li&gt;Sample test project referenced the Debug directory of MvcContrib.TestHelper, which caused CommitterBuild to fail. Changed to use $(Configuration) instead. 
&lt;li&gt;Made methods on FormHelper virtual. Fixed the namespace for the ObjectFactoryDependencyResolver, SpringDependencyResolver and StructureMapDependencyResolver - they were under the UnitTests namespace. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;You can download the release here:&lt;br /&gt;&lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=MVCContrib&amp;amp;ReleaseId=11177"&gt;https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=MVCContrib&amp;amp;ReleaseId=11177&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;The documentation for the features in the MvcContrib project are located here:&lt;br /&gt;&lt;a href="http://www.codeplex.com/MVCContrib/Wiki/View.aspx?title=Documentation&amp;amp;referringTitle=Home"&gt;http://www.codeplex.com/MVCContrib/Wiki/View.aspx?title=Documentation&amp;amp;referringTitle=Home&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;If you have some cool feature that adds to the MVC framework then contribute and share with the community! Here are details on how to contribute.&lt;br /&gt;&lt;a href="http://www.codeplex.com/MVCContrib/Wiki/View.aspx?title=Contribute&amp;amp;referringTitle=Home"&gt;http://www.codeplex.com/MVCContrib/Wiki/View.aspx?title=Contribute&amp;amp;referringTitle=Home&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=2234" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/EricHexter/~4/243277152" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/hex/archive/tags/mvc/default.aspx">mvc</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/mvccontrib/default.aspx">mvccontrib</category><category domain="http://www.lostechies.com/blogs/hex/archive/tags/Asp.Net/default.aspx">Asp.Net</category><feedburner:origLink>http://www.lostechies.com/blogs/hex/archive/2008/02/29/new-mvccontrib-build-released-on-codeplex-build-0-0-1-75-beta.aspx</feedburner:origLink></item></channel></rss>
