<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Joe Field</title><link>http://joefield.mysite4now.com/blogs/blog/default.aspx</link><description>.NET Developer</description><dc:language>en-US</dc:language><generator>CommunityServer 1.1 (Build: 1.1.0.50607)</generator><item><title>Cross Domain Silverlight XAP Access in Silverlight 2</title><link>http://joefield.mysite4now.com/blogs/blog/archive/2008/12/16/7561.aspx</link><pubDate>Tue, 16 Dec 2008 21:15:00 GMT</pubDate><guid isPermaLink="false">f437b6bd-41b2-4cd3-9e1a-ff916b149d7a:7561</guid><dc:creator>joefield</dc:creator><slash:comments>0</slash:comments><comments>http://joefield.mysite4now.com/blogs/blog/comments/7561.aspx</comments><wfw:commentRss>http://joefield.mysite4now.com/blogs/blog/commentrss.aspx?PostID=7561</wfw:commentRss><description>I'm starting to get to grips with Silverlight and the first thing I wanted to do was fetch a xap file from a different host to that which was serving up the page.&lt;br&gt;&lt;br&gt;In other words, a page retrieved from &lt;i&gt;somehost &lt;/i&gt;containing a Silverlight object tag with source attribute equal to &lt;i&gt;http://someotherhost/somesite/silverlightcontrol.xap&lt;/i&gt;.&lt;br&gt;&lt;br&gt;Note the following points applicable to cross domain access:&lt;br&gt;&lt;ul&gt;&lt;li&gt;Unlike the case where your xap file is served up from the same host, the Silverlight runtime checks the MIME type in the HTTP header of your xap content when it has been served up from a different host.  So make sure that it is correctly set to &lt;b&gt;application/x-silverlight-app&lt;/b&gt; (not &lt;b&gt;application/x-silverlight-2&lt;/b&gt; - which wasted a good couple of hours of my time).  If you don't set it correctly you'll see the Silverlight runtime fetch the file (if you're spying in Fiddler or suchlike), then a great big nothing will happen.&lt;/li&gt;&lt;li&gt;If you want to access the DOM on the page containing the control from within your control's code you'll need to set the &lt;b&gt;enableHtmlAccess &lt;/b&gt;attribute to true in the object tag.&lt;/li&gt;&lt;li&gt;If you want to access scriptable types in your control's code from JavaScript you will need to add the &lt;b&gt;ExternalCallersFromCrossDomain&lt;/b&gt; attribute to the control's manifest and set it to &lt;b&gt;ScriptableOnly.  &lt;/b&gt;Note, however that you won't be able to subscribe to control events such as &lt;b&gt;onload&lt;/b&gt;.&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://joefield.mysite4now.com/aggbug.aspx?PostID=7561" width="1" height="1"&gt;</description></item><item><title>SQL Server Isolation Levels</title><link>http://joefield.mysite4now.com/blogs/blog/archive/2007/04/16/7177.aspx</link><pubDate>Mon, 16 Apr 2007 21:52:00 GMT</pubDate><guid isPermaLink="false">f437b6bd-41b2-4cd3-9e1a-ff916b149d7a:7177</guid><dc:creator>joefield</dc:creator><slash:comments>2</slash:comments><comments>http://joefield.mysite4now.com/blogs/blog/comments/7177.aspx</comments><wfw:commentRss>http://joefield.mysite4now.com/blogs/blog/commentrss.aspx?PostID=7177</wfw:commentRss><description>&lt;P&gt;Thanks to Andy Grout for working this stuff out with me...&lt;/P&gt;
&lt;P&gt;All isolation levels affect the way in which you &lt;B&gt;read&lt;/B&gt; data. They also affect the way others can update data because the type and duration of the locks differ. &lt;/P&gt;
&lt;H3&gt;Read Uncommitted&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Takes out no locks when issuing SELECT statements &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;So you can read other transactions' uncommitted data i.e. &lt;B&gt;&lt;I&gt;dirty reads&lt;/I&gt;&lt;/B&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Read Committed&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Prevents &lt;B&gt;&lt;I&gt;dirty reads&lt;/I&gt;&lt;/B&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Takes out a shared lock when issuing a SELECT statement (this prevents updates) &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;If another transaction has an exclusive lock your SELECT will block until the other completes &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Releases the shared lock when the &lt;B&gt;SELECT&lt;/B&gt; completes, not when the tranaction completes &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;So the same SELECT later on in the same transaction might return different data i.e. &lt;B&gt;&lt;I&gt;non-repeatable reads&lt;/I&gt;&lt;/B&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Repeatable Read&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Prevents &lt;B&gt;&lt;I&gt;dirty reads&lt;/I&gt;&lt;/B&gt; and &lt;B&gt;&lt;I&gt;non-repeatable reads&lt;/I&gt;&lt;/B&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Takes out shared locks when issuing SELECT statements and doesn't release them until the transaction ends &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;So prevents any data you read from changing via updates or deletes &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;But doesn't prevent new rows from being inserted into other pages &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;So your SELECT statement might still return more rows the second time you execute it i.e. &lt;B&gt;&lt;I&gt;phantom rows&lt;/I&gt;&lt;/B&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Serializable&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Prevents &lt;B&gt;&lt;I&gt;dirty reads&lt;/I&gt;&lt;/B&gt;, &lt;B&gt;&lt;I&gt;non-repeatable reads&lt;/I&gt;&lt;/B&gt; and &lt;B&gt;&lt;I&gt;phantom rows&lt;/I&gt;&lt;/B&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;In SQL 2000 and SQL 2005 takes out key-range locks, a special type of shared lock which prevents inserts into a range of values &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Ensures a SELECT statement always returns the same results within a transaction &lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://joefield.mysite4now.com/aggbug.aspx?PostID=7177" width="1" height="1"&gt;</description></item><item><title>Excel uses old .NET runtime</title><link>http://joefield.mysite4now.com/blogs/blog/archive/2007/02/21/7175.aspx</link><pubDate>Wed, 21 Feb 2007 17:12:00 GMT</pubDate><guid isPermaLink="false">f437b6bd-41b2-4cd3-9e1a-ff916b149d7a:7175</guid><dc:creator>joefield</dc:creator><slash:comments>1</slash:comments><comments>http://joefield.mysite4now.com/blogs/blog/comments/7175.aspx</comments><wfw:commentRss>http://joefield.mysite4now.com/blogs/blog/commentrss.aspx?PostID=7175</wfw:commentRss><description>Peachy one.&amp;nbsp; I wrote a .NET COM callable wrapper and attempted to invoke it from Excel.&amp;nbsp; I got:&lt;br&gt;&lt;br&gt;&lt;b&gt;The format of the file 'xxx.dll' is invalid&lt;/b&gt;&lt;br&gt;&lt;br&gt;fuslogvw confirmed that this was to do with the version of the .NET runtime being used - v1.1.4322 instead of v2.0.50727.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://mcfunley.com/cs/blogs/dan/archive/2006/02/07/947.aspx"&gt;This blog entry&lt;/a&gt; describes the problem and the fix for it.&lt;img src="http://joefield.mysite4now.com/aggbug.aspx?PostID=7175" width="1" height="1"&gt;</description></item><item><title>MSMQ - Unable to load MQQM.DLL</title><link>http://joefield.mysite4now.com/blogs/blog/archive/2006/02/23/7163.aspx</link><pubDate>Thu, 23 Feb 2006 21:22:00 GMT</pubDate><guid isPermaLink="false">f437b6bd-41b2-4cd3-9e1a-ff916b149d7a:7163</guid><dc:creator>joefield</dc:creator><slash:comments>1</slash:comments><comments>http://joefield.mysite4now.com/blogs/blog/comments/7163.aspx</comments><wfw:commentRss>http://joefield.mysite4now.com/blogs/blog/commentrss.aspx?PostID=7163</wfw:commentRss><description>&lt;P&gt;So here I am starting to work with MSMQ 2.0 on Windows 2000 and enjoying myself hugely when I run into this message when trying to install MSMQ after having uninstalled it.&lt;/P&gt;
&lt;P&gt;Error: Unable to Load MQQM.dll&lt;BR&gt;Error Code: 0x7F&lt;/P&gt;
&lt;P&gt;Luckily there is this &lt;A href="http://support.microsoft.com/default.aspx?kbid=322156"&gt;Knowledge Base Article&lt;/A&gt; to help - but it ain't pretty.&lt;/P&gt;&lt;img src="http://joefield.mysite4now.com/aggbug.aspx?PostID=7163" width="1" height="1"&gt;</description></item><item><title>CruiseControl.NET from Scratch v1.0</title><link>http://joefield.mysite4now.com/blogs/blog/archive/2005/12/04/7157.aspx</link><pubDate>Sun, 04 Dec 2005 18:27:00 GMT</pubDate><guid isPermaLink="false">f437b6bd-41b2-4cd3-9e1a-ff916b149d7a:7157</guid><dc:creator>joefield</dc:creator><slash:comments>2</slash:comments><comments>http://joefield.mysite4now.com/blogs/blog/comments/7157.aspx</comments><wfw:commentRss>http://joefield.mysite4now.com/blogs/blog/commentrss.aspx?PostID=7157</wfw:commentRss><description>&lt;p&gt;Just updated my article: &lt;b&gt;&lt;a href="http://joefield.mysite4now.com/blogs/blog/articles/146.aspx"&gt;Cruise Control .NET from Scratch v1.0&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Loads of nice changes in this version, particularly in the cctray application.&amp;nbsp; It's also even easier to set things up so the article's getting shorter! The previous article for version 0.9 is now &lt;b&gt;&lt;a href="http://joefield.mysite4now.com/blogs/blog/articles/7155.aspx"&gt;here&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;&lt;img src="http://joefield.mysite4now.com/aggbug.aspx?PostID=7157" width="1" height="1"&gt;</description></item><item><title>If your SourceSafe working folders are broken...</title><link>http://joefield.mysite4now.com/blogs/blog/archive/2005/05/30/247.aspx</link><pubDate>Tue, 31 May 2005 01:10:00 GMT</pubDate><guid isPermaLink="false">f437b6bd-41b2-4cd3-9e1a-ff916b149d7a:247</guid><dc:creator>joefield</dc:creator><slash:comments>376</slash:comments><comments>http://joefield.mysite4now.com/blogs/blog/comments/247.aspx</comments><wfw:commentRss>http://joefield.mysite4now.com/blogs/blog/commentrss.aspx?PostID=247</wfw:commentRss><description>&lt;P&gt;This happens to me a lot and it's easy to fix.&amp;nbsp; The symptom is that SourceSafe suddenly decides, with the aid of Visual Studio, that the working folders for a project or a whole project tree are not the ones you want.&lt;/P&gt;
&lt;P&gt;Close SourceSafe on your client machine.&amp;nbsp; Also close Visual Studio.&amp;nbsp; Then on your SourceSafe server find the users/&amp;lt;yourname&amp;gt;/ss.ini file.&amp;nbsp; At the end of the file are the details of your working folders, a series of lines that look like this:&lt;/P&gt;
&lt;P&gt;[$/CITest]&lt;BR&gt;Dir (JFIELD) = D:\Projects\CITest&lt;/P&gt;
&lt;P&gt;Delete the ones you don't like and save the file.&lt;/P&gt;&lt;img src="http://joefield.mysite4now.com/aggbug.aspx?PostID=247" width="1" height="1"&gt;</description></item><item><title>Share and Pin in Visual SourceSafe</title><link>http://joefield.mysite4now.com/blogs/blog/archive/2005/05/30/246.aspx</link><pubDate>Tue, 31 May 2005 00:59:00 GMT</pubDate><guid isPermaLink="false">f437b6bd-41b2-4cd3-9e1a-ff916b149d7a:246</guid><dc:creator>joefield</dc:creator><slash:comments>25</slash:comments><comments>http://joefield.mysite4now.com/blogs/blog/comments/246.aspx</comments><wfw:commentRss>http://joefield.mysite4now.com/blogs/blog/commentrss.aspx?PostID=246</wfw:commentRss><description>&lt;p&gt;I've found it useful from time to time to share and pin in SourceSafe when creating branches so thought I'd write it up here. The idea is that you share a labelled version, creating a new project based on that label. Each file in the project is pinned to a specific version. The advantage of this is that you need to explicitly branch each file that you intend to modify. And this in turn means that you have an easy indicator (the pinned icon) that a file has not been branched. This makes merging much easier, which can be no bad thing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stage 1: Share and Pin.&lt;/strong&gt; Select the project you want to share and view its history (Tools -&amp;gt; Show History). Select a label. Click on the share button and select the node you want as the parent of the copied project. Don't check the "branch after share" checkbox. You will be prompted to input a name for the new project. Also select the "recursive" option This creates a new project in SourceSafe with all the files pinned to the labelled version. Do a recursive get of the new project from SourceSafe - don't use the "Open From Source Control" Visual Studio menu option.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stage 2: Branch Solution.&lt;/strong&gt; Branch the .sln and.vsscc files by using the Branch command from the SourceSafe menu. Then check them out.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stage 3: Change Source Control Bindings.&lt;/strong&gt; A nasty one this. Sometimes I manually edit the new .sln file to make the bindings point to the correct path, or if I'm feeling less gung ho I open the new solution in Visual Studio and use the "Change Source Control" menu option to change the bindings. Be aware that this can seriously damage your SourceSafe working directories. See &lt;a href="http://joefield.mysite4now.com/blogs/blog/archive/2005/05/30/247.aspx"&gt;my next post&lt;/a&gt; for how to fix this.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stage 4: Working with the new project.&lt;/strong&gt; The new files are pinned in SourceSafe - a useful visual indicator, so they need to be manually branched using the SourceSafe GUI before you can check them out with Visual Studio. Visual Studio will tell you that the checkout failed if you attempt to check out a pinned file. Select the file in SourceSafe that you need to branch and use the "Branch" command from the "SourceSafe" menu.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stage 5: Merging changes in the branch back into the main project.&lt;/strong&gt; Use the unpinned files as a visual indicator to help with identification of modified files. If you're feeling cautious (as I normally am) perform a manual merge using your favourite compare tool.&amp;nbsp;If you want to live really dangerously, select the file in the main project and choose "Merge Branches" from the "SourceSafe" menu. Sometimes you'll see the dodgy visual merge tool, sometimes you'll receive no feedback at all! &lt;/p&gt;&lt;img src="http://joefield.mysite4now.com/aggbug.aspx?PostID=246" width="1" height="1"&gt;</description></item><item><title>Array Comparison in NUnit v2.2</title><link>http://joefield.mysite4now.com/blogs/blog/archive/2005/05/09/226.aspx</link><pubDate>Mon, 09 May 2005 17:00:00 GMT</pubDate><guid isPermaLink="false">f437b6bd-41b2-4cd3-9e1a-ff916b149d7a:226</guid><dc:creator>joefield</dc:creator><slash:comments>28</slash:comments><comments>http://joefield.mysite4now.com/blogs/blog/comments/226.aspx</comments><wfw:commentRss>http://joefield.mysite4now.com/blogs/blog/commentrss.aspx?PostID=226</wfw:commentRss><description>&lt;P&gt;Ran into this today. Was looking at some code written by &lt;A href="http://antonymarcano.testingreflections.com/"&gt;Antony Marcano&lt;/A&gt; and noticed something which, greatly simplified, would amount to this: &lt;/P&gt;
&lt;P&gt;[Test]&lt;BR&gt;public void Test() &lt;BR&gt;{&lt;BR&gt;&amp;nbsp;object[] a1 = new object[] {"First", "Second", "Third"};&lt;BR&gt;&amp;nbsp;object[] a2 = new object[] {"First", "Second", "Third"}; &lt;BR&gt;&amp;nbsp;Assert.AreEqual(a1, a2); &lt;BR&gt;} &lt;/P&gt;
&lt;P&gt;This test was passing. Surely this should fail. But it turns out that NUnit v2.2 changes the reference comparison semantics for arrays. From the docs:&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;I&gt;Starting with version 2.2, special provision is also made for comparing arrays. Two arrays will be treated as equal by Assert.AreEqual if they are the same length and each of the corresponding elements is equal.&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;img src="http://joefield.mysite4now.com/aggbug.aspx?PostID=226" width="1" height="1"&gt;</description></item><item><title>Character Set Shenanigans</title><link>http://joefield.mysite4now.com/blogs/blog/archive/2005/05/05/222.aspx</link><pubDate>Thu, 05 May 2005 15:57:00 GMT</pubDate><guid isPermaLink="false">f437b6bd-41b2-4cd3-9e1a-ff916b149d7a:222</guid><dc:creator>joefield</dc:creator><slash:comments>23</slash:comments><comments>http://joefield.mysite4now.com/blogs/blog/comments/222.aspx</comments><wfw:commentRss>http://joefield.mysite4now.com/blogs/blog/commentrss.aspx?PostID=222</wfw:commentRss><description>&lt;P&gt;For various reasons I've been working a lot at understanding character sets recently. There's a wealth of knowledge out there, not least &lt;A href="http://www.joelonsoftware.com/articles/Unicode.html"&gt;Joel's excellent introductory article&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;I also found &lt;A href="http://www.yoda.arachsys.com/csharp/unicode.html"&gt;Jon's resources&lt;/A&gt; very useful. And excellent character set tables &lt;A href="http://www.columbia.edu/kermit/csettables.html"&gt;here&lt;/A&gt;. And Ultra Edit text editor of course - which shows you Hex for Unicode, UTF8, 1252 etc.&lt;/P&gt;
&lt;P&gt;Interesting things (for me, living in Western Europe) were: 
&lt;UL&gt;
&lt;LI&gt;Typing Alt + 243 on the numeric keypad will input the character "&amp;#190;". This is because it selects the code from the IBM 850 code page. 
&lt;LI&gt;But... typing Alt + 0243 on the numeric keypad will input the character "&amp;#243;". This time the code is selected from the Western European 1252 character set. 
&lt;LI&gt;The Euro symbol goes walkies a bit - in ISO8859-1 (Latin 1) it wasn't present. It's in ISO8859-15 at 164 decimal. But in 1252 it's at 128 decimal. And its Unicode code point is 0x20AC.
&lt;LI&gt;ISO8859-1 occupies the first 256 code positions (and ASCII the first 128 positions) of the UCS. 
&lt;LI&gt;Latin 1 and 1252 are identical from 160 to 255.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I could go on but someone might get sleepy.&lt;/P&gt;&lt;img src="http://joefield.mysite4now.com/aggbug.aspx?PostID=222" width="1" height="1"&gt;</description></item><item><title>Cruise Control .NET v0.9</title><link>http://joefield.mysite4now.com/blogs/blog/archive/2005/05/04/215.aspx</link><pubDate>Thu, 05 May 2005 04:12:00 GMT</pubDate><guid isPermaLink="false">f437b6bd-41b2-4cd3-9e1a-ff916b149d7a:215</guid><dc:creator>joefield</dc:creator><slash:comments>27</slash:comments><comments>http://joefield.mysite4now.com/blogs/blog/comments/215.aspx</comments><wfw:commentRss>http://joefield.mysite4now.com/blogs/blog/commentrss.aspx?PostID=215</wfw:commentRss><description>&lt;p&gt;At last! &lt;b&gt;Cruise Control .NET from Scratch&lt;/b&gt; for version 0.9 is &lt;a href="http://joefield.mysite4now.com/blog/articles/146.aspx"&gt;here&lt;/a&gt;. Now updated for NAnt 0.85 and NUnit 2.2. The previous one for version 0.7 is &lt;a href="http://joefield.mysite4now.com/blog/articles/220.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I'm looking forward to getting into this version with a large system - multiple projects - multiple build servers - fantastic! &lt;/p&gt;&lt;img src="http://joefield.mysite4now.com/aggbug.aspx?PostID=215" width="1" height="1"&gt;</description></item><item><title>Cruise Control .NET v0.7</title><link>http://joefield.mysite4now.com/blogs/blog/archive/2004/11/28/188.aspx</link><pubDate>Mon, 29 Nov 2004 03:09:00 GMT</pubDate><guid isPermaLink="false">f437b6bd-41b2-4cd3-9e1a-ff916b149d7a:188</guid><dc:creator>joefield</dc:creator><slash:comments>21</slash:comments><comments>http://joefield.mysite4now.com/blogs/blog/comments/188.aspx</comments><wfw:commentRss>http://joefield.mysite4now.com/blogs/blog/commentrss.aspx?PostID=188</wfw:commentRss><description>&lt;p&gt;I have updated my &lt;a href="http://joefield.mysite4now.com/blog/articles/146.aspx"&gt;Cruise Control .NET from Scratch article&lt;/a&gt; to bring it in line with version 0.7.&amp;nbsp; I have retained the previous one for version 0.6.1 &lt;a href="http://joefield.mysite4now.com/blog/articles/187.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Next task is to bring in the new NAnt 0.85RC1 and NUnit 2.2 support to bring everything up to date.&lt;/p&gt;&lt;img src="http://joefield.mysite4now.com/aggbug.aspx?PostID=188" width="1" height="1"&gt;</description></item><item><title>Automated Builds and Assembly Versions</title><link>http://joefield.mysite4now.com/blogs/blog/archive/2004/10/29/182.aspx</link><pubDate>Fri, 29 Oct 2004 20:47:00 GMT</pubDate><guid isPermaLink="false">f437b6bd-41b2-4cd3-9e1a-ff916b149d7a:182</guid><dc:creator>joefield</dc:creator><slash:comments>10</slash:comments><comments>http://joefield.mysite4now.com/blogs/blog/comments/182.aspx</comments><wfw:commentRss>http://joefield.mysite4now.com/blogs/blog/commentrss.aspx?PostID=182</wfw:commentRss><description>&lt;p&gt;We had implemented a workable solution to the problem of stamping assemblies with the Cruise Control build number using NAnt when we found this which finishes the job.&amp;nbsp; Very elegant.&lt;/p&gt;
&lt;div&gt;&lt;span class="905194812-29102004"&gt;&lt;font face="Arial" size="2"&gt;&lt;a href="http://bitarray.co.uk/marc/archive/2004/08/17/273.aspx"&gt;http://bitarray.co.uk/marc/archive/2004/08/17/273.aspx&lt;/a&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span class="905194812-29102004"&gt;&lt;font face="Arial" size="2"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span class="905194812-29102004"&gt;&lt;font face="Arial" size="2"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;img src="http://joefield.mysite4now.com/aggbug.aspx?PostID=182" width="1" height="1"&gt;</description></item><item><title>XSL understood (almost)</title><link>http://joefield.mysite4now.com/blogs/blog/archive/2004/09/06/176.aspx</link><pubDate>Tue, 07 Sep 2004 03:31:00 GMT</pubDate><guid isPermaLink="false">f437b6bd-41b2-4cd3-9e1a-ff916b149d7a:176</guid><dc:creator>joefield</dc:creator><slash:comments>22</slash:comments><comments>http://joefield.mysite4now.com/blogs/blog/comments/176.aspx</comments><wfw:commentRss>http://joefield.mysite4now.com/blogs/blog/commentrss.aspx?PostID=176</wfw:commentRss><description>My comprehension of XSL has just taken a large leap forward thanks to &lt;a href="http://www.dpawson.co.uk/xsl/sect2/defaultrule.html"&gt;this FAQ section&lt;/a&gt; on built-in rules by Dave Pawson.  I had been staring at an example in Fowler's Enterprise Patterns book wondering what on earth was going on.  Now I know.&lt;img src="http://joefield.mysite4now.com/aggbug.aspx?PostID=176" width="1" height="1"&gt;</description></item><item><title>NUnit 2.2 and NAnt</title><link>http://joefield.mysite4now.com/blogs/blog/archive/2004/07/16/165.aspx</link><pubDate>Sat, 17 Jul 2004 03:00:00 GMT</pubDate><guid isPermaLink="false">f437b6bd-41b2-4cd3-9e1a-ff916b149d7a:165</guid><dc:creator>joefield</dc:creator><slash:comments>21</slash:comments><comments>http://joefield.mysite4now.com/blogs/blog/comments/165.aspx</comments><wfw:commentRss>http://joefield.mysite4now.com/blogs/blog/commentrss.aspx?PostID=165</wfw:commentRss><description>Neil has pointed out, after a discussion with Charlie Poole, that rather than try and make the nunit2 task work in NAnt, you can just use an exec command in NAnt to run the a different version of NUnit.   Nice simple solution.  Thanks!&lt;img src="http://joefield.mysite4now.com/aggbug.aspx?PostID=165" width="1" height="1"&gt;</description></item><item><title>Dr Neil on CruiseControl.NET</title><link>http://joefield.mysite4now.com/blogs/blog/archive/2004/07/07/161.aspx</link><pubDate>Thu, 08 Jul 2004 02:42:00 GMT</pubDate><guid isPermaLink="false">f437b6bd-41b2-4cd3-9e1a-ff916b149d7a:161</guid><dc:creator>joefield</dc:creator><slash:comments>17</slash:comments><comments>http://joefield.mysite4now.com/blogs/blog/comments/161.aspx</comments><wfw:commentRss>http://joefield.mysite4now.com/blogs/blog/commentrss.aspx?PostID=161</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://drneil.blogspot.com/"&gt;Dr Neil&lt;/a&gt; has provided some excellent feedback on the &lt;a href="http://joefield.mysite4now.com/blog/articles/146.aspx"&gt;CruiseControl.NET article&lt;/a&gt;. As a result I've added a new bit about what happens when you get a stranded ss.exe instance (lots of remoting errors when you next run cc.exe). &lt;/p&gt;
&lt;p&gt;Unfortunately I wasn't able to shed any light on how to get NAnt to work with NUnit v2.2. I tried to rebuild NAnt linking to the NUnit v2.2 assemblies but there appear to have been a whole lot of changes under the NUnit hood.&lt;/p&gt;
&lt;p&gt;Anyone got any ideas?&lt;/p&gt;&lt;img src="http://joefield.mysite4now.com/aggbug.aspx?PostID=161" width="1" height="1"&gt;</description></item></channel></rss>