<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.conchango.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Merrick Chaffer's Blog</title><link>http://blogs.conchango.com/merrickchaffer/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Insert tracepoint in Visual Studio for Debug.WriteLine alternative</title><link>http://blogs.conchango.com/merrickchaffer/archive/2008/06/23/insert-tracepoint-in-visual-studio-for-debug-writeline-alternative.aspx</link><pubDate>Mon, 23 Jun 2008 12:04:10 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:11542</guid><dc:creator>merrick.chaffer</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.conchango.com/merrickchaffer/comments/11542.aspx</comments><wfw:commentRss>http://blogs.conchango.com/merrickchaffer/commentrss.aspx?PostID=11542</wfw:commentRss><description>&lt;p&gt;&lt;u&gt;For those who like me didn&amp;#8217;t know about this hidden gem&lt;/u&gt;:&lt;/p&gt;  &lt;p&gt;You can now set Tracepoints instead of just Breakpoints in VS2008. Here&amp;#8217;s the difference between the two as described on MSDN:&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&amp;#8220;Breakpoints tell the debugger that an application should break, pause execution, at a certain point. When a break occurs, your program and the debugger are said to be in break mode. For more information, see Breaking Execution.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Tracepoints are a new debugger feature in Visual Studio. A tracepoint is a breakpoint with a custom action associated with it. When a tracepoint is hit, the debugger performs the specified tracepoint action instead of, or in addition to, breaking program execution.&amp;#8221;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;To set a Tracepoint, right-click on the line of code you want to debug, go to Breakpoint &amp;gt; Insert Tracepoint. In the breakpoint dialog below, you will be able to specify a message to print each time the tracepoint is hit. This is a handy way of having debug trace to output variable values without littering your code with &amp;#8220;Debug.WriteLine&amp;#8221; all over.&lt;/p&gt;  &lt;p&gt;Cheers&lt;/p&gt;  &lt;p&gt;Pascal &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/InserttracepointinV.WriteLinealternative_B7CF/tracepoint.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="461" alt="tracepoint" src="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/InserttracepointinV.WriteLinealternative_B7CF/tracepoint_thumb.png" width="760" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=11542" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/C_2300_+2.0/default.aspx">C# 2.0</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/code/default.aspx">code</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category></item><item><title>Hacking visual studio to use greater than 2GB of memory</title><link>http://blogs.conchango.com/merrickchaffer/archive/2008/06/13/hacking-visual-studio-to-use-greater-than-2gb-of-memory.aspx</link><pubDate>Fri, 13 Jun 2008 14:15:38 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:11450</guid><dc:creator>merrick.chaffer</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.conchango.com/merrickchaffer/comments/11450.aspx</comments><wfw:commentRss>http://blogs.conchango.com/merrickchaffer/commentrss.aspx?PostID=11450</wfw:commentRss><description>&lt;p&gt;See here &lt;a title="http://stevenharman.net/blog/archive/2008/04/29/hacking-visual-studio-to-use-more-than-2gigabytes-of-memory.aspx" href="http://stevenharman.net/blog/archive/2008/04/29/hacking-visual-studio-to-use-more-than-2gigabytes-of-memory.aspx"&gt;http://stevenharman.net/blog/archive/2008/04/29/hacking-visual-studio-to-use-more-than-2gigabytes-of-memory.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=11450" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/.NET+2.0/default.aspx">.NET 2.0</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/.NET+3.0/default.aspx">.NET 3.0</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Gotcha/default.aspx">Gotcha</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category></item><item><title>Code coverage in Visual Studio 2008 using Test driven .NET and Team Coverage</title><link>http://blogs.conchango.com/merrickchaffer/archive/2008/06/13/code-coverage-in-visual-studio-2008-using-test-driven-net-and-team-coverage.aspx</link><pubDate>Fri, 13 Jun 2008 13:55:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:11449</guid><dc:creator>merrick.chaffer</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.conchango.com/merrickchaffer/comments/11449.aspx</comments><wfw:commentRss>http://blogs.conchango.com/merrickchaffer/commentrss.aspx?PostID=11449</wfw:commentRss><description>&lt;p&gt;A colleague of mine this week showed me his code coverage as being over 94% for his production code, which impressed me so much, it spurred me on to ensure that all code paths in my code from now on go blue instead of red when testing with Team coverage, using the Test driven .NET addin for visual studio 2008. Not sure what I'm on about, then follow the steps below to get up to speed...&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Install Test driven .NET version 2.12.2179 from here &lt;a href="http://www.testdriven.net/download_release.aspx?LicenceType=Personal" target="_blank"&gt;http://www.testdriven.net/download_release.aspx?LicenceType=Personal&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Once installed ensure the Test driven .net addin is available from Tools, Addins in visual studio      &lt;br /&gt;&lt;a href="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/CodecoverageinVisualS.NETandTeamCoverage_C8C7/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="229" alt="Picture showing addin manager" src="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/CodecoverageinVisualS.NETandTeamCoverage_C8C7/image_thumb.png" width="344" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;In your unit test files, simply click anywhere outside of a code block, and select the Test with -&amp;gt; Team coverage from the right click context menu      &lt;br /&gt;&lt;a href="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/CodecoverageinVisualS.NETandTeamCoverage_C8C7/image_8.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="326" alt="Test with team coverage option" src="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/CodecoverageinVisualS.NETandTeamCoverage_C8C7/image_thumb_3.png" width="344" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;&amp;#160; &lt;/li&gt;    &lt;li&gt;Keep an eye after the tests have run on the output window, as the test results window will not actually be updated by running this context menu option, so you'll need to look here to see how many of your tests actually passed.      &lt;br /&gt;&lt;a href="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/CodecoverageinVisualS.NETandTeamCoverage_C8C7/image_6.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="198" alt="Output window" src="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/CodecoverageinVisualS.NETandTeamCoverage_C8C7/image_thumb_2.png" width="348" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Then click on the show coverage colour option on the test toolbar      &lt;br /&gt;&lt;a href="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/CodecoverageinVisualS.NETandTeamCoverage_C8C7/image_14.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="167" alt="Show Code coverage coloring" src="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/CodecoverageinVisualS.NETandTeamCoverage_C8C7/image_thumb_6.png" width="376" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Now you will see what areas of your code are covered. Blue background is covered, orange is partially covered (this is like when you have a two condition if statement and the unit test has only satisfied on of the conditions to get passed it), and red is not covered at all.      &lt;br /&gt;&lt;a href="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/CodecoverageinVisualS.NETandTeamCoverage_C8C7/image_12.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="400" alt="Code coverage highlighting" src="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/CodecoverageinVisualS.NETandTeamCoverage_C8C7/image_thumb_5.png" width="533" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Another option for a summary view is to look at the &lt;strong&gt;Code Coverage Results &lt;/strong&gt;window which should appear after the unit testing is complete, and sort by any of the column headers, or simply drill down to the code you wrote to see if it is covered fully. In the example below you'll see that I had 91.67% coverage on the code I wrote, anything over 90% is pretty good going in my opinion.       &lt;br /&gt;&lt;a href="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/CodecoverageinVisualS.NETandTeamCoverage_C8C7/image_16.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="233" alt="Code coverage results window" src="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/CodecoverageinVisualS.NETandTeamCoverage_C8C7/image_thumb_7.png" width="559" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&amp;#160; &lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=11449" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Team+System/default.aspx">Team System</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/.NET+2.0/default.aspx">.NET 2.0</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/code/default.aspx">code</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/.NET+3.0/default.aspx">.NET 3.0</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category></item><item><title>Using linq in your C# code</title><link>http://blogs.conchango.com/merrickchaffer/archive/2008/05/08/using-linq-in-your-c-code.aspx</link><pubDate>Thu, 08 May 2008 14:21:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:11019</guid><dc:creator>merrick.chaffer</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.conchango.com/merrickchaffer/comments/11019.aspx</comments><wfw:commentRss>http://blogs.conchango.com/merrickchaffer/commentrss.aspx?PostID=11019</wfw:commentRss><description>&lt;P&gt;Just came across a nasty gotcha today, where by we were trying to use the new C# 3.5 syntax&lt;/P&gt;
&lt;P&gt;var x = from item in items select new Item { ItemName = item.Name };&lt;/P&gt;
&lt;P&gt;and getting a compile error. Turns out this was due to the need to have the following using statement (that doesn't come up in a smart tag prompt when you're writing linq), &lt;/P&gt;
&lt;P&gt;using System.Linq;&lt;/P&gt;
&lt;P&gt;To be fair the compiler error was suggesting exactly this.&lt;/P&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=11019" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/C_2300_+2.0/default.aspx">C# 2.0</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>Daylight savings issue with MOSS 2007 deployments pre SP1</title><link>http://blogs.conchango.com/merrickchaffer/archive/2008/04/02/daylight-savings-issue-with-moss-2007-deployments-pre-sp1.aspx</link><pubDate>Wed, 02 Apr 2008 16:16:05 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:10484</guid><dc:creator>merrick.chaffer</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.conchango.com/merrickchaffer/comments/10484.aspx</comments><wfw:commentRss>http://blogs.conchango.com/merrickchaffer/commentrss.aspx?PostID=10484</wfw:commentRss><description>&lt;p&gt;Daylight savings time.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/sharepoint/archive/2007/10/09/important-security-hotfix-ms07-059.aspx"&gt;http://blogs.msdn.com/sharepoint/archive/2007/10/09/important-security-hotfix-ms07-059.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When the clocks went forward or back this weekend, this stopped sharepoint deployment from working for many sharepoint customers in the UK.&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10484" width="1" height="1"&gt;</description></item><item><title>EMC to acquire Conchango</title><link>http://blogs.conchango.com/merrickchaffer/archive/2008/04/02/emc-to-acquire-conchango.aspx</link><pubDate>Wed, 02 Apr 2008 15:30:40 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:10483</guid><dc:creator>merrick.chaffer</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.conchango.com/merrickchaffer/comments/10483.aspx</comments><wfw:commentRss>http://blogs.conchango.com/merrickchaffer/commentrss.aspx?PostID=10483</wfw:commentRss><description>&lt;p&gt;News announced yesterday that &lt;a href="http://www.emc.com"&gt;EMC&lt;/a&gt; are to acquire &lt;a href="http://www.conchango.com/"&gt;Conchango&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10483" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Microsoft/default.aspx">Microsoft</category></item><item><title>Customising file upload validation in MOSS 2007 (Sharepoint)</title><link>http://blogs.conchango.com/merrickchaffer/archive/2008/03/05/customising-file-upload-validation-in-moss-2007-sharepoint.aspx</link><pubDate>Wed, 05 Mar 2008 16:12:51 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:10041</guid><dc:creator>merrick.chaffer</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.conchango.com/merrickchaffer/comments/10041.aspx</comments><wfw:commentRss>http://blogs.conchango.com/merrickchaffer/commentrss.aspx?PostID=10041</wfw:commentRss><description>&lt;p&gt;Just spent the day trying to do this, having not really written sharepoint code before. Seeing as it took most of the day to figure out, and perfect, I thought I would post the solution in case I ever needed to repeat this again...&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/CustomisingfileuploadvalidationinMOSS200_E7DC/clip_image002%5B5%5D.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="292" alt="clip_image002[5]" src="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/CustomisingfileuploadvalidationinMOSS200_E7DC/clip_image002%5B5%5D_thumb.jpg" width="764" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;In the customised UploadAtlasDocument.aspx in the 12 hive C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\ I added the following code...     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:;"&gt;script&lt;/span&gt;&lt;span style="font-size:10pt;font-family:;"&gt; &lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;&amp;gt;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:;"&gt;     &lt;p&gt;&amp;#160;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Validates the posted filename doesn't already exist in the sharepoint list CH Documents       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param name=&amp;quot;source&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param name=&amp;quot;args&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;void&lt;/span&gt; custVldFileExists_ServerValidate(&lt;span style="color:blue;"&gt;object&lt;/span&gt; source, System.Web.UI.WebControls.&lt;span style="color:#2b91af;"&gt;ServerValidateEventArgs&lt;/span&gt; args)      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:green;"&gt;//note you don't get intellisense for this.OverwriteSingle       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:green;"&gt;//as it is nested in a template control       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (!&lt;span style="color:blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(args.Value)       &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;amp;&amp;amp; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.OverwriteSingle.Visible == &lt;span style="color:blue;"&gt;true&lt;/span&gt;       &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;amp;&amp;amp; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.OverwriteSingle.Checked == &lt;span style="color:blue;"&gt;false&lt;/span&gt;)      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;FileInfo&lt;/span&gt; fileInfo = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;FileInfo&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.InputFile.PostedFile.FileName);      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;     &lt;p&gt;&amp;#160;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; newFileName = fileInfo.Name;      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;     &lt;p&gt;&amp;#160;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;SPSite&lt;/span&gt; site = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SPSite&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;SPContext&lt;/span&gt;.Current.Web.Url))      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;SPWeb&lt;/span&gt; webSite = site.OpenWeb())      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;SPList&lt;/span&gt; chDocumentsList = webSite.Lists[&lt;span style="color:#a31515;"&gt;&amp;quot;CH Documents&amp;quot;&lt;/span&gt;];      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:green;"&gt;//do we have any files existing in the list already       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (chDocumentsList != &lt;span style="color:blue;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; chDocumentsList.RootFolder.Files.Count &amp;gt; 0)      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:green;"&gt;//we have files in the list already       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:green;"&gt;//so iterate round each one and see if the one we're about to upload       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:green;"&gt;//already exists in the list.       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;SPFile&lt;/span&gt; spFile &lt;span style="color:blue;"&gt;in&lt;/span&gt; chDocumentsList.RootFolder.Files)      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:blue;"&gt;string&lt;/span&gt;.Compare(spFile.Name, newFileName, &lt;span style="color:#2b91af;"&gt;StringComparison&lt;/span&gt;.InvariantCultureIgnoreCase) == 0)      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:green;"&gt;//the file name we're uploading       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:green;"&gt;//matches an existing file,        &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:green;"&gt;//and the user hasn't checked the OverwriteMultiple check box       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:green;"&gt;//so invalidate this validator       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:green;"&gt;//in order to get message back to the user.       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;args.IsValid = &lt;span style="color:blue;"&gt;false&lt;/span&gt;;      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;break&lt;/span&gt;;      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;webSite.Close();      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;site.Close();      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;line-height:115%;font-family:;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;line-height:115%;font-family:;"&gt;script&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;line-height:115%;font-family:;"&gt;&amp;gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;line-height:115%;font-family:;"&gt;...     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:;"&gt;TR&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:;"&gt;TD&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:;"&gt;&amp;gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-tab-count:4;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;wssawc&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;InputFormRequiredFieldValidator&lt;/span&gt; &lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;InputFormRequiredFieldValidator1&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;ControlToValidate&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;InputFile&amp;quot;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-tab-count:5;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;Display&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Dynamic&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;ErrorMessage&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Please click the browse button to upload a file.&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;Runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-tab-count:5;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;BreakBefore&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;BreakAfter&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt; &lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:red;"&gt;EnableClientScript&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;/b&gt; &lt;span style="color:blue;"&gt;/&amp;gt;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-tab-count:4;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;asp&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;CustomValidator&lt;/span&gt; &lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;custVldFileExists&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;ErrorMessage&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;File already exists. Please either rename the file or select overwrite to replace the existing file.&amp;quot;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;ControlToValidate&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;InputFile&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;OnServerValidate&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;custVldFileExists_ServerValidate&amp;quot;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;Display&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Static&amp;quot;&lt;/span&gt; &lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:red;"&gt;EnableClientScript&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;/b&gt; &lt;span style="color:blue;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;asp&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;CustomValidator&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-tab-count:4;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;asp&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;CustomValidator&lt;/span&gt; &lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;CustomValidator1&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;ControlToValidate&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;InputFile&amp;quot;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-tab-count:5;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;Display&lt;/span&gt; &lt;span style="color:blue;"&gt;=&lt;/span&gt; &lt;span style="color:blue;"&gt;&amp;quot;Dynamic&amp;quot;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-tab-count:5;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;ErrorMessage&lt;/span&gt; &lt;span style="color:blue;"&gt;=&lt;/span&gt; &lt;span style="color:blue;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:yellow;mso-highlight:yellow;"&gt;&amp;lt;%&lt;/span&gt;$Resources:wss,upload_document_file_invalid&lt;span style="background:yellow;mso-highlight:yellow;"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;quot;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-tab-count:5;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;OnServerValidate&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;ValidateFile&amp;quot;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;font-family:;"&gt;&lt;span style="mso-tab-count:5;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:red;"&gt;EnableClientScript&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;/b&gt; &lt;span style="color:blue;"&gt;/&amp;gt;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="tab-stops:36.0pt 72.0pt 108.0pt 144.0pt 180.0pt 216.0pt 402.0pt;"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:;"&gt;&lt;span style="mso-tab-count:5;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TD&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TR&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;Note the &lt;b style="mso-bidi-font-weight:normal;"&gt;EnableClientScript=&amp;quot;false&amp;quot;&lt;/b&gt; was required so that the error would get cleared from our custom validator if the user deleted the text out of the input file control, and then hit OK again.&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10041" width="1" height="1"&gt;</description></item><item><title>Resetting %ERRORLEVEL% in batch file programming</title><link>http://blogs.conchango.com/merrickchaffer/archive/2008/02/28/resetting-errorlevel-in-batch-file-programming.aspx</link><pubDate>Thu, 28 Feb 2008 10:18:46 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:9928</guid><dc:creator>merrick.chaffer</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.conchango.com/merrickchaffer/comments/9928.aspx</comments><wfw:commentRss>http://blogs.conchango.com/merrickchaffer/commentrss.aspx?PostID=9928</wfw:commentRss><description>&lt;p&gt;Came across a definite gotcha today in batch file programming, when I noticed that we had SET ERRORLEVEL=0 in one of our batch files. Turns out that once you set this variable explicitly then any command you run after will not be able to change the value of the %ERRORLEVEL% variable. E.G.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier" size="2"&gt;C:\&amp;gt;dir AUTOEXEC.BAT     &lt;br /&gt; Volume in drive C has no label.      &lt;br /&gt; Volume Serial Number is 907A-1111 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier" size="2"&gt; Directory of C:\ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier" size="2"&gt;02/08/2006&amp;#160; 09:58&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 AUTOEXEC.BAT     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1 File(s)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 bytes      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 Dir(s)&amp;#160; 11,104,747,520 bytes free &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier" size="2"&gt;C:\&amp;gt;echo %errorlevel%     &lt;br /&gt;0 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier" size="2"&gt;C:\&amp;gt;dir lkksjdfljsdk     &lt;br /&gt; Volume in drive C has no label.      &lt;br /&gt; Volume Serial Number is 907A-1111 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier" size="2"&gt; Directory of C:\ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier" size="2"&gt;File Not Found &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier" size="2"&gt;C:\&amp;gt;echo %errorlevel%     &lt;br /&gt;1 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier" size="2"&gt;C:\&amp;gt;set errorlevel=0 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Now you would expect the next rogue dir statement to set the errorlevel back to 1&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier" size="2"&gt;C:\&amp;gt;dir lkksjdfljsdk     &lt;br /&gt; Volume in drive C has no label.      &lt;br /&gt; Volume Serial Number is 907A-1111 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier" size="2"&gt; Directory of C:\ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier" size="2"&gt;File Not Found &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier" size="2"&gt;&lt;font face="Tahoma"&gt;But as you can see it does not&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier" size="2"&gt;&lt;strong&gt;C:\&amp;gt;echo %errorlevel%       &lt;br /&gt;0 &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;A neat way to reset the error level is to just use the verify &amp;gt;nul command, as this works fine&lt;/p&gt;  &lt;p&gt;&lt;font face="courier"&gt;C:\&amp;gt;dir sdkfljs     &lt;br /&gt; Volume in drive C has no label.      &lt;br /&gt; Volume Serial Number is 907A-1111 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="courier"&gt; Directory of C:\ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="courier"&gt;File Not Found &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="courier"&gt;C:\&amp;gt;echo %errorlevel%     &lt;br /&gt;1 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="courier"&gt;&lt;strong&gt;C:\&amp;gt;verify &amp;gt;nul&lt;/strong&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="courier"&gt;C:\&amp;gt;echo %errorlevel%     &lt;br /&gt;0 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="courier"&gt;C:\&amp;gt;dir lskjlkj     &lt;br /&gt; Volume in drive C has no label.      &lt;br /&gt; Volume Serial Number is 907A-1111 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="courier"&gt; Directory of C:\ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="courier"&gt;File Not Found &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="courier"&gt;C:\&amp;gt;echo %errorlevel%     &lt;br /&gt;1 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="courier"&gt;C:\&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=9928" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/code/default.aspx">code</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Gotcha/default.aspx">Gotcha</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/batch/default.aspx">batch</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/dos/default.aspx">dos</category></item><item><title>New windows live writer</title><link>http://blogs.conchango.com/merrickchaffer/archive/2008/02/27/new-windows-live-writer.aspx</link><pubDate>Wed, 27 Feb 2008 11:18:55 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:9905</guid><dc:creator>merrick.chaffer</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.conchango.com/merrickchaffer/comments/9905.aspx</comments><wfw:commentRss>http://blogs.conchango.com/merrickchaffer/commentrss.aspx?PostID=9905</wfw:commentRss><description>&lt;p&gt;Have just upgraded my msn messenger this morning, and noticed that it now comes with a suite of other tools such as windows live writer for blogs. Using it now in fact to write this blog, but having difficulty figuring out how to get that nice intellisense for our conchango tags.&lt;/p&gt;  &lt;p&gt;&amp;lt;LATER&amp;gt;&lt;/p&gt;  &lt;p&gt;Just realised that our tags are accessible from the bottom of the windows live writer window, as categories in the Select categories drop down.&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=9905" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Messaging/default.aspx">Messaging</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/MSN/default.aspx">MSN</category></item><item><title>Customising sharepoint error page using HttpModule</title><link>http://blogs.conchango.com/merrickchaffer/archive/2008/02/26/Customising-sharepoint-error-page-using-HttpModule.aspx</link><pubDate>Tue, 26 Feb 2008 12:06:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:9871</guid><dc:creator>merrick.chaffer</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.conchango.com/merrickchaffer/comments/9871.aspx</comments><wfw:commentRss>http://blogs.conchango.com/merrickchaffer/commentrss.aspx?PostID=9871</wfw:commentRss><description>&lt;p&gt;Ensure that your HttpModule is inserted in the web.config above the declaration for the SPRequest sharepoint http module, otherwise you'll always be redirected to the sharepoint error page.&lt;/p&gt;  &lt;p&gt;When debugging your module you may come across an error message like Headers have already been written otherwise.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/CustomisingsharepointerrorpageusingHttpM_A42C/jimbowen_2.gif"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="182" alt="jimbowen" src="http://blogs.conchango.com/blogs/merrickchaffer/WindowsLiveWriter/CustomisingsharepointerrorpageusingHttpM_A42C/jimbowen_thumb.gif" width="171" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=9871" width="1" height="1"&gt;</description></item><item><title>XPath and Namespaces (and msbuild sdc xml.modifyfile task)</title><link>http://blogs.conchango.com/merrickchaffer/archive/2007/11/29/XPath-and-Namespaces-_2800_and-msbuild-sdc-xml.modifyfile-task_2900_.aspx</link><pubDate>Thu, 29 Nov 2007 15:00:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:9227</guid><dc:creator>merrick.chaffer</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.conchango.com/merrickchaffer/comments/9227.aspx</comments><wfw:commentRss>http://blogs.conchango.com/merrickchaffer/commentrss.aspx?PostID=9227</wfw:commentRss><description>&lt;p&gt;&lt;strong&gt;&lt;u&gt;xmlDocument.SelectNodes&amp;nbsp;with xmlns=&amp;quot;...&amp;quot;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Spent most of today wondering why I couldn&amp;#39;t update a connection string in a web.config file using xpath which had the default namespace for xmlns&amp;nbsp; defined at the root of the config file. e.g. &amp;lt;configuration &lt;strong&gt;xmlns=&amp;quot;&lt;/strong&gt;&lt;a href="http://schemas.microsoft.com/.NetConfiguration/v2.0"&gt;&lt;strong&gt;http://schemas.microsoft.com/.NetConfiguration/v2.0&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&amp;quot;&lt;/strong&gt;&amp;gt;&lt;/p&gt;&lt;p&gt;Turns out that you have to add a XmlNamespaceManager to your document.SelectNodes xpath query, which has had a prefix added to it first, and alter your xpath to include these prefix.&lt;/p&gt;&lt;p&gt;E.g.&lt;/p&gt;&lt;p&gt;xmlNamespaceManager.AddNamespace(&amp;quot;ns&amp;quot;, xmlDocument.DocumentElement.NamespaceURI)&lt;/p&gt;&lt;p&gt;then&lt;/p&gt;&lt;p&gt;doc.SelectNodes(&amp;quot;/ns:configuration/ns:connectionStrings&amp;quot;) - will actually work.&lt;/p&gt;&lt;p&gt;The funny thing is after figuring all this out for myself, a colleague suggested that we simply use the Xml.ModifyFile task in the Microsoft SDC tasks, which happens to cope for this sort of thing within the file. It also appears as if someone has come across this problem before as well...&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.codeplex.com/sdctasks/Thread/View.aspx?ThreadId=13167"&gt;http://www.codeplex.com/sdctasks/Thread/View.aspx?ThreadId=13167&lt;/a&gt;&lt;/p&gt;&lt;p&gt;another very concise reference if you&amp;#39;re using .net directly to update documents using xpath queries is below...&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms950779.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms950779.aspx&lt;/a&gt;&amp;nbsp;(checkout the examples towards the middle of this page that show that you should expect NO RESULTS if you do not prefix your xpath).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;u&gt;SAVING without xmlns=&amp;quot;&amp;quot; appearing on your element node&lt;/u&gt;&lt;/p&gt;&lt;p&gt;To get a document element created without the extra xmlns=&amp;quot;&amp;quot; appearing as an attribute in your newly created element, you must use the 3rd overload as follows .. &lt;/p&gt;&lt;p&gt;xmlDocument.CreateElement(&amp;quot;&amp;quot;, &amp;quot;myNodeName&amp;quot;, xmlDocument.DocumentElement.NamespaceURI)&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=9227" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/.NET+2.0/default.aspx">.NET 2.0</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/msbuild/default.aspx">msbuild</category></item><item><title>Returning an ERRORLEVEL to DOS prompt from OSQL utility</title><link>http://blogs.conchango.com/merrickchaffer/archive/2007/11/26/Returning-an-ERRORLEVEL-to-DOS-prompt-from-OSQL-utility.aspx</link><pubDate>Mon, 26 Nov 2007 10:59:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:9192</guid><dc:creator>merrick.chaffer</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.conchango.com/merrickchaffer/comments/9192.aspx</comments><wfw:commentRss>http://blogs.conchango.com/merrickchaffer/commentrss.aspx?PostID=9192</wfw:commentRss><description>&lt;p&gt;After much trial and tribulation today I&amp;#39;ve finally cracked how to return a non zero exit code from a call to osql back to a dos batch file. &lt;/p&gt;&lt;p&gt;The answer is as follows. Note the bits in &lt;strong&gt;bold&lt;/strong&gt; below are most important, and the use of the single &amp;amp; sign to denote running the IF ERRORLEVEL 1 command even if the previous osql command errors.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;for /F %%i in (&amp;#39;dir *.sql /b&amp;#39;) do osql &lt;strong&gt;-b&lt;/strong&gt; -E -S&amp;nbsp;MyServer\InstanceName -d&amp;nbsp;MyDatabase -i %%i &lt;strong&gt;&amp;amp;&lt;/strong&gt; &lt;strong&gt;IF ERRORLEVEL 1&lt;/strong&gt; goto ABORTBATCH&lt;/p&gt;&lt;p&gt;:ABORTBATCH&lt;br /&gt;popd&lt;br /&gt;@echo on&lt;br /&gt;REM Specify non zero exit code to signal error occurred&lt;br /&gt;exit /b 1&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=9192" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/SQL+2005/default.aspx">SQL 2005</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/osql/default.aspx">osql</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/batch/default.aspx">batch</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/dos/default.aspx">dos</category></item><item><title>Visual Studio 2008 and .NET 3.5 Released</title><link>http://blogs.conchango.com/merrickchaffer/archive/2007/11/20/Visual-Studio-2008-released.aspx</link><pubDate>Tue, 20 Nov 2007 10:07:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:9116</guid><dc:creator>merrick.chaffer</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.conchango.com/merrickchaffer/comments/9116.aspx</comments><wfw:commentRss>http://blogs.conchango.com/merrickchaffer/commentrss.aspx?PostID=9116</wfw:commentRss><description>&lt;p&gt;For a blog detailing all the new features with.NET3.5 and Visual studio 2008, including javascript intellisense and //&amp;lt;reference&amp;gt; syntax,check out Scott Gu&amp;#39;s blog post here.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/11/19/visual-studio-2008-and-net-3-5-released.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2007/11/19/visual-studio-2008-and-net-3-5-released.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=9116" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category></item><item><title>Extension methods in .NET3.5 and LINQ</title><link>http://blogs.conchango.com/merrickchaffer/archive/2007/11/20/Extension-methods-in-.NET3.5-and-LINQ.aspx</link><pubDate>Tue, 20 Nov 2007 09:59:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:9115</guid><dc:creator>merrick.chaffer</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.conchango.com/merrickchaffer/comments/9115.aspx</comments><wfw:commentRss>http://blogs.conchango.com/merrickchaffer/commentrss.aspx?PostID=9115</wfw:commentRss><description>&lt;p&gt;Was just reading on Scott Gu&amp;#39;s blog about the release of Visual Studio 2008 and .NET 3.5, and came across an excellent description of the new extension methods feature in .Net 3.5. I have to say that until I saw this blog post, the quick overview from Mike Taulty at TechEd lost me somewhat as to what the purpose of these extension methods is, and also how they apply to LINQ...&lt;/p&gt;&lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/03/13/new-orcas-language-feature-extension-methods.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2007/03/13/new-orcas-language-feature-extension-methods.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=9115" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>TechEd 2007 Barcelona - useful links</title><link>http://blogs.conchango.com/merrickchaffer/archive/2007/11/08/TechEd-2007-Barcelona-_2D00_-useful-links.aspx</link><pubDate>Thu, 08 Nov 2007 09:37:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:8990</guid><dc:creator>merrick.chaffer</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.conchango.com/merrickchaffer/comments/8990.aspx</comments><wfw:commentRss>http://blogs.conchango.com/merrickchaffer/commentrss.aspx?PostID=8990</wfw:commentRss><description>&lt;p&gt;&lt;strong&gt;&lt;u&gt;The Moth&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.danielmoth.com/Blog/2007/11/top-10-things-to-know-about-visual.html"&gt;http://www.danielmoth.com/Blog/2007/11/top-10-things-to-know-about-visual.html&lt;/a&gt;&amp;nbsp;- The Moth as he&amp;#39;s known, shows us his top ten things to know about visual studio (trust me this is not all about linq)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Ingo Rammer - Debugging tools&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.thinktecture.com/ingo/archive/2006/08/05/414674.aspx"&gt;http://blogs.thinktecture.com/ingo/archive/2006/08/05/414674.aspx&lt;/a&gt;&amp;nbsp;- Ingo (&amp;quot;The God&amp;quot;) Rammer shows us&amp;nbsp;an interesting application of the use of the windbg tool to get to the bottom of some nasty bugs. Rack up on a client site with just&amp;nbsp;a usb key with the following tools and be able to debug managed (and unmanaged code). 90% of bugs are caused by un garbaged collected objects, Ingo shows us how to find these &lt;a href="http://blogs.thinktecture.com/ingo/archive/2006/08/05/414674.aspx"&gt;http://blogs.thinktecture.com/ingo/archive/2006/08/05/414674.aspx&lt;/a&gt;.&lt;br /&gt;Tools for use include:&lt;/p&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Windbg.exe&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;cbd.exe (command line version of above)&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;adplus.vbs -crash -pn notepad.exe (gets&amp;nbsp; you a crash dump)&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;SOSAssist visually walk through the memory dump files produced, and right cilck to show offending code in .NET Reflector!&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Hawkeye.exe - &lt;a href="http://acorns.com.au/projects/hawkeye/"&gt;http://acorns.com.au/projects/hawkeye/&lt;/a&gt;&amp;nbsp;- kind of like spy++ for managed code applications, lets you modify a running applications button text for example while the application is still running.&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This was by far the best technical session I attended at TechEd by the way! Most of the sessions I ended up with half a page of notes, for this one I couldn&amp;#39;t stop writing (4 pages of notes generated!)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Roy Osherove&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Showed us how to do many wonderful things with Reflection, and &lt;strong&gt;System.Reflection.Emit&lt;/strong&gt;. One of the most pertinent things he did was&amp;nbsp;a &lt;strong&gt;CloneWithEmit&lt;/strong&gt; method that was more performant by a factor of at least 4 times on and 100000 objects with about 9 properties each in a collection. The fact that his first example which he then sped up by using this new methods, looked almost identical to the code I wrote to do exactly that for single line code WCF service translators for data contracts to business entities, was most intriguing.&lt;/p&gt;&lt;p&gt;Also use the new CustomAttributeData.GetCustomAttributes in future as it doesn&amp;#39;t invoke the constructors of the attributes, merely returns the object graph structure for what you need in read only format. &lt;strong&gt;Assembly.ReflectionOnlyLoad&lt;/strong&gt; as well is more secure.&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=8990" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/teched/default.aspx">teched</category></item></channel></rss>