<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Annoying problems</title>
        <link>http://geekswithblogs.net/EltonStoneman/category/8059.aspx</link>
        <description>Annoying problems</description>
        <language>en-GB</language>
        <copyright>EltonStoneman</copyright>
        <managingEditor>elton.stoneman@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>jQuery Date Validation in Chrome</title>
            <link>http://geekswithblogs.net/EltonStoneman/archive/2009/10/29/jquery-date-validation-in-chrome.aspx</link>
            <description>&lt;p style="TEXT-ALIGN: center"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;[Source: &lt;a href="http://geekswithblogs.net/EltonStoneman"&gt;http://geekswithblogs.net/EltonStoneman&lt;/a&gt;] &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;We had a fiddly issue with date validation in an ASP.NET MVC page failing for a valid date in Chrome, but passing in Firefox, IE etc. Tracing through our own code and &lt;a href="http://xval.codeplex.com/"&gt;xVal&lt;/a&gt;, the issue was narrowed down to the &lt;a href="http://plugins.jquery.com/project/validate"&gt;jQuery validation plugin&lt;/a&gt; (jquery.validate.js). For simple date validation, the library instantiates a date object from the given text value and lets JavaScript raise errors for invalid dates: &lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Courier New"&gt;    date: &lt;span style="COLOR: blue"&gt;function&lt;/span&gt;(value, element) { &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Courier New"&gt;     &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.optional(element) || !/Invalid|NaN/.test(&lt;span style="COLOR: blue"&gt;new&lt;/span&gt; Date(value)); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Courier New"&gt;    },&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;Chrome seems to ignore the current locale when it creates the date object, so a valid date in UK &lt;em&gt;dd/mm/yy&lt;/em&gt; format – 29/10/2009 – fails as Chrome seems to interpret it in US &lt;em&gt;mm/dd/yy &lt;/em&gt;format. Easy to test outside of all other code by entering some simple JavaScript into the address bar: &lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;    javascript:new Date('29/10/2009').toString() &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Which Firefox renders as expected: &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://geekswithblogs.net/images/geekswithblogs_net/eltonstoneman/102909_1920_jQueryDateV1.png" /&gt; &lt;/p&gt;
&lt;p&gt;- as does IE (even IE6): &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://geekswithblogs.net/images/geekswithblogs_net/eltonstoneman/102909_1920_jQueryDateV2.png" /&gt; &lt;/p&gt;
&lt;p&gt;- but which Chrome renders as an invalid date: &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://geekswithblogs.net/images/geekswithblogs_net/eltonstoneman/102909_1920_jQueryDateV3.png" /&gt; &lt;/p&gt;
&lt;p&gt;You can also test it by navigating to the &lt;a href="http://docs.jquery.com/Plugins/Validation/Methods/date"&gt;jQuery date validation sample page&lt;/a&gt;, and checking results for the same date in different browsers. &lt;/p&gt;
&lt;p&gt;The fix is a simple change to the jQuery script to force the use of the current locale: &lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Courier New"&gt;    &lt;span style="COLOR: green"&gt;// http://docs.jquery.com/Plugins/Validation/Methods/date &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Courier New"&gt;    date: &lt;span style="COLOR: blue"&gt;function&lt;/span&gt;(value, element) { &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Courier New"&gt;     &lt;span style="COLOR: green"&gt;//ES - Chrome does not use the locale when new Date objects instantiated: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Courier New"&gt;     &lt;span style="COLOR: green"&gt;//return this.optional(element) || !/Invalid|NaN/.test(new Date(value)); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Courier New"&gt;     &lt;span style="COLOR: blue"&gt;var&lt;/span&gt; d = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; Date(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Courier New"&gt;     &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.optional(element) || !/Invalid|NaN/.test(&lt;strong&gt;&lt;span style="COLOR: blue"&gt;new&lt;/span&gt; Date(d.toLocaleDateString(value))&lt;/strong&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Courier New"&gt;    }, &lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135841"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135841" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/EltonStoneman/aggbug/135841.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>EltonStoneman</dc:creator>
            <guid>http://geekswithblogs.net/EltonStoneman/archive/2009/10/29/jquery-date-validation-in-chrome.aspx</guid>
            <pubDate>Thu, 29 Oct 2009 19:20:53 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/EltonStoneman/comments/135841.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/EltonStoneman/archive/2009/10/29/jquery-date-validation-in-chrome.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/EltonStoneman/comments/commentRss/135841.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Hacking the Assembly Manifest</title>
            <link>http://geekswithblogs.net/EltonStoneman/archive/2009/03/11/hacking-the-assembly-manifest.aspx</link>
            <description>&lt;p style="text-align: center;"&gt;&lt;span style="font-size: 10pt;"&gt;[Source: &lt;a href="http://geekswithblogs.net/EltonStoneman"&gt;http://geekswithblogs.net/EltonStoneman&lt;/a&gt;] &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I was debugging a particularly nasty problem and found myself wanting to edit the manifest of a compiled .NET assembly, to change the version number of the assemblies it was referencing. Not necessarily best practice, but in this case it would enable me to confirm the exact issue without a two-hour build-and-deploy cycle. Turns out that nasty hacks like this are very straightforward: &lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Run ILDASM, open the assembly and choose &lt;em&gt;File…Dump&lt;/em&gt; to extract the IL &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;Open the IL file in Visual Studio and edit the manifest – in this case, the version numbers of the referenced assemblies are easily found at the top of the file: &lt;/div&gt;
    &lt;p&gt;&lt;span style="font-family: Courier New;"&gt;&lt;span style="font-size: 10pt;"&gt;// Metadata version: v2.0.50727&lt;/span&gt; 					&lt;br /&gt;
    &lt;span style="font-size: 10pt;"&gt;.assembly extern mscorlib&lt;/span&gt; 					&lt;br /&gt;
    &lt;span style="font-size: 10pt;"&gt;{&lt;/span&gt; 					&lt;br /&gt;
    &lt;span style="font-size: 10pt;"&gt;  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..&lt;/span&gt; 					&lt;br /&gt;
    &lt;span style="font-size: 10pt;"&gt;  .ver 2:0:0:0&lt;/span&gt; 					&lt;br /&gt;
    &lt;span style="font-size: 10pt;"&gt;}&lt;/span&gt; 					&lt;br /&gt;
    &lt;span style="font-size: 10pt;"&gt;.assembly extern &lt;span style="background-color: yellow;"&gt;x.y.z&lt;/span&gt;&lt;/span&gt; 					&lt;br /&gt;
    &lt;span style="font-size: 10pt;"&gt;{&lt;/span&gt; 					&lt;br /&gt;
    &lt;span style="font-size: 10pt;"&gt;  .publickeytoken = (E4 21 0D 54 23 66 A2 B4 )                         // . .D'f..&lt;/span&gt; 					&lt;br /&gt;
    &lt;span style="font-size: 10pt;"&gt;  .ver &lt;span style="background-color: yellow;"&gt;1:0:9:12&lt;/span&gt;&lt;/span&gt; 					&lt;br /&gt;
    &lt;span style="font-size: 10pt;"&gt;}&lt;/span&gt; 				&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;Save the IL and reassemble it with ILASM – if the assembly was signed, re-sign it using &lt;strong&gt;ilasm /DLL x.y.z.il /KEY=x.y.z.snk&lt;/strong&gt; 		&lt;/li&gt;
    &lt;li&gt;Ensure the new assembly has the same name as the original, and it will operate as an exact replacement, only now its dependencies will be for the modified versions. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="http://www.codeproject.com/KB/msil/ManifestEdit.aspx"&gt;Simon McEnlly's article on CodeProject&lt;/a&gt; describes going further with the manifest to change the visibility of methods, and generally modifying and rebuilding assemblies where you don't have the source code. Note that if the assembly is signed and you don't have the strong name key to re-sign it, the modified assembly will warn about being tampered with and won't load. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=130019"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=130019" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/EltonStoneman/aggbug/130019.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>EltonStoneman</dc:creator>
            <guid>http://geekswithblogs.net/EltonStoneman/archive/2009/03/11/hacking-the-assembly-manifest.aspx</guid>
            <pubDate>Wed, 11 Mar 2009 22:44:28 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/EltonStoneman/comments/130019.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/EltonStoneman/archive/2009/03/11/hacking-the-assembly-manifest.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/EltonStoneman/comments/commentRss/130019.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Wix Errors ICE50 and ICE64</title>
            <link>http://geekswithblogs.net/EltonStoneman/archive/2008/12/12/wix-errors-ice50-and-ice64-again.aspx</link>
            <description>&lt;p style="text-align: center;"&gt;&lt;span style="font-size: 10pt;"&gt;[Source: &lt;a href="http://geekswithblogs.net/EltonStoneman"&gt;http://geekswithblogs.net/EltonStoneman&lt;/a&gt;] &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;If you're creating shortcuts in a Wix package, Alex Shevchuk's post &lt;a href="http://blogs.technet.com/alexshev/pages/from-msi-to-wix-part-10-shortcuts.aspx"&gt;From MSI to WiX, Part 10 – Shortcuts&lt;/a&gt; is a great resource to follow. As it does, Wix has moved on, and Alex's scripts don't build in the current version (3.0.4318.0 on my box) – the &lt;em&gt;LongName&lt;/em&gt; attribute has been deprecated, so remove any instances you find and put the full name in the &lt;em&gt;Name&lt;/em&gt; attribute (Wix now takes care of generating a short name). &lt;/p&gt;
&lt;p&gt;You may also find a couple of Internal Consistency Evaluator errors: &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;ICE50 - shortcut icon extension doesn't match shortcut file's extension, so the shortcut icon won't be correct &lt;/li&gt;
    &lt;li&gt;ICE64 - shortcut folders not being tagged in a RemoveFolder element so they're removed on uninstall &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I couldn't fix ICE50 as I was pointing to a .htm file and didn't fancy hacking its extension to .exe to keep Wix happy, and although ICE64 is easy to fix (Alex describes how to do this), I'm generating the Wix script with T4 and it proved fiddly to inject the RemoveFolder elements under the correct Component element. So I tried linking and ignoring the errors, just to confirm my shortcuts were creating correctly. The error suppression syntax is: &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;light -out &amp;lt;outputMsiPath&amp;gt; &amp;lt;inputWixobjPath&amp;gt; -cultures:en-us &lt;strong&gt;-sice:ICE50 -sice:ICE64&lt;/strong&gt; 		&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This built the MSI, and the installer ran correctly. The interesting thing is that the .htm shortcut did have the right icon, and when I uninstalled the package, my shortcut folders were removed too. So it seems ICE50 and ICE64 can be safely suppressed without affecting the user experience.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127864"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127864" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/EltonStoneman/aggbug/127864.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>EltonStoneman</dc:creator>
            <guid>http://geekswithblogs.net/EltonStoneman/archive/2008/12/12/wix-errors-ice50-and-ice64-again.aspx</guid>
            <pubDate>Sat, 13 Dec 2008 02:18:46 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/EltonStoneman/comments/127864.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/EltonStoneman/archive/2008/12/12/wix-errors-ice50-and-ice64-again.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/EltonStoneman/comments/commentRss/127864.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Networking Virtual PCs with the Same Computer Name</title>
            <link>http://geekswithblogs.net/EltonStoneman/archive/2008/12/11/networking-virtual-pcs-with-the-same-computer-name.aspx</link>
            <description>&lt;p style="text-align: center;"&gt;&lt;span style="font-size: 10pt;"&gt;[Source: &lt;a href="http://geekswithblogs.net/EltonStoneman"&gt;http://geekswithblogs.net/EltonStoneman&lt;/a&gt;] &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The aim of putting together a single VM and sharing it around a dev team soon hits the problem that multiple computers with the same name are trying to connect to the Windows network. The first VM to connect will be correctly registered, but subsequent images will get a network error: "Computer name already exists". &lt;/p&gt;
&lt;p&gt;The problem is that you once you build up a dev environment (with SQL Server, BizTalk etc.) the computer name quickly becomes integral and changing it is very difficult (in the case of BizTalk, sufficiently difficult that it's not worth even trying). Having a base image with just the operating system means new copies could be taken and the name changed easily – but that defies the point of having one configured machine, as every new joiner needs to install the rest of the environment themselves. &lt;/p&gt;
&lt;p&gt;A couple of alternatives are available: &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://geekswithblogs.net/asmith/archive/2005/04/26/38465.aspx"&gt;Alan Smith describes setting up a partial image&lt;/a&gt; using SysPrep and scripts which run the first time a new image is used. Each VM then has a unique name and the scripts handle the remaining installations. This sounds like a good solution for full integration with your network, but there are additional setup costs and it's not much help if you already have a VM in use; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://blogs.msdn.com/ukcrm/archive/2006/05/26/608300.aspx"&gt;Simon Hutson uses a combination of network adapters&lt;/a&gt; in Virtual PC to hide the VM's computer name from the network, but still have access via the host machine. This sounded exactly what I wanted, but I couldn't get it communicating on the network with DNS, only using IP addresses (my VM is not configured as a DNS server so that may be the issue – but setting up DNS on the VM seems like overkill unless you need it anyway). &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My solution is an extension of Simon's, basically using Shared Networking in Virtual PC , disabling &lt;em&gt;Client for Microsoft Networks &lt;/em&gt;and &lt;em&gt;File and Printer Sharing for Microsoft Networks&lt;/em&gt; and WINS so the VM doesn't try to register itself with the network. You also need the second network using the Loca adapterl, which you configure with a static IP – an address in the range 10.0.0.x, and a subnet mask of 255.255.255.0 works consistently – and specify your network's real DNS servers. &lt;/p&gt;
&lt;p&gt;This gives you TCP/IP access, and then you can resolve the  machine names you need to connect to using the HOSTS file local to the VM. Obviously this is only suitable for accessing machines on the network with static IP addresses, and means network machines can't connect to your VM by name, but if you can live with that it's a very simple workaround. The image can be set up with the network adapters configured, and the HOSTS file already prepared so it's ready to go for new joiners. &lt;/p&gt;
&lt;p&gt;Note that Windows Server 2003 as a guest OS will need to use a dedicated DNS address for the Shared Networking adapter: 192.168.131.254 – see &lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2005/01/06/347965.aspx"&gt;Virtual PC Guy's post on using NAT with W2K3&lt;/a&gt; for details on this.  &lt;/p&gt;
&lt;p&gt;In case it's been a while… The HOSTS file is a simple IP address/computer name lookup table which you'll find in &lt;strong&gt;%SystemRoot%\system32\drivers\etc\&lt;/strong&gt; (by default), which you extend by adding entries on a new line. Mine looks like this: &lt;/p&gt;
&lt;p style="margin-left: 36pt;"&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;127.0.0.1    localhost &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 36pt;"&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;10.5.1.1    SVRNAME1 &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 36pt;"&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;10.5.1.2    SVRNAME2 &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;- and now we have multiple Virtual PCs with the same name connecting to the network, and happily using source control, database and build servers, without trashing our BizTalk install. A script to refresh the HOSTS file from a central location is a simple extension if your list is likely to change. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127819"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127819" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/EltonStoneman/aggbug/127819.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>EltonStoneman</dc:creator>
            <guid>http://geekswithblogs.net/EltonStoneman/archive/2008/12/11/networking-virtual-pcs-with-the-same-computer-name.aspx</guid>
            <pubDate>Fri, 12 Dec 2008 00:59:09 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/EltonStoneman/comments/127819.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/EltonStoneman/archive/2008/12/11/networking-virtual-pcs-with-the-same-computer-name.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/EltonStoneman/comments/commentRss/127819.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Wix error -532459699</title>
            <link>http://geekswithblogs.net/EltonStoneman/archive/2008/07/25/wix-error--532459699.aspx</link>
            <description>&lt;p style="text-align: center;"&gt;&lt;span style="font-size: 10pt;"&gt;[Source: &lt;a href="http://geekswithblogs.net/EltonStoneman"&gt;http://geekswithblogs.net/EltonStoneman&lt;/a&gt;] &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Running Wix 3.0.2420.0 I got an "object reference not set" and this error message when calling light.exe from an Exec MSBuild task: &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;The command ""..&lt;a href="file:///\\bin\Wix\light"&gt;\bin\Wix\light&lt;/a&gt;" -out "c:\x\y\z\x.y.z.msi" "c:\x\y\z\x.y.z.wixobj" -ext WixIIsExtension -ext WixUiExtension -cultures:en-us" exited with code -532459699.&lt;/span&gt; 	&lt;/p&gt;
&lt;p&gt;Annoyingly, I could run the exact same command in a command prompt immediately after the build failed, and it worked fine - and this error only happened on the build server and not on the dev boxes.  &lt;/p&gt;
&lt;p&gt;Before diving into it too much, I updated to the latest version of Wix (currently 3.0.4318.0) and the problem went away. So that solved that issue and just left me with "should we be using beta software even if it works for everything we need at the moment"…&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124022"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124022" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/EltonStoneman/aggbug/124022.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>EltonStoneman</dc:creator>
            <guid>http://geekswithblogs.net/EltonStoneman/archive/2008/07/25/wix-error--532459699.aspx</guid>
            <pubDate>Fri, 25 Jul 2008 20:43:14 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/EltonStoneman/comments/124022.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/EltonStoneman/archive/2008/07/25/wix-error--532459699.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/EltonStoneman/comments/commentRss/124022.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Corrupted Files on Virtual PC Disk</title>
            <link>http://geekswithblogs.net/EltonStoneman/archive/2008/06/20/corrupted-files-on-virtual-pc-disk.aspx</link>
            <description>&lt;p style="text-align: center;"&gt;&lt;span style="font-size: 10pt;"&gt;[Source: &lt;a href="http://geekswithblogs.net/EltonStoneman"&gt;http://geekswithblogs.net/EltonStoneman&lt;/a&gt;] &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;One of the nice advantages of developing on a virtual image is that you can set it up with one drive for the OS and another for data. Your dev toolset is ready for project joiners to use, and copying a 15Gb file is far quicker than installing your toolset from nothing. When you want to take work home or on the train with you, it's just a case of zipping up the 1Gb data drive and copying it to your laptop. &lt;/p&gt;
&lt;p&gt;I've been doing this using Microsoft Virtual PC once or twice a day for the last few months, and it's somewhere like 99.99% faultless. But that 0.01% fault is manifested as random files being reduced to zero-bytes. They have the correct name and are in the expected location, but are missing their contents. So suddenly a project fails to build as one of the class files is empty.  &lt;/p&gt;
&lt;p&gt;This seems to be a result of occasionally resizing the .vhd file, rather than with repeatedly zipping and unzipping it. I haven't got an answer for the cause, but the following PowerShell script will output all the zero-length files you have on disk: &lt;/p&gt;
&lt;p&gt;&lt;span style="color: green; font-family: Courier New; font-size: 10pt;"&gt;##FindZeroByteFiles.ps1  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;param&lt;/span&gt;&lt;span style="color: black;"&gt;([&lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="color: black;"&gt;[]] &lt;/span&gt;&lt;span style="color: purple;"&gt;$paths&lt;/span&gt;&lt;span style="color: black;"&gt;)  &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;function&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: blue;"&gt;Main&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: black; font-family: Courier New; font-size: 10pt;"&gt;{  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: blue;"&gt;foreach&lt;/span&gt;&lt;span style="color: black;"&gt; (&lt;/span&gt;&lt;span style="color: purple;"&gt;$path&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: blue;"&gt;in&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: purple;"&gt;$paths&lt;/span&gt;&lt;span style="color: black;"&gt;) {  &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: purple;"&gt;$list&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: red;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: cadetblue;"&gt;Join-Path&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: purple;"&gt;$path&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: saddlebrown;"&gt;zeros.txt&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: cadetblue;"&gt;Remove-Item&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: purple;"&gt;$list&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: cadetblue;"&gt;-ErrorAction&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: blue;"&gt;SilentlyContinue&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: cadetblue;"&gt;get-childitem&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: purple;"&gt;$path&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: cadetblue;"&gt;-recurse&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: blue;"&gt;|&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: blue;"&gt;sort&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: blue;"&gt;Length&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: blue;"&gt;|&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: blue;"&gt;foreach&lt;/span&gt;&lt;span style="color: black;"&gt; {  &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;          &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; (&lt;/span&gt;&lt;span style="color: navy;"&gt;$_&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;&lt;span style="color: saddlebrown;"&gt;Length&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: red;"&gt;-eq&lt;/span&gt;&lt;span style="color: black;"&gt; 0) {  &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;span style="color: navy;"&gt;$_&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;&lt;span style="color: saddlebrown;"&gt;FullName&lt;/span&gt;&lt;span style="color: black;"&gt; &amp;gt;&amp;gt; &lt;/span&gt;&lt;span style="color: purple;"&gt;$list&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: black; font-family: Courier New; font-size: 10pt;"&gt;                        }  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: black; font-family: Courier New; font-size: 10pt;"&gt;                }  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: black; font-family: Courier New; font-size: 10pt;"&gt;        }  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: black; font-family: Courier New; font-size: 10pt;"&gt;}  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: black;"&gt;. &lt;/span&gt;&lt;span style="color: blue;"&gt;Main&lt;/span&gt;&lt;span style="color: black;"&gt; 			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: green; font-family: Courier New; font-size: 10pt;"&gt;##&lt;/span&gt; 	&lt;/p&gt;
&lt;p&gt;Usage – to list all the zero byte files on drives F and G: &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New;"&gt;.\FindZeroByteFiles.ps1 F:\,G:\  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This will output a file called &lt;strong&gt;zeros.txt&lt;/strong&gt; in the root of each drive specified.  &lt;/p&gt;
&lt;p&gt;I'll be running it more frequently and I'll update this post if I track down which part of the process is mangling those files in the virtual drive. Or if I get around to writing a heftier script which compares two virtual drives using &lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2007/06/19/using-vhdmount-with-virtual-pc.aspx"&gt;VHDMount&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123043"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123043" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/EltonStoneman/aggbug/123043.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>EltonStoneman</dc:creator>
            <guid>http://geekswithblogs.net/EltonStoneman/archive/2008/06/20/corrupted-files-on-virtual-pc-disk.aspx</guid>
            <pubDate>Sat, 21 Jun 2008 01:00:17 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/EltonStoneman/comments/123043.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/EltonStoneman/archive/2008/06/20/corrupted-files-on-virtual-pc-disk.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/EltonStoneman/comments/commentRss/123043.aspx</wfw:commentRss>
        </item>
        <item>
            <title>The identity of application pool, 'ESBAppPool' is invalid</title>
            <link>http://geekswithblogs.net/EltonStoneman/archive/2008/05/26/the-identity-of-application-pool-esbapppool-is-invalid.aspx</link>
            <description>&lt;p&gt;While I was finishing up the "ESBSimpleSamples" project, I came across this strange error. On submitting a message to the ProcessItinerary Web service I got a 503 Service Unavailable error, and the event log showed the app pool had been shut down, with &lt;em&gt;The identity of application pool, 'ESBAppPool' is invalid&lt;/em&gt; and error code &lt;em&gt;80070532&lt;/em&gt;. &lt;/p&gt;
&lt;p&gt;A quick Google suggested it was an issue with the BizTalk isolated account. I hadn't changed it at all and the service was fine a couple of days ago, but I checked the BTSISOSVC account. It was flagged as "User must change password at next logon" which seemed odd. Removed that and set it to never expire, restarted IIS and it all started working again. Odd. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122392"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122392" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/EltonStoneman/aggbug/122392.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>EltonStoneman</dc:creator>
            <guid>http://geekswithblogs.net/EltonStoneman/archive/2008/05/26/the-identity-of-application-pool-esbapppool-is-invalid.aspx</guid>
            <pubDate>Mon, 26 May 2008 21:16:07 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/EltonStoneman/comments/122392.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/EltonStoneman/archive/2008/05/26/the-identity-of-application-pool-esbapppool-is-invalid.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/EltonStoneman/comments/commentRss/122392.aspx</wfw:commentRss>
        </item>
        <item>
            <title>There is no build provider registered for the extension ‘.rem’</title>
            <link>http://geekswithblogs.net/EltonStoneman/archive/2008/04/24/there-is-no-build-provider-registered-for-the-extension-.rem.aspx</link>
            <description>&lt;p&gt;This is an ASP.Net error I got while converting a .Net Remoting app from 1.1 to 2.0, and it puzzled me for a while. The conversion had gone fine and everything built and deployed without a problem, but the unit tests I'd written were failing to find the remote service. IIS was being used as the host for a handful of wellknown objects, so I tried browsing to the WSDL and this was the error. &lt;/p&gt;
&lt;p&gt;Check on Google and you'll see there aren't any relevant hits, so obviously something strange in the setup of this app. The stack trace (&lt;strong&gt;HttpRemotingHandlerFactory&lt;/strong&gt; - &lt;strong&gt;WebServiceParser&lt;/strong&gt;) suggested ASP.Net was trying to compile the .rem files. I set up a simple Remoting app hosted in IIS which worked in the same environment, and checked to see what was different. &lt;/p&gt;
&lt;p&gt;The problem was that the 1.1 app had .rem files saved in the virtual directory of the Remoting service, so the request was finding the physical file and trying to build something from its contents. In 2.0 the .rem files are created on the fly when they're requested, so they get routed to the correct handler. After deleting the .rem files, everything was fine. &lt;/p&gt;
&lt;p&gt;Surprising that this hasn't been seen anywhere else, but it's documented now.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121605"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121605" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/EltonStoneman/aggbug/121605.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>EltonStoneman</dc:creator>
            <guid>http://geekswithblogs.net/EltonStoneman/archive/2008/04/24/there-is-no-build-provider-registered-for-the-extension-.rem.aspx</guid>
            <pubDate>Thu, 24 Apr 2008 14:03:59 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/EltonStoneman/comments/121605.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/EltonStoneman/archive/2008/04/24/there-is-no-build-provider-registered-for-the-extension-.rem.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/EltonStoneman/comments/commentRss/121605.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>