<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.microsoft.co.il/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>Roy Rosenberg</title><link>http://blogs.microsoft.co.il/blogs/royrose/</link><description>Team System and ALM Consultant</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Update Work Item Check-in policy for TFS 2010</title><link>http://blogs.microsoft.co.il/blogs/royrose/archive/2013/02/15/update-work-item-check-in-policy-for-tfs-2010.aspx</link><pubDate>Fri, 15 Feb 2013 12:35:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1749013</guid><dc:creator>RoyRose</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/royrose/rsscomments.aspx?PostID=1749013</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/royrose/archive/2013/02/15/update-work-item-check-in-policy-for-tfs-2010.aspx#comments</comments><description>&lt;font size="3" face="Times New Roman"&gt;

&lt;/font&gt;&lt;font size="3" face="Times New Roman"&gt;

&lt;/font&gt;&lt;p style="margin:0cm 0cm 10pt;text-align:left;unicode-bidi:embed;direction:ltr;" dir="LTR" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font size="3" face="Calibri"&gt;Because of the high demand of
the source code of the Update Work Item Check-in policy I posted &lt;/font&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/royrose/archive/2011/08/26/update-work-item-check-in-policy.aspx"&gt;&lt;font color="#0000ff" size="3" face="Calibri"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;,
here is the code of the custom check in policy you all wanted.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;font size="3" face="Times New Roman"&gt;

&lt;/font&gt;&lt;p style="margin:0cm 0cm 10pt;text-align:left;unicode-bidi:embed;direction:ltr;" dir="LTR" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;I made some adjustments and
improvement:&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;font size="3" face="Times New Roman"&gt;

&lt;/font&gt;&lt;h2 style="margin:10pt 0cm 0pt;text-align:left;unicode-bidi:embed;direction:ltr;"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font size="4"&gt;&lt;font color="#4f81bd"&gt;&lt;font face="Cambria"&gt;Setting Window&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/h2&gt;&lt;font size="3" face="Times New Roman"&gt;

&lt;/font&gt;&lt;p style="margin:0cm 0cm 10pt;text-align:left;unicode-bidi:embed;direction:ltr;" dir="LTR" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;The check-in policy can be
customized without the need to recompile. From Team Project Setting &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family:Wingdings;mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;span style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;à&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;Source Control, go to check in policies,
choose the Capito CheckIn Policies WITHours Editor and click edit button.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Times New Roman"&gt;

&lt;/font&gt;&lt;p style="margin:0cm 0cm 10pt;text-align:left;unicode-bidi:embed;direction:ltr;" dir="LTR" class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;
 
 
  
  
  
  
  
  
  
  
  
  
  
  
 
 
 
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;font size="3" face="Times New Roman"&gt;

&lt;img border="0" hspace="-1" alt="Check in policy settings" vspace="0" align="" src="http://blogs.microsoft.co.il/blogs/royrose/checkinpolicy_settings.png" width="554" height="380" /&gt;&lt;/font&gt;&lt;p style="margin:0cm 0cm 10pt;text-align:left;unicode-bidi:embed;direction:ltr;" dir="LTR" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;The settings window lets you
choose the end-date, reaming work and completed work fields to update while
checking in, in case you use different fields than the built-in ones.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;font size="3" face="Times New Roman"&gt;

&lt;/font&gt;&lt;p style="margin:0cm 0cm 10pt;text-align:left;unicode-bidi:embed;direction:ltr;" dir="LTR" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;Also, you can decide if the
developer &lt;u&gt;must&lt;/u&gt; update the completed work field while checkin in &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;font size="3" face="Times New Roman"&gt;

&lt;/font&gt;&lt;h2 style="margin:10pt 0cm 0pt;text-align:left;unicode-bidi:embed;direction:ltr;"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font size="4"&gt;&lt;font color="#4f81bd"&gt;&lt;font face="Cambria"&gt;Deployment&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/h2&gt;&lt;font size="3" face="Times New Roman"&gt;

&lt;/font&gt;&lt;p style="margin:0cm 0cm 10pt;text-align:left;unicode-bidi:embed;direction:ltr;" dir="LTR" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;You have install folder with
the latest assemblies.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;font size="3" face="Times New Roman"&gt;

&lt;/font&gt;&lt;p style="margin:0cm 0cm 10pt;text-align:left;unicode-bidi:embed;direction:ltr;" dir="LTR" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;To manually deploy them, just
choose you OS folder (XP or 7) and click the batch file that copies the DLL and
registers it in the registry.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;font size="3" face="Times New Roman"&gt;

&lt;/font&gt;&lt;p style="margin:0cm 0cm 10pt;text-align:left;unicode-bidi:embed;direction:ltr;" dir="LTR" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Have fun! &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0cm 0cm 10pt;text-align:left;unicode-bidi:embed;direction:ltr;" dir="LTR" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Note: not yet tested on TFS 2012. feel free to let me know what you think..&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0cm 0cm 10pt;text-align:left;unicode-bidi:embed;direction:ltr;" dir="LTR" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3" face="Times New Roman"&gt;

&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;font face="Calibri"&gt;&lt;p style="margin:0cm 0cm 10pt;text-align:left;unicode-bidi:embed;direction:ltr;" dir="LTR" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/royrose/Capito.CheckInPolicies.WITHoursEditor.zip"&gt;&lt;font color="#0000ff" size="3"&gt;Download&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0cm 0cm 10pt;text-align:left;unicode-bidi:embed;direction:ltr;" dir="LTR" class="MsoNormal"&gt;&lt;font size="3" face="Times New Roman"&gt;

&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;p style="margin:0cm 0cm 10pt;text-align:left;unicode-bidi:embed;direction:ltr;" dir="LTR" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;font size="3" face="Times New Roman"&gt;

&lt;/font&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1749013" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Version+Control/default.aspx">Version Control</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/TFS+API+and+Customization/default.aspx">TFS API and Customization</category></item><item><title>Missing TFSJobAgent Service in OS Service list</title><link>http://blogs.microsoft.co.il/blogs/royrose/archive/2012/05/08/missing-tfsjobagent-service-in-os-service-list.aspx</link><pubDate>Tue, 08 May 2012 20:18:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1086367</guid><dc:creator>RoyRose</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/royrose/rsscomments.aspx?PostID=1086367</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/royrose/archive/2012/05/08/missing-tfsjobagent-service-in-os-service-list.aspx#comments</comments><description>&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;This case should not happen to you unless the TFS machine is crashed just after the TFS installation.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;In my case, I installed clean TFS and upgrade from TFS 2008 to 2010 without any problems. Just after the upgrade the IT guy decided to remove a disk storage that caused the OS to crash.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;We tried to restart the server without any luck. And then, the IT guy chose &amp;quot;restore to last good configuration&amp;quot; option when the OS loaded. The TFS went back and everything worked fine so I could not realized that the &amp;quot;Visual Studio Team Foundation Background Job Agent&amp;quot; service was not listed on the OS services.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;After 1 week we started to notice that the TFS did not work as we used to…&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;mso-add-space:auto;" dir="ltr" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Iterations and Areas – administrators can add new Iteration\Area values but team members could not see those values inside the iteration\area fields inside work item forms.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;mso-add-space:auto;" dir="ltr" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Reporting services stop refreshing – even though it seemed to be in progress inside the TFS Admin console&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;mso-add-space:auto;" dir="ltr" class="MsoListParagraphCxSpLast"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Alert stopped working also. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Usually the TFS notifies in the event viewer that something is wrong with the notification but I found no relevant information there.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;mso-add-space:auto;" dir="ltr" class="MsoListParagraphCxSpLast"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;So, what is going on here???&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;TFSJobAgent service is gone! Vanished! The TFS continued to work (almost) I mean the source control\work items\build\documents were on and up to date…&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;I performed some Bing search but no result about this subject. So I installed the service manually. Just run this command:&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;strong&gt;C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /LogFile=&amp;quot;C:\Program Files\Microsoft Team Foundation Server 2010\Application Tier\TfsJobAgent\TfsJobAgent.InstallLog&amp;quot; /LogToConsole=true /username=Domain\ TFSSERVICE /password=PSW &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;TFSJobAgent.exe&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;After that the service was listed in the services window (services.msc) &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;All alerts were fired; the reporting was refreshed and displayed all the data. The event viewer was started to be filled with TFS notifications (informations, not errors&lt;/font&gt;&lt;span style="FONT-FAMILY:Wingdings;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;span style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1086367" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Upgrade/default.aspx">Upgrade</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/TF+Errors/default.aspx">TF Errors</category></item><item><title>TFS Policy Overrides Report</title><link>http://blogs.microsoft.co.il/blogs/royrose/archive/2011/09/01/tfs-policy-overrides-report.aspx</link><pubDate>Thu, 01 Sep 2011 16:47:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:891770</guid><dc:creator>RoyRose</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/royrose/rsscomments.aspx?PostID=891770</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/royrose/archive/2011/09/01/tfs-policy-overrides-report.aspx#comments</comments><description>&lt;h2 style="TEXT-ALIGN:left;MARGIN:10pt 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;Summary&lt;/font&gt;&lt;/h2&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Managers and Team leaders that work with TFS track the project&amp;#39;s progress through reports.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Reports such as Requirement Overview, Requirement Progress and Burn Down and Burn Rate analyze Work Items and display the team progress.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;When developers check-in, they should link their changesets to work item(s).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;To help and make developers remembering this, we use check-in policies such as Work Item policy and Comments policy.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Although this data exists in TFS, there is no way to see the check-in policy&amp;nbsp;overrides amount and users who made them. We need a tool for that, that gets the data from the API.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;So I created a report for that &lt;/font&gt;&lt;span style="FONT-FAMILY:Wingdings;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;span style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;h2 style="TEXT-ALIGN:left;MARGIN:10pt 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;Check In Policy Overrides Report&lt;/font&gt;&lt;/h2&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;This report is a simple TFS report that displays the check-in policy overrides that were made in a date range. You only need to enter that date range that by default it takes the last week.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;img border="0" alt="Check in policy overrides report" src="http://blogs.microsoft.co.il/blogs/royrose/Reports/check%20in%20policy2.png" width="505" height="388" /&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The report has 3 parts:&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;mso-add-space:auto;" dir="ltr" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style="COLOR:#ffc000;"&gt;Upper&amp;nbsp;left&lt;/span&gt; &lt;span style="COLOR:#ffc000;"&gt;part&lt;/span&gt; – displays all check in amount that was made in the date range and the number of overrides as well.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;mso-add-space:auto;" dir="ltr" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style="COLOR:red;"&gt;Upper&amp;nbsp;right part&lt;/span&gt; – displays a small pie with all team members that override a check in policy.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;mso-add-space:auto;" dir="ltr" class="MsoListParagraphCxSpLast"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#00b050;"&gt;Middle part&lt;/span&gt; – changesets with policy override details &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;You can download the report from &lt;a title="Download Report" href="http://blogs.microsoft.co.il/blogs/royrose/Check%20in%20Policies%20Overrides.zip"&gt;here&lt;/a&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Don&amp;#39;t forget to set its data source to TfsReportDS in the Reporting Services site&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=891770" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Version+Control/default.aspx">Version Control</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/TFS+API+and+Customization/default.aspx">TFS API and Customization</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Tfs+Reports/default.aspx">Tfs Reports</category></item><item><title>How to Create Better Unit-Testing with Microsoft Moles Framework Part II</title><link>http://blogs.microsoft.co.il/blogs/royrose/archive/2011/08/31/how-to-create-better-unit-testing-with-microsoft-moles-framework-part-ii.aspx</link><pubDate>Wed, 31 Aug 2011 04:44:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:891077</guid><dc:creator>RoyRose</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/royrose/rsscomments.aspx?PostID=891077</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/royrose/archive/2011/08/31/how-to-create-better-unit-testing-with-microsoft-moles-framework-part-ii.aspx#comments</comments><description>&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;This post is part II of Moles Framework, if you did not read part I (Moles overview and how to use Stubs) you can find it &lt;a title="Moles Framework - Part 1" href="http://beta.blogs.microsoft.co.il/blogs/royrose/archive/2011/08/31/how-to-create-better-unit-testing-with-microsoft-moles-framework-part-i.aspx"&gt;here&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;In my previous post I explain how can we use Stubs to fake a class that implements an interface.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;We also learnt that Stub uses virtualization technique (like OOP) to achieve isolation.&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;
&lt;h2 style="TEXT-ALIGN:left;MARGIN:10pt 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;Moles Framework -&amp;nbsp;Moles&lt;/font&gt;&amp;nbsp;&lt;/font&gt;&lt;/h2&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;But what if our DAL class does not implementing an interface…?&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Of course we don&amp;#39;t use interfaces in all our code, how can we still gain isolation without interface? Moles! Or M &lt;/font&gt;&lt;span style="FONT-FAMILY:Wingdings;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;span style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Remember that after adding Moles assembly we had 2 types of classes: S and M:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;img border="0" alt="Moles Intelli Sense" src="http://beta.blogs.microsoft.co.il/blogs/royrose/Moles/pic6.png" width="374" height="88" /&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The M is for Mole.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Mole class is the one that really does a great trick!&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;First, it does not use&lt;/font&gt;&lt;font size="3" face="Calibri"&gt; virtualization technique as Stubs but Instrumentation. Just like code coverage for instance.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;When a test uses Mole class while running, the Mole object redirects the method&amp;#39;s address to a new fake method we implemented&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;We don’t need to create a class for that (like a Stub or a Mock object), we use AllInstances object property&amp;nbsp;instead:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;img border="0" alt="Moles Example" src="http://beta.blogs.microsoft.co.il/blogs/royrose/Moles/pic9.png" width="547" height="215" /&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;This unit test can be a little bit confusing because we don&amp;#39;t really change the dal property of the Manager object; moreover, I even used Manager and not its accessor.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Here I used MResourceReader object and its AllInstances property. It means that when a test is executed, all the instances of ResourceReader within the test environment that will be loaded into memory, will replace the GetFileContent methods address to my new one…&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;u&gt;Note&lt;/u&gt;:&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;In order to tell the MSTest framework to use moles and to do its trick, we use HostType attribute.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;In the last unit test above, GetFileContentString delegate signature accept 2 parameters. The first one is of Capito.BranchUtility.DAL.ResourceReader type - unlike the real GetFileContent method that accept only one string parameter. Because we use AllInstances property, Moles come for help again and pass the DAL object as variable to the extension method (see above (dal, s ) =&amp;gt; …) so we can use its properties\methods if we want.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;You can also Mole static methods – in this case you don’t use AllInstances but the M class alone:&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;MResourceReader.StaticMethofString = ….&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=891077" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Tests/default.aspx">Tests</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Unit+Tests/default.aspx">Unit Tests</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Pex+and+Moles/default.aspx">Pex and Moles</category></item><item><title>How to Create Better Unit-Testing with Microsoft Moles Framework Part I</title><link>http://blogs.microsoft.co.il/blogs/royrose/archive/2011/08/31/how-to-create-better-unit-testing-with-microsoft-moles-framework-part-i.aspx</link><pubDate>Wed, 31 Aug 2011 04:33:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:891074</guid><dc:creator>RoyRose</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/royrose/rsscomments.aspx?PostID=891074</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/royrose/archive/2011/08/31/how-to-create-better-unit-testing-with-microsoft-moles-framework-part-i.aspx#comments</comments><description>&lt;h2 style="TEXT-ALIGN:left;MARGIN:10pt 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;Introduction &lt;/font&gt;&lt;/h2&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Unit testing is something that we all do, even if we don&amp;#39;t really use any framework for that such as MS Test or NUnit. If we&amp;#39;re writing class library we usually create another console application project to test the methods and the behavior of the new classes. &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;You can read my previous post about writing TDD and unit tests in Microsoft Visual Studio 2010 &lt;/font&gt;&lt;a href="http://beta.blogs.microsoft.co.il/blogs/royrose/archive/2010/03/13/test-driven-development-using-visual-studio-2010.aspx"&gt;&lt;font color="#0000ff" size="3" face="Calibri"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt;.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;One of the goals of unit testing is isolation. When we unit test a method, we usually want to check that it behaves as accepted, without any other objects to interfere. For example, let&amp;#39;s take a very simple scenario: &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;img border="0" alt="" src="http://beta.blogs.microsoft.co.il/blogs/royrose/Moles/pic1.png" width="1" height="1" /&gt;&lt;img border="0" alt="Class Diagram" src="http://beta.blogs.microsoft.co.il/blogs/royrose/Moles/pic1.png" width="416" height="224" /&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;We want to test GetInfo method (in Manager Class inside our BL) that calls GetFileContent method in DAL library. &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;img border="0" alt="BL GetInfo Implementation" src="http://beta.blogs.microsoft.co.il/blogs/royrose/Moles/pic2.png" width="558" height="250" /&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;When we test GetInfo, we want to check that it returns a valid result according to our inputs, but we also want to achieve isolation – meaning, we don’t want to be depend on ResouceReader object. We don&amp;#39;t want our test to pass or fail due to GetFileContent result. How can we achieve this? How can we achieve isolation?&lt;/font&gt;&lt;/p&gt;
&lt;h2 style="TEXT-ALIGN:left;MARGIN:10pt 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;Before Moles Framework&lt;/font&gt;&lt;/h2&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;In order to detour DAL.ResourceReader.GetFileContent method, we need to somehow replace the real DAL object (m_dal) in the BL.Manager object to a fake one that its implementation of GetFileContent is no more than 1 safe line… By saying &amp;quot;safe&amp;quot; I mean that it won&amp;#39;t do anything &amp;quot;dangerous&amp;quot; such as reading from a resource that can\might fail. Because our ResourceReader class is implementing an interface (IResourceReader), we can create a new class in the test project that implements IResourceReader and its GetFileContent. Then we can use &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms184807(v=vs.80).aspx"&gt;&lt;font color="#0000ff" size="3" face="Calibri"&gt;Private Accessor&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt; of the Manager object to set m_dal to our fake object.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;This technique is called &lt;u&gt;Mocking&lt;/u&gt;. Here is an example: &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;img border="0" alt="Mock Object test" src="http://beta.blogs.microsoft.co.il/blogs/royrose/Moles/pic31.png" width="416" height="224" /&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;img border="0" alt="Mock Object" src="http://beta.blogs.microsoft.co.il/blogs/royrose/Moles/pic4.png" width="528" height="249" /&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;One disadvantage of regular Mock objects is that we&amp;#39;ll need to create number of mock objects that implement GetFileContent method differently. The example above implements&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;GetFileContent that returns an empty string.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;We need another implementation that will return NULL, the file name, etc in order to test GetInfo completely. that&amp;#39;s where Moles come in…&lt;/font&gt;&lt;/p&gt;
&lt;h2 style="TEXT-ALIGN:left;MARGIN:10pt 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;Moles Framework&lt;/font&gt;&lt;/h2&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;A new pet in town! With Moles framework we can easily test objects and methods and detour other methods and objects to achieve isolation. &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Moles is a test stub and detour framework that can be downloaded for free &lt;/font&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/b3b41648-1c21-471f-a2b0-f76d8fb932ee/"&gt;&lt;font color="#0000ff" size="3" face="Calibri"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Moles offer 2 techniques to achieve isolation&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Stubs&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Moles&lt;/font&gt;&lt;/p&gt;
&lt;h2 style="TEXT-ALIGN:left;MARGIN:10pt 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;Moles Framework - Stubs&lt;/font&gt;&lt;/h2&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;In order to create a fake DAL, let&amp;#39;s first add Moles Assembly to the project we want to detour, in our case the DAL:&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;img border="0" alt="Add Moles Assembly" src="http://beta.blogs.microsoft.co.il/blogs/royrose/Moles/pic5.png" width="557" height="178" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;After compilation, a new assembly is referenced in our test project: Capito.BranchUtility.DAL.Moles. &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Check this assembly namespace and you see that it has 2 major classes that starts with S and M. The S is for stub:&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;img border="0" alt="Moles Intelli-Sense" src="http://beta.blogs.microsoft.co.il/blogs/royrose/Moles/pic6.png" width="374" height="88" /&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Stub uses Virtualization technique – that means it uses OOP to achieve isolation…pretty similar to what we just did with Mock objects.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;S classes are used mostly for Interfaces. The SIResourceReader is a class that looks like the real one but all its properties and methods are actually delegates! We can create new &amp;quot;implementation&amp;quot; to all the methods we want in that object without creating new class for that… in example: &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;img border="0" alt="Stub Example" src="http://beta.blogs.microsoft.co.il/blogs/royrose/Moles/pic7.png" width="458" height="246" /&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The selected code demonstrates how I created a fake stub object and with extension method (delegate) I gave an implementation to GetFileContent method.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;u&gt;Note&lt;/u&gt;: The GetFileContentString delegate ends with String – that&amp;#39;s meant to support method overloading.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;But, What about M ? Read the next post &lt;a title="Moles Framework Part 2" href="http://beta.blogs.microsoft.co.il/blogs/royrose/archive/2011/08/31/how-to-create-better-unit-testing-with-microsoft-moles-framework-part-ii.aspx"&gt;here&lt;/a&gt; about Moles&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=891074" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Tests/default.aspx">Tests</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Unit+Tests/default.aspx">Unit Tests</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Pex+and+Moles/default.aspx">Pex and Moles</category></item><item><title>Manually Configure and Run code Coverage </title><link>http://blogs.microsoft.co.il/blogs/royrose/archive/2011/08/30/manually-configure-and-run-code-coverage.aspx</link><pubDate>Tue, 30 Aug 2011 16:31:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:890815</guid><dc:creator>RoyRose</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/royrose/rsscomments.aspx?PostID=890815</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/royrose/archive/2011/08/30/manually-configure-and-run-code-coverage.aspx#comments</comments><description>&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;There is an option to configure and run code coverage manually for running manual tests such as test cases with Microsoft Test Manager. It can be done with few command line actions that need to be run. Here are the actions: &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l1 level1 lfo1;mso-add-space:auto;" dir="ltr" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Run VSInstr.exe to replace the DLL\PDB files with the instrumented ones&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l1 level1 lfo1;mso-add-space:auto;" dir="ltr" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Run VSPerfCmd.exe to start the code coverage &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l1 level1 lfo1;mso-add-space:auto;" dir="ltr" class="MsoListParagraphCxSpLast"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Run VSPrefCmd.exe to stop code coverage&lt;/font&gt;&lt;/p&gt;
&lt;h2 style="TEXT-ALIGN:left;MARGIN:10pt 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;VSInstr.exe&lt;/font&gt;&lt;/h2&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;In order to instrument our DLL(s), let&amp;#39;s run the command(s):&lt;/font&gt;&lt;/p&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-style:italic;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;VSInstr.exe &amp;quot;AssemlbyFile.dll&amp;quot; /coverage&lt;/em&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;After running, you can see that VSInstr.exe created the following files: &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l2 level1 lfo2;mso-add-space:auto;" dir="ltr" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;AssemblyFile.dll.orig&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l2 level1 lfo2;mso-add-space:auto;" dir="ltr" class="MsoListParagraphCxSpLast"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Assembly.Instr.pdb&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Actually, VSInstr renamed the original AssemblyFile.dll to AssemblyFile.dll.orig and created new instrumented AssemblyFile.dll (See its size – much larger…)&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Also,&amp;nbsp;it created an instrumented pdb.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;u&gt;Note&lt;/u&gt;: You can run VSInstr command multiple times for each assembly (DLL\EXE)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;h2 style="TEXT-ALIGN:left;MARGIN:10pt 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;VSPerfCmd.exe&lt;/font&gt;&lt;/h2&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;To start logging the coverage, we use VSPerfCmd command with start\shutdown arguments:&lt;/font&gt;&lt;/p&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-style:italic;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;VSPerfCmd.exe /start:coverage /output:Test.coverage&lt;/font&gt;&lt;/font&gt;&lt;/i&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;That&amp;#39;s it! Now we are ready to run our tests. When finished, we need to shutdown the coverage action:&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l3 level1 lfo4;mso-add-space:auto;" dir="ltr" class="MsoListParagraph"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;i&gt;&lt;font size="3" face="Calibri"&gt;VSPerfCmd.exe /shutdown&lt;/font&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;You can look and find coverage file (in our case Test.coverage), just drag it to Visual Studio and it&amp;#39;ll open in the Code coverage Window.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;u&gt;Important&lt;/u&gt;&lt;/b&gt;: usually, you can open Visual Studio Command Prompt and run the commands from there, but if you are on 64bit machine, the Test.Coverage file will be empty and you might get this error:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;i&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&amp;quot;Empty results generated: none of the instrumented binary was used&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;/i&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;That&amp;#39;s because you need to run the command from x64 folder:&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l3 level1 lfo4;mso-add-space:auto;" dir="ltr" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;For x32 the folder is: &amp;lt;VSDir&amp;gt;\ Team Tools\Performance Tools &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l3 level1 lfo4;mso-add-space:auto;" dir="ltr" class="MsoListParagraphCxSpLast"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;For x64 the folder is: &amp;lt;VSDir&amp;gt;\ Team Tools\Performance Tools \x64&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;I&amp;#39;ve create a small console application that loads all information from XML files and executes the commands above, it may help if you have more than one assembly to instrument and instead of running the VSInstr action multiple time, you can just update the XML and run the app. &lt;a title="CodeCoverageRunner.zip" href="http://blogs.microsoft.co.il/blogs/royrose/CodeCoverageRunner.zip"&gt;Here&lt;/a&gt; it is have fun&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=890815" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Tests/default.aspx">Tests</category></item><item><title>Process Template Comparer</title><link>http://blogs.microsoft.co.il/blogs/royrose/archive/2011/08/26/process-template-comparer.aspx</link><pubDate>Fri, 26 Aug 2011 16:54:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:889052</guid><dc:creator>RoyRose</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/royrose/rsscomments.aspx?PostID=889052</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/royrose/archive/2011/08/26/process-template-comparer.aspx#comments</comments><description>&lt;h2 style="TEXT-ALIGN:left;MARGIN:10pt 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;Introduction&lt;/font&gt;&lt;/h2&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Configuration managers in companies that use TFS need the ability to manipulate and change work Item templates according to the company&amp;#39;s methodology.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;With Microsoft Process Template Editor that comes within Visual Studio Team Foundation Power Tools, we can edit work item templates: add new fields, change the UI and the state machine of work items and fit it to the company needs. All the sets of the customized work items, source control rules and build templates gathered and called process template.&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The best practice is to have one process template in our organization so all development teams use it and obey all rules inside it. Multiple process templates in medium-sized companies can caused disorder in the development. Developers that work is cross teams or even move from one team to another will need to learn the new methodology of the team as if they move to new company… &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;In large scale companies, configuration managers usually have more than one process template. &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;When changes are made in the organization methodology and we need to update work items, we first need to compare between the current work items in Team Projects, to view the differences between them. Compare tools like the one that comes within Visual Studio can compare work items because they are XML based, but still cannot give full comparison overview and explain what the differences are.&lt;/font&gt;&lt;/p&gt;
&lt;h2 style="TEXT-ALIGN:left;MARGIN:10pt 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;Process Template Comparer&lt;/font&gt;&lt;/h2&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Process template comparer is a tool that was written to ease the comparison that configuration managers usually do with primitive tools. This tool gives the following features:&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l1 level1 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;1.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Compare between Team Projects work items&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l1 level1 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;2.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Full comparison overview that shows where the differences are&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l1 level1 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;3.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Drill-down option that shows the changes in 4 categories:&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 54pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo2;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Fields&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 54pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo2;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;States&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 54pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo2;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Transitions&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 54pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo2;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;UI&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 90pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level2 lfo2;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Groups&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 90pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level2 lfo2;mso-add-space:auto;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Tabs&lt;/font&gt;&lt;/p&gt;
&lt;h3 style="TEXT-ALIGN:left;MARGIN:10pt 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;"&gt;&lt;font color="#4f81bd" size="3" face="Cambria"&gt;Main Window &lt;/font&gt;&lt;/h3&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Choose the base team project to compare with the rest of the Team Projects.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;img style="WIDTH:536px;HEIGHT:286px;" border="0" alt="process template comparer" src="http://blogs.microsoft.co.il/blogs/royrose/pt-comp1.png" width="696" height="385" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;Ignore option&lt;/b&gt; – We can ignore fields that we don&amp;#39;t want to include in our comparison.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;After clicking compare, a list box with results is filled. &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;img border="0" alt="process template comparer" src="http://blogs.microsoft.co.il/blogs/royrose/pt-comp2.png" width="473" height="480" /&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The result view is displayed with all team projects that were chose. Each team project explains what the differences are: how much different work items and how much same or missing work items compared with the based Team Project.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;When expanding the team project node, we can view the work items that missing, different or same. Clicking View button will displays the result in more details:&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;img border="0" alt="process template comparer result" src="http://blogs.microsoft.co.il/blogs/royrose/pt-comp3.png" width="308" height="262" /&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;img border="0" alt="process template comparer result" src="http://blogs.microsoft.co.il/blogs/royrose/pt-comp4.png" width="558" height="354" /&gt;&lt;/p&gt;
&lt;h2 style="TEXT-ALIGN:left;MARGIN:10pt 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;About Next Version&lt;/font&gt;&lt;/h2&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The next version of Process Template comparer will have the following features:&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;mso-add-space:auto;" dir="ltr" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;Comparing by process template – the current version can compare between Team Projects, the next version will have the option to compare Team Projects with Process Templates that defined in TFS (i.e. Compare Team Projects with MSF for CMMI v5 Process Improvement).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;mso-add-space:auto;" dir="ltr" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Coloring options for compare results&lt;/font&gt;&lt;/p&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Export compare results to Excel&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-bidi-font-family:Arial;mso-bidi-theme-font:minor-bidi;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=889052" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Work+Items/default.aspx">Work Items</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/TFS+API+and+Customization/default.aspx">TFS API and Customization</category></item><item><title>Update Work Item Check-in policy</title><link>http://blogs.microsoft.co.il/blogs/royrose/archive/2011/08/26/update-work-item-check-in-policy.aspx</link><pubDate>Fri, 26 Aug 2011 16:39:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:889049</guid><dc:creator>RoyRose</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/royrose/rsscomments.aspx?PostID=889049</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/royrose/archive/2011/08/26/update-work-item-check-in-policy.aspx#comments</comments><description>&lt;p style="margin:0cm 0cm 0pt;text-align:left;unicode-bidi:embed;direction:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Managers and team leaders that work with TFS use Work Items to track and monitor the team&amp;#39;s work and progress.&lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0cm 0cm 0pt;text-align:left;unicode-bidi:embed;direction:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Work Items are based-work-packages that define scope of work for a team member, a work item can be a developer task, investigation task and test task. &lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0cm 0cm 0pt;text-align:left;unicode-bidi:embed;direction:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;With work items team leaders can watch and track of his team and the project progress. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;2 important fields that I like to mention are Remaining-Work and Completed-Work; these fields show the real status of a task progress. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;img border="0" alt="work item fields" src="http://blogs.microsoft.co.il/blogs/royrose/checkinpo-wi.png" width="557" height="245" /&gt;&lt;/p&gt;
&lt;p style="margin:0cm 0cm 0pt;text-align:left;unicode-bidi:embed;direction:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;When a developer finishes his task and likes to perform check-in to the changed code, he links the work item that describes the work that was done to the code. After that (or before) he needs to update the 2 field to report how much time is left to completely finish the task and how much hours completed.&lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0cm 0cm 0pt;text-align:left;unicode-bidi:embed;direction:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;It&amp;#39;s not an easy task for developers… because these fields cannot be updated while check-in. only before or after. That&amp;#39;s why I created a custom check-in policy that allows developers to update these fields while check-in. My custom check-in policy is a small window that pops up after pressing check-in button in the pending changes window. The window displays all work items (that are linked to the check-in) as tabs, each tab contain Remaining-Work and Completed-Work fields. The developer must update his work by changing the fields in all tabs. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;img border="0" alt="custom check in policy window" src="http://blogs.microsoft.co.il/blogs/royrose/checkinpo-win.png" width="352" height="282" /&gt;&lt;/p&gt;
&lt;p style="margin:0cm 0cm 0pt;text-align:left;unicode-bidi:embed;direction:ltr;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;After using my Update work item check-in policy, team leaders can use and read reports such as &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee461582.aspx"&gt;&lt;font color="#0000ff" size="3" face="Calibri"&gt;requirement progress&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt;, &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee461585.aspx"&gt;&lt;font color="#0000ff" size="3" face="Calibri"&gt;Burn down and burn rate&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt; and &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd380706.aspx"&gt;&lt;font color="#0000ff" size="3" face="Calibri"&gt;Status on all iterations&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; &lt;font size="3" face="Times New Roman"&gt;

&lt;/font&gt;&lt;p style="margin:0cm 0cm 10pt;text-align:left;unicode-bidi:embed;direction:ltr;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font size="3" face="Calibri"&gt;Go &lt;/font&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/royrose/archive/2013/02/15/update-work-item-check-in-policy-for-tfs-2010.aspx"&gt;&lt;font color="#0000ff" size="3" face="Calibri"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;
to read more and download &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;font size="3" face="Times New Roman"&gt;


&lt;/font&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=889049" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Version+Control/default.aspx">Version Control</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Work+Items/default.aspx">Work Items</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/TFS+API+and+Customization/default.aspx">TFS API and Customization</category></item><item><title>Log Build Messages in Custom Build Activity in Team Build 2010</title><link>http://blogs.microsoft.co.il/blogs/royrose/archive/2010/07/29/log-build-messages-in-custom-build-activity-in-team-build-2010.aspx</link><pubDate>Thu, 29 Jul 2010 18:27:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:684422</guid><dc:creator>RoyRose</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/royrose/rsscomments.aspx?PostID=684422</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/royrose/archive/2010/07/29/log-build-messages-in-custom-build-activity-in-team-build-2010.aspx#comments</comments><description>&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3"&gt;In TFS 2008 when we create custom tasks (inherits from Task class), we get a log object which helps us log messages into the log file of the build (with LogMessage method).&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3"&gt;In TFS 2010 the Team Build is based on workflow, so when we create a code activity we inherit from Activity class that does not contain log object. Not even a log method. Instead, we have context object (of CodedActivityContext class) that has Track method that can execute another activity. &lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3"&gt;We can Create new WriteBuildError Activity object (from the toolbox) and pass it to Track method. When running the build, we will have new line in the build log with our message. &lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" class="MsoNormal"&gt;&lt;font size="3"&gt;A better way to do it is to use Microsoft.TeamFoundation.Build.Workflow.Activities namespace that contains extension methods for the context. After adding the using statement, you&amp;#39;ll notice 3 new methods of the context called TrackBuildError, TrackBuildWarning and TrackBuildMessage. Enjoy!&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=684422" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Team+Build/default.aspx">Team Build</category></item><item><title>Team Build 2010: Copy each solution into separate directory inside drop location folder?</title><link>http://blogs.microsoft.co.il/blogs/royrose/archive/2010/07/11/team-build-2010-build-each-project-to-a-separate-directory.aspx</link><pubDate>Sun, 11 Jul 2010 16:34:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:677956</guid><dc:creator>RoyRose</dc:creator><slash:comments>48</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/royrose/rsscomments.aspx?PostID=677956</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/royrose/archive/2010/07/11/team-build-2010-build-each-project-to-a-separate-directory.aspx#comments</comments><description>&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Most of my customers want their Drop Location folders organized in sub-folders for each solution instead of getting all DLLs\EXEs in one massy folder.&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Instead of customizing csproj as &lt;/font&gt;&lt;a href="http://stackoverflow.com/questions/2784335/how-can-i-get-tfs-2010-to-build-each-project-to-a-separate-directory"&gt;&lt;font size="3" face="Calibri"&gt;http://stackoverflow.com/questions/2784335/how-can-i-get-tfs-2010-to-build-each-project-to-a-separate-directory&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt; &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;and &lt;/font&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en/tfsbuild/thread/a62a6f98-ec44-46c1-a0d0-7f441f0db973"&gt;&lt;font size="3" face="Calibri"&gt;http://social.msdn.microsoft.com/Forums/en/tfsbuild/thread/a62a6f98-ec44-46c1-a0d0-7f441f0db973&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt; suggest, you can update the template of your build and change the output directory to the one you want.&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;First, open the XAML template and drill down to the compilation activity:&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;img border="1" alt="MSBuild Task" src="http://blogs.microsoft.co.il/blogs/royrose/MSBuildTask.png" width="472" height="384" /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;You have Run-MSBuild-for-Project activity. In the Properties window check out the OutDir parameter – That&amp;#39;s the one you want to change!&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;By default, this parameter has outputDirectory variable which directs to Binaries folder of the build in the build machine.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;br /&gt;i.e I created a build name TestBuild.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The default OutDir value is D:\Builds\4\Project2010\TestBuild\&lt;b&gt;Binaries&lt;/b&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;br /&gt;Now, for creating a new folder for each solution, update OutDir parameter with this code:&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;mso-layout-grid-align:none;" dir="ltr" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;"&gt;System.IO.&lt;span style="COLOR:#2b91af;"&gt;Path&lt;/span&gt;.Combine(outputDirectory, System.IO.&lt;span style="COLOR:#2b91af;"&gt;Path&lt;/span&gt;.GetFileNameWithoutExtension(localProject))&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;"&gt;&lt;/span&gt;&amp;nbsp; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The Build Will automatically copy OutDir content to the DropLocation folder. Have Fun&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=677956" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Team+Build/default.aspx">Team Build</category></item><item><title>Custom Build Activities and TF215097 Error</title><link>http://blogs.microsoft.co.il/blogs/royrose/archive/2010/06/09/custom-build-activities-and-tf215097-error.aspx</link><pubDate>Wed, 09 Jun 2010 19:43:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:652335</guid><dc:creator>RoyRose</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/royrose/rsscomments.aspx?PostID=652335</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/royrose/archive/2010/06/09/custom-build-activities-and-tf215097-error.aspx#comments</comments><description>&lt;p&gt;TFS 2010 Build Automation can be customized by creating custom WF activities.&lt;br /&gt;The net is already full with how-to articles like this one:&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/jimlamb/archive/2009/11/18/how-to-create-a-custom-workflow-activity-for-tfs-build-2010.aspx"&gt;http://blogs.msdn.com/b/jimlamb/archive/2009/11/18/how-to-create-a-custom-workflow-activity-for-tfs-build-2010.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When I tried to queue the build, I got this annoying TF215097 error:&lt;br /&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TF215097: An error occurred while initializing a build for build definition &amp;quot;Cannot create unknown type &amp;#39;{clr-namespace:BuildTasks;assembly=BuildTasks}&amp;#39;&amp;quot;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To solve this, you need to open the WF XAML build&amp;nbsp;in notepad and check the xnmns attribute ofthe custom activity.&lt;br /&gt;The Visual Studio IDE only uses:&lt;br /&gt;clr-namespace:BuildTasks&lt;br /&gt;Instead of:&lt;br /&gt;&lt;strong&gt;clr-namespace:BuildTasks;assembly=BuildTasks&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So, just add &lt;strong&gt;;assembly=BuildTasks&lt;/strong&gt; and it will work for you too.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=652335" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Team+Build/default.aspx">Team Build</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/TF+Errors/default.aspx">TF Errors</category></item><item><title>Upgrade WSS 2.0 to 3.0 with Hardware move</title><link>http://blogs.microsoft.co.il/blogs/royrose/archive/2010/05/05/upgrade-wss-2-0-to-3-0-with-hardware-move.aspx</link><pubDate>Wed, 05 May 2010 14:09:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:610855</guid><dc:creator>RoyRose</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/royrose/rsscomments.aspx?PostID=610855</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/royrose/archive/2010/05/05/upgrade-wss-2-0-to-3-0-with-hardware-move.aspx#comments</comments><description>&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;u&gt;Upgrading TFS WSS 2.0 to 3.0 Process&lt;/u&gt;&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;font size="3"&gt;As you already know, one of the TFS 2010 prerequisites is WSS 3.0.&lt;/font&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;Besides that, if you upgrade TFS 2005 to 2008, you should also upgrade WSS to 3.0. From a huge amount of posts over the internet, WSS upgrade is the most&amp;nbsp;difficult thing when you upgrade TFS. I wanted to help you a little and provide some details with an upgrade I made a few days ago.&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;u&gt;Basic Infoformation&lt;/u&gt;:&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 45pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;tab-stops:list 45.0pt;" dir="ltr" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;TFS 2008 with SP1&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 45pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;tab-stops:list 45.0pt;" dir="ltr" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;70 something Team Projects&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 45pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;tab-stops:list 45.0pt;" dir="ltr" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;WSS 2.0&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 45pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;tab-stops:list 45.0pt;" dir="ltr" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;2 application tiers&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 45pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l0 level1 lfo1;tab-stops:list 45.0pt;" dir="ltr" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;2 data tiers with cluster&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;u&gt;Goal&lt;/u&gt;:&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l1 level1 lfo2;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;To Upgrade WSS 2.0 to 3.0&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;u&gt;How&lt;/u&gt;:&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;That&amp;#39;s the catch, because of my luck of knowledge in WSS I&amp;#39;ve decided to create WSS 2.0 server in a testing environment. I got 2 servers one for the data and one for the application (similar to the real TFS environemnt) I restored the STS_Content_TFS database in the data server, install WSS 2.0 in the application server and configure it to work with the restored STS_Content_TFS. &lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;(The testing WSS 2.0 automatically creates STS_Config_TFS database for its inner configurations).&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;After 15 minutes or so, I had WSS 2.0 working in testing environment with all sits from the production. Believe it or not – this was the easy part.&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;You can read the post of the WSS upgrade process in Neno Loje site: &lt;/font&gt;&lt;a href="http://msmvps.com/blogs/vstsblog/archive/2008/05/11/screen-gallery-upgrading-wss-2-0-to-wss-3-0.aspx"&gt;&lt;font color="#800080" size="3"&gt;http://msmvps.com/blogs/vstsblog/archive/2008/05/11/screen-gallery-upgrading-wss-2-0-to-wss-3-0.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;Basically the steps I needed to do were:&lt;/font&gt;&lt;/p&gt;
&lt;ul style="MARGIN-TOP:0cm;"&gt;
&lt;li style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l1 level1 lfo2;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;Run prescan.exe /all&lt;/font&gt;&lt;/li&gt;
&lt;li style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l1 level1 lfo2;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;Install .Net 3.5 + SP1 (WSS 2.0 does not need .Net 3.5 but WSS 30 does)&lt;/font&gt;&lt;/li&gt;
&lt;li style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l1 level1 lfo2;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;Install WSS 3.0 (chose in place upgrade + web front end)&lt;/font&gt;&lt;/li&gt;
&lt;li style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt 36pt;unicode-bidi:embed;DIRECTION:ltr;mso-list:l1 level1 lfo2;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;Configure WSS Central Administration port (I chose 17013 + NTLM)&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;Seems easy well, NOT!&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;font size="3"&gt;Prescan.exe /all tool must run before you install WSS 3.0.&lt;/font&gt;&lt;font size="3"&gt;But it kept on failing with this weird error in the log:&lt;/font&gt;&lt;font size="3"&gt;&lt;u&gt;Error: The following site has not been scanned. Id = &lt;strong&gt;GUIDE&lt;/strong&gt; and Url = &lt;strong&gt;/ &lt;/strong&gt;&lt;/u&gt;&lt;u&gt;&lt;span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;u&gt;Checking if any list has not yet been scrubbed in Server=&amp;quot;DATATIERNAME&amp;quot;;Database=&amp;quot;STS_Content_TFS&amp;quot;;Trusted_Connection=yes;App=&amp;quot;prescan.exe&amp;quot;. &lt;/u&gt;&lt;u&gt;&lt;span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/font&gt;&lt;u&gt;&lt;font size="3"&gt;Prescan has encountered sites or lists that were not updated because they cannot be accessed using the SharePoint Products and Technologies object model&lt;/font&gt;&lt;/u&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;Look at that URL: &lt;u&gt;&lt;strong&gt;/&lt;/strong&gt;&lt;/u&gt; - what&amp;#39;s that…?!?&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;After digging Bing (and Google…) I&amp;#39;ve decided to delete 2 rows in Sites table and Webs table in STS_Content_TFS database. Yes! With SQL Server Management Studio I deleted 2 rows in Sites and Webs with Id=GUIDE:&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;font size="3"&gt;SELECT *&lt;span&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="3"&gt;FROM Sites&lt;span&gt;&lt;/span&gt;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;WHERE Id = &lt;strong&gt;&lt;u&gt;GUIDE&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;font size="3"&gt;SELECT *&lt;span&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="3"&gt;FROM Webs&lt;span&gt;&lt;/span&gt;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;WHERE SiteId = &lt;strong&gt;&lt;u&gt;GUIDE&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;I did not know what those rows were – the FullUrl was &lt;/font&gt;&lt;a href="http://localhost/"&gt;&lt;font size="3"&gt;http://localhost&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt; which is not a site.&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;After that the prescan.exe /all passed with no errors and the upgrade succeeded…almost &lt;span style="FONT-FAMILY:Wingdings;mso-ascii-font-family:Arial;mso-hansi-font-family:Arial;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;span style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;It fail while upgrading – mean I came as far as ever – to the UpgradeStatus.aspx – this page refreshed every 1 minute and tells you the upgrade status.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;After 20 minute I saw a red line with a path to upgrade.log file.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;I skim the file and get this error:&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;font size="3"&gt;&lt;u&gt;CanUpgrade [SPContentDatabase Name=... Parent=SPDatabaseServiceInstance] failed.&lt;/u&gt;&lt;u&gt;&lt;span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/font&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;u&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;[SPManager] [ERROR]: The pre-upgrade scan tool has not yet been run on this database SPContentDatabase Name=.... Parent=SPDatabaseServiceInstance. &lt;strong&gt;You must run the pre-upgrade scan tool before&lt;/strong&gt; you can continue with the upgrade process. Run the tool from the following path: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\bin\prescan.exe.&lt;/font&gt;&lt;/u&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;But I did! &lt;span style="FONT-FAMILY:Wingdings;mso-ascii-font-family:Arial;mso-hansi-font-family:Arial;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;span style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;L&lt;/span&gt;&lt;/span&gt; What is the problem??– Sure I did something bad – deleting rows from the database – what did I expect…&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;Trying with Microsoft support and nothing – I roll back the testing environment&amp;nbsp;(data\WSS) 10 times trying to upgrade the damn thing with nothing.&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;Than I remembered I have a production environment, let&amp;#39;s try prescan.exe /all there… it updates the database but does nothing to the data.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;Guess what, it went with no errors at all in the first time. I need not delete rows at all. That left me with some more question marks…&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;Than I got it!!!&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;Entering the &lt;strong&gt;&lt;u&gt;STS_Config_TFS&lt;/u&gt;&lt;/strong&gt; database in the production environment I saw that Sites table (yes, also Site table in &lt;u&gt;&lt;strong&gt;STS_Config_TFS&lt;/strong&gt;&lt;/u&gt;) contains a row with url - &lt;u&gt;&lt;strong&gt;/&lt;/strong&gt;&lt;/u&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(!!!)&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;To confirm it – I open the browser and navigated to &lt;span style="COLOR:blue;"&gt;http://TFS&lt;/span&gt; site – there is a WSS site there!!!&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;When I try to go to &lt;span style="COLOR:blue;"&gt;http://TESTING_WSS&lt;/span&gt; site it gave me 404 page not found!&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;All this time I thought the problem was the TFS-WSS special configuration or prescan.exe or upgrade process when all the time the problem was the Config database – that somehow not created a &lt;u&gt;&lt;strong&gt;/&lt;/strong&gt;&lt;/u&gt; site in Sites table…&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;Again, with SQL Server management I open the &lt;u&gt;&lt;strong&gt;STS_Config_TFS&lt;/strong&gt;&lt;/u&gt;.Sites table, and add new row with the same &lt;u&gt;&lt;strong&gt;GUIDE&lt;/strong&gt;&lt;/u&gt; (I mentioned earlier) and than the upgrade process went smooth!&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:left;MARGIN:0cm 0cm 0pt;unicode-bidi:embed;DIRECTION:ltr;" dir="ltr" class="MsoNormal"&gt;&lt;font size="3"&gt;After 3 weeks TFS WSS 2.0 upgrade to 3.0 in the production environment &lt;span style="FONT-FAMILY:Wingdings;mso-ascii-font-family:Arial;mso-hansi-font-family:Arial;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;span style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=610855" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Upgrade/default.aspx">Upgrade</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/WSS+and+Sharepoint+Stuff/default.aspx">WSS and Sharepoint Stuff</category></item><item><title>Implementing Test Driven Development using Visual Studio 2010</title><link>http://blogs.microsoft.co.il/blogs/royrose/archive/2010/03/13/test-driven-development-using-visual-studio-2010.aspx</link><pubDate>Sun, 14 Mar 2010 02:34:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:544802</guid><dc:creator>RoyRose</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/royrose/rsscomments.aspx?PostID=544802</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/royrose/archive/2010/03/13/test-driven-development-using-visual-studio-2010.aspx#comments</comments><description>&lt;p&gt;Ten days before developer academy 4 in Israel, I&amp;#39;ve decided to give some information about my 30 minutes demo presentation about Test driven development in visual studio 2010.&lt;/p&gt;
&lt;p&gt;As you already noticed, this is also my first post here in Microsoft Blog. Here you&amp;#39;ll find information and code snippets about Visual studio Team system. Hope you&amp;#39;ll find it useful.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m going to start (as I&amp;#39;ll start in dev academy) with some definitions&lt;/p&gt;
&lt;p&gt;What is a unit test?&lt;/p&gt;
&lt;p&gt;Unit test is a piece of code that verifies and validates a method. When a developer writes unit tests he checks his code to ensure it behaves as he wanted.&lt;/p&gt;
&lt;p&gt;Today, almost all devices are unit tested. The device components are getting checked before combing them all together and before integration tests starts.&lt;/p&gt;
&lt;p&gt;My conclusion to this is that we, the developers, need to create unit tests to our code also.&lt;/p&gt;
&lt;p&gt;A unit test&amp;#39;s goal is KISS – keep it simple and stupid... When writing a unit test keep in mind that it should be no more than 4 rows of code. You don&amp;#39;t want to create bugs in those and you want it to help other developers understand your application logic.&lt;/p&gt;
&lt;p&gt;So, what is TDD? &lt;/p&gt;
&lt;p&gt;TDD is a development technique invented by Kent Beck that simply says: first write a unit test then, after the test fails, write the production code to pass that. TDD has 3 simple steps that you need to follow in order to make the development easy: Red, Green and Refactor. &lt;br /&gt;&lt;u&gt;Red&lt;/u&gt; means write a failing unit test. &lt;br /&gt;&lt;u&gt;Green&lt;/u&gt; means write the production code to make the unit test pass.&lt;br /&gt;&lt;u&gt;Refactor&lt;/u&gt; – change production code as needed.&lt;/p&gt;
&lt;p&gt;Visual Studio 2010 finally gives the developers the ability to write test driven code. With newer IDE (yes, WPF UI!) and&amp;nbsp;improved testing framework we can write our code in TDD.&lt;/p&gt;
&lt;p&gt;To demonstrate TDD in visual studio 2010 I&amp;#39;ve created memory game application. This game contains N*N board with cards, the user&amp;#39;s goal is to reveal 2 cards with the same picture in one turn.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/royrose/clip_image002_4CA33D61.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:block;FLOAT:none;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;MARGIN-LEFT:auto;BORDER-LEFT-WIDTH:0px;MARGIN-RIGHT:auto;" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.microsoft.co.il/blogs/royrose/clip_image002_thumb_23D7B24B.jpg" width="205" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;Figure 1 – Memory game board with 2 revealed cards&lt;/p&gt;
&lt;p&gt;For start I add a Class library project for the game logic and a test project for unit tests. The class library will contain 2 base classes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Board – represents game board that contains all game logic&lt;/li&gt;
&lt;li&gt;Card – represents game card&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The board contains &lt;u&gt;score&lt;/u&gt; property that must be set to zero when creating new board object. &lt;/p&gt;
&lt;p&gt;I created a unit test that checks score property:&lt;/p&gt;
&lt;p&gt;[&lt;font color="#2b91af"&gt;TestMethod&lt;/font&gt;] &lt;br /&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#0000ff"&gt;void&lt;/font&gt; Board_CheckScoreValue_ReturnZero() &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;int&lt;/font&gt; size = 4; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Board board = new Board(size); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Assert.AreEqual&amp;lt;int&amp;gt;(0, board.Score); &lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;As I mentioned earlier, writing TDD using Visual studio 2010 is simple. Even thought visual studio does not recognize my new class Board, the intelli-sense is smart enough to realize that I&amp;#39;m writing TDD so it gives me the option to create it:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/royrose/clip_image004_6837A38A.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:block;FLOAT:none;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;MARGIN-LEFT:auto;BORDER-LEFT-WIDTH:0px;MARGIN-RIGHT:auto;" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.microsoft.co.il/blogs/royrose/clip_image004_thumb_4A09E5D6.jpg" width="244" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;Figure 2 – Visual Studio 2010 smart intelli-sense&lt;/p&gt;
&lt;p&gt;To create Board class just use the smart tag, or with ctrl + . (dot) to generate the class&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/royrose/clip_image006_3D2F8FB8.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:block;FLOAT:none;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;MARGIN-LEFT:auto;BORDER-LEFT-WIDTH:0px;MARGIN-RIGHT:auto;" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.microsoft.co.il/blogs/royrose/clip_image006_thumb_268D4171.jpg" width="244" height="85" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;Figure 3 – Smart tag to auto generate new class&lt;/p&gt;
&lt;p&gt;After adding the class, the constructor and Score property with the smart tag help, you can run the test to check it&amp;#39;s failed from the test list view and test result view – end of red phase.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/royrose/clip_image008_00B71B0E.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:block;FLOAT:none;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;MARGIN-LEFT:auto;BORDER-LEFT-WIDTH:0px;MARGIN-RIGHT:auto;" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.microsoft.co.il/blogs/royrose/clip_image008_thumb_62895D59.jpg" width="244" height="99" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;Figure 3 – Test View and Test Result view&lt;/p&gt;
&lt;p&gt;In green phase you need to write code to make the unit test pass. Use impact test view to check which unit test you need to re-run after changing the production code.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/royrose/clip_image010_07A6A7C6.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:block;FLOAT:none;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;MARGIN-LEFT:auto;BORDER-LEFT-WIDTH:0px;MARGIN-RIGHT:auto;" title="clip_image010" border="0" alt="clip_image010" src="http://blogs.microsoft.co.il/blogs/royrose/clip_image010_thumb_6C21A5C2.jpg" width="226" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;Figure 5 – Test impact view – which tests should I run after changing code?&lt;/p&gt;
&lt;p&gt;Now, test result displayed my passed test – end of green phase.&lt;/p&gt;
&lt;p&gt;More about TDD in developer academy 4. &lt;/p&gt;
&lt;p&gt;You can download memory game sample here.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=544802" width="1" height="1"&gt;</description><enclosure url="http://blogs.microsoft.co.il/blogs/royrose/attachment/544802.ashx" length="498372" type="application/x-zip-compressed" /><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/royrose/archive/tags/TDD/default.aspx">TDD</category></item></channel></rss>