<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://madtechnology.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fmadtechnology.spaces.live.com%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Chris Burrows' Live Space</title><description>Make your project experience smooth by removing all the speed bumps.</description><link>http://madtechnology.spaces.live.com/</link><language>en-US</language><pubDate>Thu, 09 Oct 2008 12:25:57 GMT</pubDate><lastBuildDate>Thu, 09 Oct 2008 12:25:57 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><live:identity><live:id>-704843040485928323</live:id><live:alias>madtechnology</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>Visual Studio Team System 2010 - Love that DashBoard</title><link>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!247.entry</link><description>&lt;p&gt;One of the benefit that you get when working for a company like &lt;a href="http://www.readify.net"&gt;Readify&lt;/a&gt; is you are given time to spend brushing up on the latest technology.   With all of the new Visual Studio 2010 video's that &lt;a href="http://channel9.msdn.com/Niners/briankel/"&gt;Brian Keller&lt;/a&gt; has producing over the last week has been great to be able to spend a couple of days getting into them.     I must say that I have been impressed with some of the new features.   One that has caught my eye so far is the Dashboard that they are planning for the portal.  Whilst watching the &lt;a href="http://channel9.msdn.com/posts/VisualStudio/Requirements-Management-and-Traceability-with-Visual-Studio-Team-System-2010/"&gt;Requirements Management and Traceability screen cast&lt;/a&gt; I grab the following pictures to give you an insight into what the new portal is going to look like. &lt;p&gt;  &lt;p&gt;&lt;a href="http://6wusxa.bay.livefilestore.com/y1pOkYl2mPga7TT2nECkC87GpptGdzyAn60NqxkyStAGBDorGHjgF-vGeehqvuqQwWWjJH5IJdetrA?PARTNER=WRITER"&gt;&lt;img style="border-right-width:0px;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" border=0 alt=image src="http://6wusxa.bay.livefilestore.com/y1pW7fwTZPPW3d14odf9cBU3713vICKgP10HabdYs0X1TIehRDZ8WaimO2Stwwx71fpJqWoLIkA_c8?PARTNER=WRITER" width=644 height=314&gt;&lt;/a&gt;  &lt;p&gt;&lt;a href="http://byfiles.storage.msn.com/y1p9unbT461H069g4N0ps5CK5M094SGTLoG-_JegHXcVga45_rOHrukRDj5KffvZLvA?PARTNER=WRITER"&gt;&lt;img style="border-right-width:0px;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" border=0 alt=image src="http://6wusxa.bay.livefilestore.com/y1pz48Pzek5PBak7PcemEYPzDH5-fsYiuWh6SmWPC-QSlEUwYLpv0TzbYBCnoBmqwA6x0vy0_-VwUcFzKxT_9bQWA?PARTNER=WRITER" width=644 height=385&gt;&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-704843040485928323&amp;page=RSS%3a+Visual+Studio+Team+System+2010+-+Love+that+DashBoard&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=madtechnology.spaces.live.com&amp;amp;GT1=madtechnology"&gt;</description><category>None</category><comments>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!247.entry#comment</comments><guid isPermaLink="true">http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!247.entry</guid><pubDate>Thu, 09 Oct 2008 12:25:57 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://madtechnology.spaces.live.com/blog/cns!F637E4FD356E127D!247/comments/feed.rss</wfw:commentRss><wfw:comment>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!247.entry#comment</wfw:comment><dcterms:modified>2008-10-09T12:25:57Z</dcterms:modified></item><item><title>I'm on the move</title><link>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!241.entry</link><description>&lt;p&gt;After playing around with Windows Live for a while I have decided to make Windows Live the centre of my digital world. To that end I have finally moved my blog across.   Redirects are in place and the new address is &lt;a href="http://madtechnology.spaces.live.com"&gt;http://madtechnology.spaces.live.com&lt;/a&gt;.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-704843040485928323&amp;page=RSS%3a+I'm+on+the+move&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=madtechnology.spaces.live.com&amp;amp;GT1=madtechnology"&gt;</description><comments>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!241.entry#comment</comments><guid isPermaLink="true">http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!241.entry</guid><pubDate>Thu, 09 Oct 2008 12:02:06 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://madtechnology.spaces.live.com/blog/cns!F637E4FD356E127D!241/comments/feed.rss</wfw:commentRss><wfw:comment>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!241.entry#comment</wfw:comment><dcterms:modified>2008-10-09T12:02:06Z</dcterms:modified></item><item><title>The New Build Summary screen in Team Build 2010</title><link>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!239.entry</link><description>&lt;p&gt;The team has been doing some great work around Team Build and have made some significant changes to the way that it works.    While watching the &lt;a href="http://channel9.msdn.com/posts/VisualStudio/An-early-look-at-Team-Foundation-Build-2010-with-Jim-Lamb/"&gt;Channel 9 Video&lt;/a&gt; from Jim Lamb I grabbed some screen shots of the improvements.   There are many more so I would recommend that you watch the video. &lt;p&gt;Here they are: &lt;p&gt;&lt;strong&gt;New Build Summary Screen&lt;/strong&gt; &lt;p&gt;&lt;a href="http://byfiles.storage.msn.com/y1pl61qd9vbeMNMEWO94A8IJft-W1PoFSrXtnKjIldbaNHPU0JCRe9pdClylWCJR1bc?PARTNER=WRITER"&gt;&lt;img style="border-right-width:0px;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" border=0 alt=image src="http://byfiles.storage.msn.com/y1pZlRTeN7Q9Xf8gpY6aj8Lb8nxPSTrgjIFtwZwcRTgxLKkzLYroY07MJQL_XeHoxhFsREWjc5glbI?PARTNER=WRITER" width=556 height=275&gt;&lt;/a&gt;  &lt;p&gt;  &lt;p&gt;&lt;strong&gt;Activity Log View of Build Summary&lt;/strong&gt; &lt;p&gt;&lt;a href="http://byfiles.storage.msn.com/y1pne-tVihvuPmKSoEJwdPm5GvxEUc2xlSm-eDxXM5t7EOXrAQK68kxWiXPD2mOkigJ9VfJE1CnGl0?PARTNER=WRITER"&gt;&lt;img style="border-right-width:0px;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" border=0 alt=image src="http://byfiles.storage.msn.com/y1p8LQSrrMHt7z8Ym3kWMlgiVKCeSO9YJR2Hme0V_LI5nq8PYnrN9IGR_S7Esroj2x7v8lRPBuikyw?PARTNER=WRITER" width=558 height=528&gt;&lt;/a&gt; &lt;strong&gt;&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;Broken Builds View on Build Summary Screen&lt;/strong&gt; &lt;p&gt;This one is really interesting,  What you can do is double click on the error and if it is a compile error it will bring up the version of the file that was build and allow you to fix the error and check it back in again. &lt;p&gt;&lt;a href="http://byfiles.storage.msn.com/y1p7Jn2X9KQM-G_txk5wHVzOHUDvCHKU32KOFT2UhtQyzuOWUlQVaeox9jRjWcq-IgOFZUkbRU5C2Y?PARTNER=WRITER"&gt;&lt;img style="border-right-width:0px;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" border=0 alt=image src="http://byfiles.storage.msn.com/y1paSe4EQPkmZmZ9UOqWbg717_ZXJtvT2-YjoWWBnsNRoqLKziwZSTmdpUGcPIuNE6dRwfCK7-oOeI?PARTNER=WRITER" width=534 height=304&gt;&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-704843040485928323&amp;page=RSS%3a+The+New+Build+Summary+screen+in+Team+Build+2010&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=madtechnology.spaces.live.com&amp;amp;GT1=madtechnology"&gt;</description><comments>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!239.entry#comment</comments><guid isPermaLink="true">http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!239.entry</guid><pubDate>Thu, 09 Oct 2008 11:34:32 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://madtechnology.spaces.live.com/blog/cns!F637E4FD356E127D!239/comments/feed.rss</wfw:commentRss><wfw:comment>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!239.entry#comment</wfw:comment><dcterms:modified>2008-10-09T11:34:32Z</dcterms:modified></item><item><title>Another Trick with .TestRunConfig,DeploymentItems and Team Build</title><link>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!140.entry</link><description>Just when you think it is safe to go out and use the power of Visual Studio 2005, some little thing comes out to bite you.    We had just added in another directory into suite of deployment items into our list of items to be deployed and guess what? You got it they were not appearing in the Out directory.     After doing some digging I found that actually some of the files where getting copied, but not all of them.    When I examined these file in Visual Studio I noticed that one of the files had the Copy to Output Directory set to &lt;strong&gt;&amp;quot;Copy If Newer&amp;quot;.  &lt;/strong&gt;I changed this to &amp;quot;&lt;strong&gt;Do Not Copy&lt;/strong&gt;&amp;quot; and suddenly the files started appearing.   Strange, Strange, strange but it works!&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-704843040485928323&amp;page=RSS%3a+Another+Trick+with+.TestRunConfig%2cDeploymentItems+and+Team+Build&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=madtechnology.spaces.live.com&amp;amp;GT1=madtechnology"&gt;</description><comments>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!140.entry#comment</comments><guid isPermaLink="true">http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!140.entry</guid><pubDate>Tue, 03 Oct 2006 11:43:01 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://madtechnology.spaces.live.com/blog/cns!F637E4FD356E127D!140/comments/feed.rss</wfw:commentRss><wfw:comment>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!140.entry#comment</wfw:comment><dcterms:modified>2006-10-03T11:43:29Z</dcterms:modified></item><item><title>Code Coverage, Web Application Project</title><link>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!138.entry</link><description>&lt;p&gt;One of the challanges that I have been having lately was getting code coverage working on our build machine.  I was able to get code coverage working for normal dll's but I couldn't get it working for Web Application projects.    The old saying &amp;quot;it worked on my machine&amp;quot; held true in this case.    I could get the code coverage working for the Web application project, but I couldn't get it working on my machine.   After scratching my head for a while, I thought to myself where is the code for the web site getting executed when you just tests against the web site.    After having a look on the build machine, I had a hunch that it might be in the _PublishedWebSites directory.   So I added a quick bit of code to the web application project to write out it's location to the event log and it confirmed my hunch.   (For those of you who are unsure where the _PublishedWebSite directory is found it is in &amp;lt;BuildDirectory&amp;gt;\&amp;lt;TeamProjectName&amp;gt;\&amp;lt;BuildTypeName&amp;gt;\Binaries\&amp;lt;Configuration&amp;gt;\_PublishedWebSites.  On my build machine that is d:\build\TestTeamProject\TestContinuous\Release\_PublishWebSites.      &lt;p&gt;So how did I solve the problem.   What I did was open up the solution file on the build machine underneath the  &amp;lt;BuildDirectory&amp;gt;\&amp;lt;TeamProjectName&amp;gt;\&amp;lt;BuildTypeName&amp;gt;\Source directory.   I then openned up the .testrunconfig file (See &lt;a href="http://blogs.madtechnology.net/blogs/chris/archive/2006/08/27/645.aspx"&gt;Enabling Code Coverage&lt;/a&gt;) and added the assemblies that I wanted to enable code coverage for and I suddenly had code coverage results. &lt;p&gt;&lt;a href="http://tk3.storage.msn.com/x1pzSqIT87ad2P7XLNUTCVivaJGNsJPSJ-TXFDSFa7P2vMpHqsQzBaXzS_ZaZab2KXPiQ4fphzzF2ojYYVTKMQ5PhyKsVDyvx0Vr5OIj5ilHBN5i998MbVPByJZdqEkyGBrETRUyaLorTb3rUNHyHWMPA"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=151 src="http://tk3.storage.msn.com/x1pzSqIT87ad2P7XLNUTCVivaJGNsJPSJ-TXFDSFa7P2vPQab3p13Sfj9SksozBmwZSPHZPrC2jhJ46bkLeDok0ddu6hWKF4BGS_rMdzKNmlEmNyQokrZCWdVhTaSwD2KcTaFpgBoGl8uYPOg_TzkWnxw" width=240 border=0&gt;&lt;/a&gt;  &lt;p&gt;  &lt;p&gt;For those who don't have access to the build machine, you can achieve the same thing by editing the .testrunconfig file manually.    Instead of double clicking on the .testrunconfig file, right mouse click and selected open with.  This will bring up the following dialogue.   &lt;p&gt;&lt;a href="http://tk3.storage.msn.com/x1pzSqIT87ad2P7XLNUTCVivaJGNsJPSJ-TXFDSFa7P2vPT8eb5sIXAzzbdgWuSTTu0DThOU65MQ2sBJl2LkJ1QeQS52PHKEw866t2yM7nT2jNkUV3FAhJNFCpY192nmhv02RtQVPobkLl9kq5fFhVNSw"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=155 src="http://tk3.storage.msn.com/x1pzSqIT87ad2P7XLNUTCVivaJGNsJPSJ-TXFDSFa7P2vOOseyc4YPmqKzlj2_ypxIibCyx2lNgWR6boFifzivuKEUlq9hQeu7BUa_Jd_hG8C8yWC3WmKIkWPS4HIt6Mu5h3FivDiM8C1a8v11uXCURVA" width=240 border=0&gt;&lt;/a&gt;  &lt;p&gt;Select the XML Editor.  This will bring up an XML editor from which you can manual edit the file.   The section that you are looking for is below: &lt;p&gt;  &lt;p&gt; &lt;div&gt;&lt;div style="display:block;background-color:#F7F7FF"&gt;&lt;pre&gt;&lt;table&gt;
	&lt;tr&gt;
		&lt;td&gt;&amp;lt;isCodeCoverageEnabled type=&amp;quot;&lt;span style="color:#8B0000"&gt;System.Boolean&lt;/span&gt;&amp;quot;&amp;gt;True&amp;lt;/isCodeCoverageEnabled&amp;gt;
	
	&lt;tr&gt;
		&lt;td&gt;    &amp;lt;codeCoverageItems type=&amp;quot;&lt;span style="color:#8B0000"&gt;System.Collections.Generic.List`1[[Microsoft.VisualStudio.TestTools.Common.CodeCoverageItem, Microsoft.VisualStudio.QualityTools.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]&lt;/span&gt;&amp;quot;&amp;gt;
	
	&lt;tr&gt;
		&lt;td&gt;      &amp;lt;_items type=&amp;quot;&lt;span style="color:#8B0000"&gt;Microsoft.VisualStudio.TestTools.Common.CodeCoverageItem[]&lt;/span&gt;&amp;quot;&amp;gt;
	
	&lt;tr&gt;
		&lt;td&gt;        &amp;lt;element type=&amp;quot;&lt;span style="color:#8B0000"&gt;Microsoft.VisualStudio.TestTools.Common.CodeCoverageItem&lt;/span&gt;&amp;quot;&amp;gt;
	
	&lt;tr&gt;
		&lt;td&gt;          &amp;lt;binaryFile type=&amp;quot;&lt;span style="color:#8B0000"&gt;System.String&lt;/span&gt;&amp;quot;&amp;gt;bin\Debug\UpdateWarehouse.exe&amp;lt;/binaryFile&amp;gt;
	
	&lt;tr&gt;
		&lt;td&gt;          &amp;lt;keyFile type=&amp;quot;&lt;span style="color:#8B0000"&gt;System.String&lt;/span&gt;&amp;quot; /&amp;gt;
	
	&lt;tr&gt;
		&lt;td&gt;          &amp;lt;pdbFile type=&amp;quot;&lt;span style="color:#8B0000"&gt;System.String&lt;/span&gt;&amp;quot;&amp;gt;obj\Debug\UpdateWarehouse.pdb&amp;lt;/pdbFile&amp;gt;
	
	&lt;tr&gt;
		&lt;td&gt;          &amp;lt;instrumentInPlace type=&amp;quot;&lt;span style="color:#8B0000"&gt;System.Boolean&lt;/span&gt;&amp;quot;&amp;gt;True&amp;lt;/instrumentInPlace&amp;gt;
	
	&lt;tr&gt;
		&lt;td&gt;          &amp;lt;outputDirectory type=&amp;quot;&lt;span style="color:#8B0000"&gt;System.String&lt;/span&gt;&amp;quot; /&amp;gt;
	
	&lt;tr&gt;
		&lt;td&gt;        &amp;lt;/element&amp;gt;
	
	&lt;tr&gt;
		&lt;td&gt;      &amp;lt;/_items&amp;gt;
	
	&lt;tr&gt;
		&lt;td&gt;      &amp;lt;_size type=&amp;quot;&lt;span style="color:#8B0000"&gt;System.Int32&lt;/span&gt;&amp;quot;&amp;gt;1&amp;lt;/_size&amp;gt;
	
	&lt;tr&gt;
		&lt;td&gt;      &amp;lt;_version type=&amp;quot;&lt;span style="color:#8B0000"&gt;System.Int32&lt;/span&gt;&amp;quot;&amp;gt;1&amp;lt;/_version&amp;gt;
	
	&lt;tr&gt;
		&lt;td&gt;    &amp;lt;/codeCoverageItems&amp;gt;
	
&lt;/table&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;All that you need to do is add in one of the elements and update the _size and _version with the number of elements in the collection array.      A tip that I discovered.  Normally when you open the .testrunconfig file as an XML document all you see if one long string.   If you do CTRL+A then CTRL+F (That is select all then Edit.FormatDocument).  &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-704843040485928323&amp;page=RSS%3a+Code+Coverage%2c+Web+Application+Project&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=madtechnology.spaces.live.com&amp;amp;GT1=madtechnology"&gt;</description><comments>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!138.entry#comment</comments><guid isPermaLink="true">http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!138.entry</guid><pubDate>Thu, 21 Sep 2006 20:36:26 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://madtechnology.spaces.live.com/blog/cns!F637E4FD356E127D!138/comments/feed.rss</wfw:commentRss><wfw:comment>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!138.entry#comment</wfw:comment><dcterms:modified>2006-09-21T20:36:26Z</dcterms:modified></item><item><title>Ah the Joys of Deployment items in testrunconfig files</title><link>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!137.entry</link><description>&lt;p&gt;I got into work this morning and I found that our build had misterously broken over night and the tests had started to fail.  (One if the challanges we have at the moment is our build machine is on a laptop that gets locked away at night so sometimes people can checkin with out having a build fired off).   Anyway, after a quick look at the exception that was being raised in the tests the files wheren't being found on the build machine.  Easy I thought, I have seen this issue &lt;a href="http://blogs.madtechnology.net/blogs/chris/archive/2006/08/28/647.aspx"&gt;before&lt;/a&gt; somebody has played around with the .testrunconfig and the we have got a trailing slash.    I quickly opened up the .testrunconfig and to my suprise it look fine.    There where 2 directories and a couple of files in the deployment item section and the directories had the trailing slash removed.   Dam! This is going to be fun.   To cut a long long story short.   I spent the next 3 hrs, trying to get different combinations to see if I could get the files to be copied across.    In frustration I decided to take a break.  Always a good thing if you have been looking at a problem for a while.  I went back to see what had changed in the last changeset.  On closer examination I noticed that somebody had added directory called &lt;strong&gt;&amp;quot;TestData&amp;quot;.   &lt;/strong&gt;Nothing out of the ordinary, however, in the deployment section of the .testrunconfig file we where trying to deploy a directory called TestData.   I said to myself, this couldn't be the problem could it?  So I renamed the directory and started the build off again.   Amazingly, it started working.   &lt;p&gt;So the moral to this story is two fold.  Firstly, always, take a break when thinking about a problem.    Secondly, remember if you are using directories as DeploymentItems in your tests make sure there isn't the same directory anywhere in your solution.  As an aside, I'm not happy that I don't know why this is happening so I might go and see if I can find out how to undertand why it works like this.   &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-704843040485928323&amp;page=RSS%3a+Ah+the+Joys+of+Deployment+items+in+testrunconfig+files&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=madtechnology.spaces.live.com&amp;amp;GT1=madtechnology"&gt;</description><comments>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!137.entry#comment</comments><guid isPermaLink="true">http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!137.entry</guid><pubDate>Thu, 21 Sep 2006 20:36:03 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://madtechnology.spaces.live.com/blog/cns!F637E4FD356E127D!137/comments/feed.rss</wfw:commentRss><wfw:comment>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!137.entry#comment</wfw:comment><dcterms:modified>2006-09-21T20:36:03Z</dcterms:modified></item><item><title>Removing rows from Excel when working with Data Driven Tests</title><link>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!131.entry</link><description>&lt;p&gt;You guessed it, we are getting down and dirty with data driven tests and Excel.  Just another tip for young players.  When deleting rows from Excel that you are using don't use the delete key, rather select the rows that you want to delete and choose &amp;quot;Delete Rows&amp;quot;.  If you don't then the rows are still assumed to contain data and your tests will fail.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-704843040485928323&amp;page=RSS%3a+Removing+rows+from+Excel+when+working+with+Data+Driven+Tests&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=madtechnology.spaces.live.com&amp;amp;GT1=madtechnology"&gt;</description><comments>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!131.entry#comment</comments><guid isPermaLink="true">http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!131.entry</guid><pubDate>Thu, 14 Sep 2006 10:13:22 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://madtechnology.spaces.live.com/blog/cns!F637E4FD356E127D!131/comments/feed.rss</wfw:commentRss><wfw:comment>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!131.entry#comment</wfw:comment><dcterms:modified>2006-09-14T10:13:22Z</dcterms:modified></item><item><title>How to force the Column Data Type when using Excel in Data Driven Tests</title><link>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!130.entry</link><description>&lt;p&gt;Where I'm working at the moment we are using the new data driven tests to help us test different combinations of test data while using the same underlying test.   At the moment we are using an Excel spreadsheet to store the test data and the expected results and expected exception.    A while ago one of the team members grabbed me to look at a problem.  For a particular row of test data a specific cell value was not being flowed through to his test.   After looking at it for a while, I noticed that this contained text data, while the rest of them contained numeric data.    This then reminded me that the Excel ODBC Driver infers the columns data type from the first X rows. (I think it is 10 but am not 100% sure).   Therefore, as the majority of the data in this column was numeric, the column type in .NET was being set to decimal.       &lt;p&gt;So how did we solve it.   First we tried just changing  the format of the column to text, but this did nothing.  So the next thing we tried was a little known feature in excel which if I remember correctly stems all the way back to the days when Excel was competing with Lotus 123.    One way of forcing the type of the cell from numeric to text is to place the &lt;strong&gt;' &lt;/strong&gt;character in front of the number.  For example if you want the number 1234 to be treated as text you would type in &lt;strong&gt;'1234.&lt;/strong&gt;   This solved the problem, the columns type was now set to Text rather than numeric.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-704843040485928323&amp;page=RSS%3a+How+to+force+the+Column+Data+Type+when+using+Excel+in+Data+Driven+Tests&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=madtechnology.spaces.live.com&amp;amp;GT1=madtechnology"&gt;</description><comments>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!130.entry#comment</comments><guid isPermaLink="true">http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!130.entry</guid><pubDate>Thu, 14 Sep 2006 10:13:10 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://madtechnology.spaces.live.com/blog/cns!F637E4FD356E127D!130/comments/feed.rss</wfw:commentRss><wfw:comment>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!130.entry#comment</wfw:comment><dcterms:modified>2006-09-14T10:13:10Z</dcterms:modified></item><item><title>Error user doesn't exist in database after restoring a database with SQL User Accounts.</title><link>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!127.entry</link><description>&lt;p&gt;If you SQL Accounts on your database (not something that I would recommend in production) and you are restoring databases you are proberbly aware of the following above error.    Now if you are like me the first thing that you do is check to see if the user exists in the database.  If you are restoring the db, most of the time it does.   It then takes a couple of seconds for me to remember that if you are restoring a database from a different server then the link between the SQL Server account and the User in the database doesn't exists.  So even when you open up the database and see the user you cannot still login.   The way you normall fix this is by deleting the user from the database, then going back to the user underneath SQLSecurity and granting access to the database for that user again.  After doing this a couple of times I got sick of it and created the following script.  &lt;p&gt; &lt;div&gt;&lt;div style="display:block;background-color:#F7F7FF"&gt;&lt;pre&gt;&lt;table&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=DECLARE&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#0000FF"&gt;DECLARE&lt;/a&gt; @USERNAME &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=varchar&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#0000FF"&gt;varchar&lt;/a&gt;(8000)
	
	&lt;tr&gt;
		&lt;td&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#0000FF"&gt;SELECT&lt;/a&gt; @USERNAME = '&lt;span style="color:#8B0000"&gt;fred&lt;/span&gt;'
	
	&lt;tr&gt;
		&lt;td&gt;
	
	&lt;tr&gt;
		&lt;td&gt;
	
	&lt;tr&gt;
		&lt;td&gt;
	
	&lt;tr&gt;
		&lt;td&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=if&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#0000FF"&gt;if&lt;/a&gt; &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=not&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#0000FF"&gt;not&lt;/a&gt; &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=exists&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#0000FF"&gt;exists&lt;/a&gt; (&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=select&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#0000FF"&gt;select&lt;/a&gt; * &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=from&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#0000FF"&gt;from&lt;/a&gt; dbo.sysusers &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=where&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#0000FF"&gt;where&lt;/a&gt; name = @UserName)
	
	&lt;tr&gt;
		&lt;td&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=BEGIN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#0000FF"&gt;BEGIN&lt;/a&gt;
	
	&lt;tr&gt;
		&lt;td&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=exec&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#0000FF"&gt;exec&lt;/a&gt; &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=sp_grantdbaccess&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#FFA500"&gt;sp_grantdbaccess&lt;/a&gt; @USERNAME , @USERNAME 
	
	&lt;tr&gt;
		&lt;td&gt;
	
	&lt;tr&gt;
		&lt;td&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=EXEC&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#0000FF"&gt;EXEC&lt;/a&gt; &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=sp_addrolemember&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#FFA500"&gt;sp_addrolemember&lt;/a&gt; '&lt;span style="color:#8B0000"&gt;db_owner&lt;/span&gt;',@USERNAME 
	
	&lt;tr&gt;
		&lt;td&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=END&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#0000FF"&gt;END&lt;/a&gt;
	
	&lt;tr&gt;
		&lt;td&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=ELSE&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#0000FF"&gt;ELSE&lt;/a&gt;
	
	&lt;tr&gt;
		&lt;td&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=BEGIN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#0000FF"&gt;BEGIN&lt;/a&gt;
	
	&lt;tr&gt;
		&lt;td&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=EXEC&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#0000FF"&gt;EXEC&lt;/a&gt; &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=sp_change_users_login&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#FFA500"&gt;sp_change_users_login&lt;/a&gt; '&lt;span style="color:#8B0000"&gt;Update_one&lt;/span&gt;',@USERNAME ,@USERNAME 
	
	&lt;tr&gt;
		&lt;td&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us/dev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=END&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99" style="color:#0000FF"&gt;END&lt;/a&gt;
	
	&lt;tr&gt;
		&lt;td&gt;
	
&lt;/table&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;What this does is grant access to the current database to the given username specified and then adds then to the role db_owner.   I have another script which will restore the database as well after I've santised it I'll post it.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-704843040485928323&amp;page=RSS%3a+Error+user+doesn't+exist+in+database+after+restoring+a+database+with+SQL+User+Accounts.&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=madtechnology.spaces.live.com&amp;amp;GT1=madtechnology"&gt;</description><comments>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!127.entry#comment</comments><guid isPermaLink="true">http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!127.entry</guid><pubDate>Wed, 13 Sep 2006 09:34:05 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://madtechnology.spaces.live.com/blog/cns!F637E4FD356E127D!127/comments/feed.rss</wfw:commentRss><wfw:comment>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!127.entry#comment</wfw:comment><dcterms:modified>2006-09-13T09:34:05Z</dcterms:modified></item><item><title>The simplest possible way to add performance counters to your application using Enterprise Library January 2006</title><link>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!121.entry</link><description>&lt;p&gt;After spending a couple of days looking at how the instrumentation works in the Enterprise Library and finding out how lacking the documentation is around instrumentation I thought I would share my experiences with you.  The best I dive into solution mode I thought I would describe what the enterprise library provides on top of the out of the box performance counters. The biggest thing it does is abstract away the creation and management of the performance counter.   Instead of writing code you can just use a few of attributes, use the EnterpriseLibraryPerformanceCounter class, create an installer and away you go.   It is that simple.    &lt;p&gt;Rather than leave it at that, let me walk you through the exact steps that you need to follow. &lt;p&gt;&lt;strong&gt;Step 1. Create a Class to House the Performance Counters&lt;/strong&gt; &lt;p&gt;The first thing that you need to do create a class that will hold the performance counters, and do the work of updating them when required.  For example:   &lt;p&gt; &lt;div&gt;&lt;div style="display:block;background-color:#F7F7FF"&gt;&lt;pre&gt;&lt;table&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;span style="color:#0000FF"&gt;using&lt;/span&gt; System;
	
	&lt;tr&gt;
		&lt;td&gt;&lt;span style="color:#0000FF"&gt;using&lt;/span&gt; System.Collections.Generic;
	
	&lt;tr&gt;
		&lt;td&gt;&lt;span style="color:#0000FF"&gt;using&lt;/span&gt; System.Text;
	
	&lt;tr&gt;
		&lt;td&gt;&lt;span style="color:#0000FF"&gt;using&lt;/span&gt; Microsoft.Practices.EnterpriseLibrary.Common.Instrumentation;
	
	&lt;tr&gt;
		&lt;td&gt;&lt;span style="color:#0000FF"&gt;using&lt;/span&gt; System.Diagnostics;
	
	&lt;tr&gt;
		&lt;td&gt;
	
	&lt;tr&gt;
		&lt;td&gt;&lt;span style="color:#0000FF"&gt;namespace&lt;/span&gt; SamplePerformanceCounter
	
	&lt;tr&gt;
		&lt;td&gt;{
	
	&lt;tr&gt;
		&lt;td&gt;    
	
	&lt;tr&gt;
		&lt;td&gt;    [HasInstallableResources]
	
	&lt;tr&gt;
		&lt;td&gt;    [PerformanceCountersDefinition(PerformanceCategory, &amp;quot;&lt;span style="color:#8B0000"&gt;SampleInstrumentationCounterHelp&lt;/span&gt;&amp;quot;)]
	
	&lt;tr&gt;
		&lt;td&gt;    &lt;span style="color:#0000FF"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF"&gt;class&lt;/span&gt; SimplestPerformanceClass
	
	&lt;tr&gt;
		&lt;td&gt;    {
	
	&lt;tr&gt;
		&lt;td&gt;        &lt;span style="color:#0000FF"&gt;private&lt;/span&gt; &lt;span style="color:#0000FF"&gt;const&lt;/span&gt; &lt;span style="color:#0000FF"&gt;string&lt;/span&gt; PerformanceCategory = &amp;quot;&lt;span style="color:#8B0000"&gt;Simplest Performance Category&lt;/span&gt;&amp;quot;;
	
	&lt;tr&gt;
		&lt;td&gt;        
	
	&lt;tr&gt;
		&lt;td&gt;        [PerformanceCounter(&amp;quot;&lt;span style="color:#8B0000"&gt;Operations Started/sec&lt;/span&gt;&amp;quot;, &amp;quot;&lt;span style="color:#8B0000"&gt;OperationStartedHelpResource&lt;/span&gt;&amp;quot;, PerformanceCounterType.RateOfCountsPerSecond32)]
	
	&lt;tr&gt;
		&lt;td&gt;        &lt;span style="color:#0000FF"&gt;private&lt;/span&gt; EnterpriseLibraryPerformanceCounter _operationStarted = &lt;span style="color:#0000FF"&gt;new&lt;/span&gt; EnterpriseLibraryPerformanceCounter(PerformanceCategory, &amp;quot;&lt;span style="color:#8B0000"&gt;Operations Started/sec&lt;/span&gt;&amp;quot;);
	
	&lt;tr&gt;
		&lt;td&gt;
	
	&lt;tr&gt;
		&lt;td&gt;        &lt;span style="color:#0000FF"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF"&gt;void&lt;/span&gt; OperationStarted()
	
	&lt;tr&gt;
		&lt;td&gt;        {
	
	&lt;tr&gt;
		&lt;td&gt;            _operationStarted.Increment();
	
	&lt;tr&gt;
		&lt;td&gt;        }
	
	&lt;tr&gt;
		&lt;td&gt;
	
	&lt;tr&gt;
		&lt;td&gt;    }
	
	&lt;tr&gt;
		&lt;td&gt;}
	
	&lt;tr&gt;
		&lt;td&gt;
	
&lt;/table&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;&lt;strong&gt;Step 2. Create an Project Installer&lt;/strong&gt;
&lt;p&gt;The next step is to create a project installer, this is really really simple. Just create a class that looks like the following.
&lt;p&gt;
&lt;div&gt;&lt;div style="display:block;background-color:#F7F7FF"&gt;&lt;pre&gt;&lt;table&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;span style="color:#0000FF"&gt;using&lt;/span&gt; System.ComponentModel;
	
	&lt;tr&gt;
		&lt;td&gt;&lt;span style="color:#0000FF"&gt;using&lt;/span&gt; System.Configuration.Install;
	
	&lt;tr&gt;
		&lt;td&gt;&lt;span style="color:#0000FF"&gt;using&lt;/span&gt; System.Management.Instrumentation;
	
	&lt;tr&gt;
		&lt;td&gt;&lt;span style="color:#0000FF"&gt;using&lt;/span&gt; Microsoft.Practices.EnterpriseLibrary.Common.Instrumentation;
	
	&lt;tr&gt;
		&lt;td&gt;
	
	&lt;tr&gt;
		&lt;td&gt;
	
	&lt;tr&gt;
		&lt;td&gt;&lt;span style="color:#0000FF"&gt;namespace&lt;/span&gt; SamplePerformanceCounter
	
	&lt;tr&gt;
		&lt;td&gt;{
	
	&lt;tr&gt;
		&lt;td&gt;    &lt;span style="color:#808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
	
	&lt;tr&gt;
		&lt;td&gt;    &lt;span style="color:#808080"&gt;/// Let the system know that the InstallUtil.exe tool will be run against this assembly&lt;/span&gt;
	
	&lt;tr&gt;
		&lt;td&gt;    &lt;span style="color:#808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
	
	&lt;tr&gt;
		&lt;td&gt;    [RunInstaller(&lt;span style="color:#0000FF"&gt;true&lt;/span&gt;)]
	
	&lt;tr&gt;
		&lt;td&gt;    &lt;span style="color:#0000FF"&gt;public&lt;/span&gt; partial &lt;span style="color:#0000FF"&gt;class&lt;/span&gt; ProjectInstaller : DefaultManagementProjectInstaller
	
	&lt;tr&gt;
		&lt;td&gt;    {
	
	&lt;tr&gt;
		&lt;td&gt;        &lt;span style="color:#808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
	
	&lt;tr&gt;
		&lt;td&gt;        &lt;span style="color:#808080"&gt;/// Represents the installer for the instrumentation events. Not intended for direct use.&lt;/span&gt;
	
	&lt;tr&gt;
		&lt;td&gt;        &lt;span style="color:#808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
	
	&lt;tr&gt;
		&lt;td&gt;        &lt;span style="color:#0000FF"&gt;public&lt;/span&gt; ProjectInstaller()
	
	&lt;tr&gt;
		&lt;td&gt;        {
	
	&lt;tr&gt;
		&lt;td&gt;            Installers.Add(&lt;span style="color:#0000FF"&gt;new&lt;/span&gt; ReflectionInstaller&amp;lt;PerformanceCounterInstallerBuilder&amp;gt;());
	
	&lt;tr&gt;
		&lt;td&gt;        }
	
	&lt;tr&gt;
		&lt;td&gt;    }
	
	&lt;tr&gt;
		&lt;td&gt;}
	
&lt;/table&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;&lt;strong&gt;Step 3. Use the Performance Counter Class&lt;/strong&gt;
&lt;p&gt;All the hard work is done, you can now start to use the performance counters.  For example
&lt;p&gt;
&lt;div&gt;&lt;div style="display:block;background-color:#F7F7FF"&gt;&lt;pre&gt;&lt;table&gt;
	&lt;tr&gt;
		&lt;td&gt;SimplestPerformanceClass performance = &lt;span style="color:#0000FF"&gt;new&lt;/span&gt; SimplestPerformanceClass();
	
	&lt;tr&gt;
		&lt;td&gt; &lt;span style="color:#0000FF"&gt;for&lt;/span&gt; (&lt;span style="color:#0000FF"&gt;int&lt;/span&gt; i = 0; i &amp;lt; 1000000; i++)
	
	&lt;tr&gt;
		&lt;td&gt;{
	
	&lt;tr&gt;
		&lt;td&gt;      performance.OperationStarted();
	
	&lt;tr&gt;
		&lt;td&gt;}
	
&lt;/table&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;&lt;strong&gt;Step 4. Install the Performance Counters&lt;/strong&gt;
&lt;p&gt;The final setp is to install the performance counters.  This is done simply by running install util over the assembly that contains the project installer.  This is as simple as and looking for &amp;quot;&lt;em&gt;The Commit Phase Completed Successfully&amp;quot;&lt;/em&gt;
&lt;p&gt;&lt;font face="Cordia New" size=3&gt;&amp;gt; intallutil simplestpossibleperformancecounter.exe&lt;/font&gt;
&lt;p&gt;You're done.   To see the output of all your hard work fire up performance monitor, add in the your counter to the output and away you go!
&lt;p&gt; 
&lt;p&gt;In my next post I'll describe how instrumentation implement instrumentation, in the same way as the Application blocks in the Enterprise Library do.    &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-704843040485928323&amp;page=RSS%3a+The+simplest+possible+way+to+add+performance+counters+to+your+application+using+Enterprise+Library+January+2006&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=madtechnology.spaces.live.com&amp;amp;GT1=madtechnology"&gt;</description><comments>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!121.entry#comment</comments><guid isPermaLink="true">http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!121.entry</guid><pubDate>Fri, 08 Sep 2006 09:55:42 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://madtechnology.spaces.live.com/blog/cns!F637E4FD356E127D!121/comments/feed.rss</wfw:commentRss><wfw:comment>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!121.entry#comment</wfw:comment><dcterms:modified>2006-09-08T09:55:42Z</dcterms:modified></item><item><title>Unit Tests failing because files cannot be found on build machine</title><link>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!118.entry</link><description>&lt;p&gt;After my post yesterday on &lt;a href="http://blogs.madtechnology.net/blogs/chris/archive/2006/08/28/646.aspx"&gt;Using External Files in unit tests&lt;/a&gt;, I found a bug when using the deployment section of a testrunconfig file to copy a directory of files.  Whilst this worked fine on the local developers machine, however when it ran on the build server the files didn't appear.   After about 30 minutes of googling I came across this &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=492538&amp;amp;SiteID=1"&gt;post&lt;/a&gt; in the forums.   I've taken the steps and modified them slightly so you don't have to leave Visual Studio. &lt;p&gt;1. In Visual Studio right click on your active .testrunconfig file in the solution items directory.  This is usually called localtestrun.testrunconfig. &lt;p&gt;2. Selected open with and choose the XML editor  &lt;p&gt;3. Find your folder in the file.   Unfortunately, the XML is produced in on big line that means that using the find command is the quickest way of doing this.   &lt;p&gt;  &amp;lt;deploymentItems type=&amp;quot;Microsoft.VisualStudio.TestTools.Common.DeploymentItemCollection&amp;quot;&amp;gt;&lt;br&gt;   &amp;lt;m_container type=&amp;quot;System.Collections.Hashtable&amp;quot;&amp;gt;&lt;br&gt;    &amp;lt;key type=&amp;quot;Microsoft.VisualStudio.TestTools.Common.DeploymentItem&amp;quot;&amp;gt;&lt;br&gt;     &amp;lt;path type=&amp;quot;System.String&amp;quot;&amp;gt;MyProject\DBScriptFolder&lt;strong&gt;\&lt;/strong&gt;&amp;lt;/path&amp;gt;&lt;br&gt;     &amp;lt;outputDirectory type=&amp;quot;System.String&amp;quot; /&amp;gt;&lt;br&gt;    &amp;lt;/key&amp;gt;&lt;br&gt;    &amp;lt;value /&amp;gt;&lt;br&gt;   &amp;lt;/m_container&amp;gt;&lt;br&gt;  &amp;lt;/deploymentItems&amp;gt;  &lt;p&gt;4. Delete the '\' (backslash) from the end of that string  &lt;p&gt;5. Save and check-in.  Sit back and watch the continuous integration fly!!&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-704843040485928323&amp;page=RSS%3a+Unit+Tests+failing+because+files+cannot+be+found+on+build+machine&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=madtechnology.spaces.live.com&amp;amp;GT1=madtechnology"&gt;</description><comments>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!118.entry#comment</comments><guid isPermaLink="true">http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!118.entry</guid><pubDate>Thu, 07 Sep 2006 11:05:25 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://madtechnology.spaces.live.com/blog/cns!F637E4FD356E127D!118/comments/feed.rss</wfw:commentRss><wfw:comment>http://madtechnology.spaces.live.com/Blog/cns!F637E4FD356E127D!118.entry#comment</wfw:comment><dcterms:modified>2006-09-07T11:05:25Z</dcterms:modified></item></channel></rss>