<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Eli Ofek's Blog - Proffesional</title>
    <link>http://www.ofeks.info/Blog/</link>
    <description>My shared thoughts. mainly about computer related stuff...</description>
    <language>en-us</language>
    <copyright>Eli Ofek</copyright>
    <lastBuildDate>Wed, 16 Jan 2008 21:23:51 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>thesourcerer@ofeks.info</managingEditor>
    <webMaster>thesourcerer@ofeks.info</webMaster>
    <item>
      <trackback:ping>http://www.ofeks.info/Blog/Trackback.aspx?guid=7ce4d289-a697-4948-a74d-4cde5cc4b4ac</trackback:ping>
      <pingback:server>http://www.ofeks.info/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.ofeks.info/Blog/PermaLink,guid,7ce4d289-a697-4948-a74d-4cde5cc4b4ac.aspx</pingback:target>
      <dc:creator>Eli Ofek</dc:creator>
      <wfw:comment>http://www.ofeks.info/Blog/CommentView,guid,7ce4d289-a697-4948-a74d-4cde5cc4b4ac.aspx</wfw:comment>
      <wfw:commentRss>http://www.ofeks.info/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=7ce4d289-a697-4948-a74d-4cde5cc4b4ac</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hi all,<br /><br />
About 3 months ago I was privileged to hear <a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;url=http%3a%2f%2fwww.rollthunder.com%2f">David
S Platt</a>'s "<a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;url=http%3a%2f%2fwww.whysoftwaresucks.com%2f">Why
Software Sucks</a>" show.<br />
During the show (Which is both interesting &amp; fun!) David gave an example of Backup
software, 
<br />
telling the story about how his hard drive crashed with no updated backup…<br />
This brought me to wonder …<br />
When did I last back up all my latest photos, documents and PST to a DVD?<br />
I really couldn't remember, which told me it's probably not too good…<br />
David demonstrated some screenshots from <a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;url=http%3a%2f%2fwww.carbonite.com%2fraf%2fsignup.aspx%3fRAFUserUID%3d208809%26a%3d0">Carbonite</a>,<br />
An online backup software he seems to admire, after using it for quite a while.<br />
When I got home, I Googled for <a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;url=http%3a%2f%2fwww.carbonite.com%2fraf%2fsignup.aspx%3fRAFUserUID%3d208809%26a%3d0">Carbonite</a>,
and found out that for less than 50$/year I can backup<br />
all my data with no limitations…<br />
At first I was a bit skeptic about the idea…<br />
My backup size is above 25GB… but I decided to give it a try.<br />
They give you 2 weeks of free trial, which is quite enough to feel it…<br />
After 2 weeks I managed to backup over 10GB of data in low bandwidth priority<br />
over a 1.5Mb/128Kb line …<br />
I decided to subscribe.<br /><br /><a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;url=http%3a%2f%2fwww.carbonite.com%2fraf%2fsignup.aspx%3fRAFUserUID%3d208809%26a%3d0"><img src="http://www.ofeks.info/Blog/content/binary/011608_2120_BackmeupCar1.jpg" alt="" border="0" /></a><br /><br />
Now, 3 months after, I can say I am very happy!<br />
All my documents, photos, mail &amp; even my home videos are regularly backed up without<br />
needing to do much, and I am now over 27GB!<br />
I was impressed that during this time <a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;url=http%3a%2f%2fwww.carbonite.com%2fraf%2fsignup.aspx%3fRAFUserUID%3d208809%26a%3d0">Carbonite</a> never
crashed or gave me trouble, 
<br />
and even the Email support I got to use once for asking a question was prompt.<br /><br />
One thing I must say: If you have a large backup store like mine 
<br />
(Most people don't in my opinion), bare a bit with the software until if finishes<br />
the first upload… my suggestion is to let it run in full capacity during the night, 
<br />
and in law priority when you are using the PC.<br />
After the initial backup, only diffs are uploaded, even if the files are in use (like
a PST)<br />
which is not noticeable.<br />
It's even better then a DVD, as the data is stored many miles away, 
<br />
which is like a nice data <a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;url=http%3a%2f%2fen.wikipedia.org%2fwiki%2fBackup_site">DRP
backup site</a>…<br /><br />
There are other similar solutions over the internet, in different levels, 
<br />
Starting with <a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;url=http%3a%2f%2fmozy.com%2f">Mozy</a>,
and even <a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;url=http%3a%2f%2fwww.amazon.com%2fgp%2fbrowse.html%3fnode%3d16427261">Amazon's
S3</a>, but this was the cheapest service<br />
I could find for large backup stores (Over 2 GB) which is both friendly &amp; simple.<br /><br />
If you want to give it a try, you can use this <a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;url=http%3a%2f%2fwww.carbonite.com%2fraf%2fsignup.aspx%3fRAFUserUID%3d208809%26a%3d0">referral
link</a>.<br />
If you get to purchase a subscription after the trial like I did, you will get an
extra month bonus<br />
period and me too <span style="font-family:Wingdings">J</span><br /><br />
Eli.<br /><br /><br /><br /><br /></p>
        <img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac" />
      </body>
      <title>Back me up, Carbonite!</title>
      <guid isPermaLink="false">http://www.ofeks.info/Blog/PermaLink,guid,7ce4d289-a697-4948-a74d-4cde5cc4b4ac.aspx</guid>
      <link>http://www.ofeks.info/Blog/PermaLink,guid,7ce4d289-a697-4948-a74d-4cde5cc4b4ac.aspx</link>
      <pubDate>Wed, 16 Jan 2008 21:23:51 GMT</pubDate>
      <description>&lt;p&gt;
Hi all,&lt;br /&gt;
&lt;br /&gt;
About 3 months ago I was privileged to hear &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;amp;url=http%3a%2f%2fwww.rollthunder.com%2f"&gt;David
S Platt&lt;/a&gt;'s "&lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;amp;url=http%3a%2f%2fwww.whysoftwaresucks.com%2f"&gt;Why
Software Sucks&lt;/a&gt;" show.&lt;br /&gt;
During the show (Which is both interesting &amp;amp; fun!) David gave an example of Backup
software, 
&lt;br /&gt;
telling the story about how his hard drive crashed with no updated backup…&lt;br /&gt;
This brought me to wonder …&lt;br /&gt;
When did I last back up all my latest photos, documents and PST to a DVD?&lt;br /&gt;
I really couldn't remember, which told me it's probably not too good…&lt;br /&gt;
David demonstrated some screenshots from &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;amp;url=http%3a%2f%2fwww.carbonite.com%2fraf%2fsignup.aspx%3fRAFUserUID%3d208809%26a%3d0"&gt;Carbonite&lt;/a&gt;,&lt;br /&gt;
An online backup software he seems to admire, after using it for quite a while.&lt;br /&gt;
When I got home, I Googled for &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;amp;url=http%3a%2f%2fwww.carbonite.com%2fraf%2fsignup.aspx%3fRAFUserUID%3d208809%26a%3d0"&gt;Carbonite&lt;/a&gt;,
and found out that for less than 50$/year I can backup&lt;br /&gt;
all my data with no limitations…&lt;br /&gt;
At first I was a bit skeptic about the idea…&lt;br /&gt;
My backup size is above 25GB… but I decided to give it a try.&lt;br /&gt;
They give you 2 weeks of free trial, which is quite enough to feel it…&lt;br /&gt;
After 2 weeks I managed to backup over 10GB of data in low bandwidth priority&lt;br /&gt;
over a 1.5Mb/128Kb line …&lt;br /&gt;
I decided to subscribe.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;amp;url=http%3a%2f%2fwww.carbonite.com%2fraf%2fsignup.aspx%3fRAFUserUID%3d208809%26a%3d0"&gt;&lt;img src="http://www.ofeks.info/Blog/content/binary/011608_2120_BackmeupCar1.jpg" alt="" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, 3 months after, I can say I am very happy!&lt;br /&gt;
All my documents, photos, mail &amp;amp; even my home videos are regularly backed up without&lt;br /&gt;
needing to do much, and I am now over 27GB!&lt;br /&gt;
I was impressed that during this time &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;amp;url=http%3a%2f%2fwww.carbonite.com%2fraf%2fsignup.aspx%3fRAFUserUID%3d208809%26a%3d0"&gt;Carbonite&lt;/a&gt; never
crashed or gave me trouble, 
&lt;br /&gt;
and even the Email support I got to use once for asking a question was prompt.&lt;br /&gt;
&lt;br /&gt;
One thing I must say: If you have a large backup store like mine 
&lt;br /&gt;
(Most people don't in my opinion), bare a bit with the software until if finishes&lt;br /&gt;
the first upload… my suggestion is to let it run in full capacity during the night, 
&lt;br /&gt;
and in law priority when you are using the PC.&lt;br /&gt;
After the initial backup, only diffs are uploaded, even if the files are in use (like
a PST)&lt;br /&gt;
which is not noticeable.&lt;br /&gt;
It's even better then a DVD, as the data is stored many miles away, 
&lt;br /&gt;
which is like a nice data &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;amp;url=http%3a%2f%2fen.wikipedia.org%2fwiki%2fBackup_site"&gt;DRP
backup site&lt;/a&gt;…&lt;br /&gt;
&lt;br /&gt;
There are other similar solutions over the internet, in different levels, 
&lt;br /&gt;
Starting with &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;amp;url=http%3a%2f%2fmozy.com%2f"&gt;Mozy&lt;/a&gt;,
and even &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;amp;url=http%3a%2f%2fwww.amazon.com%2fgp%2fbrowse.html%3fnode%3d16427261"&gt;Amazon's
S3&lt;/a&gt;, but this was the cheapest service&lt;br /&gt;
I could find for large backup stores (Over 2 GB) which is both friendly &amp;amp; simple.&lt;br /&gt;
&lt;br /&gt;
If you want to give it a try, you can use this &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac&amp;amp;url=http%3a%2f%2fwww.carbonite.com%2fraf%2fsignup.aspx%3fRAFUserUID%3d208809%26a%3d0"&gt;referral
link&lt;/a&gt;.&lt;br /&gt;
If you get to purchase a subscription after the trial like I did, you will get an
extra month bonus&lt;br /&gt;
period and me too &lt;span style="font-family:Wingdings"&gt;J&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;
Eli.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=7ce4d289-a697-4948-a74d-4cde5cc4b4ac" /&gt;</description>
      <comments>http://www.ofeks.info/Blog/CommentView,guid,7ce4d289-a697-4948-a74d-4cde5cc4b4ac.aspx</comments>
      <category>Personal;Proffesional</category>
    </item>
    <item>
      <trackback:ping>http://www.ofeks.info/Blog/Trackback.aspx?guid=e3d760d5-4ed0-4928-a120-9e02dc263db3</trackback:ping>
      <pingback:server>http://www.ofeks.info/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.ofeks.info/Blog/PermaLink,guid,e3d760d5-4ed0-4928-a120-9e02dc263db3.aspx</pingback:target>
      <dc:creator>Eli Ofek</dc:creator>
      <wfw:comment>http://www.ofeks.info/Blog/CommentView,guid,e3d760d5-4ed0-4928-a120-9e02dc263db3.aspx</wfw:comment>
      <wfw:commentRss>http://www.ofeks.info/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e3d760d5-4ed0-4928-a120-9e02dc263db3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <span style="FONT-SIZE: 10pt">
            <span style="FONT-FAMILY: Arial">Hi,<br /><br />
Lately we ran into a weird problem when using Enterprise Library 3.1 in the Intranet
environment,<br />
Where Internet connection is not available.<br /><br />
The symptom was a slow loading of the referenced assemblies during the application
startup.<br />
We managed to reproduce the problem using a simple console application:</span>
            <span style="FONT-FAMILY: Consolas">
              <br />
            </span>
          </span>
          <br />
________________________________________________________________________________________________<br /><br /><span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"><span style="COLOR: blue">using</span> System;<br /><span style="COLOR: blue">using</span> System.Diagnostics;<br /><span style="COLOR: blue">using</span> System.Collections.Generic;<br /><span style="COLOR: blue">using</span> System.Text;<br /><br /><span style="COLOR: blue">namespace</span> TestCrlSample<br />
{<br /><span style="COLOR: blue">class</span> Program<br />
    {<br />
        <span style="COLOR: blue">static</span><span style="COLOR: blue">void</span> Main(<span style="COLOR: blue">string</span>[]
args)<br />
    {<br />
        <span style="COLOR: #2b91af">Console</span>.WriteLine(<span style="COLOR: #a31515">"Started
at:"</span> + <span style="COLOR: #2b91af">DateTime</span>.Now.ToString());<br />
        Debug.WriteLine(<span style="COLOR: #a31515">"Started
at:"</span> + <span style="COLOR: #2b91af">DateTime</span>.Now.ToString());<br /><br />
        Stopwatch sw = <span style="COLOR: blue">new</span> Stopwatch();<br />
        sw.Start();<br />
        DoSignedLibWork();<br />
        sw.Stop();<br /><br />
        <span style="COLOR: #2b91af">Console</span>.WriteLine(<span style="COLOR: #a31515">"Total
Time elapsed(Milliseconds):"</span> + sw.ElapsedMilliseconds);<br />
        <span style="COLOR: #2b91af">Console</span>.WriteLine(<span style="COLOR: #a31515">"Ended
at:"</span> + <span style="COLOR: #2b91af">DateTime</span>.Now.ToString());<br />
        Debug.WriteLine(<span style="COLOR: #a31515">"Ended
at:"</span> + <span style="COLOR: #2b91af">DateTime</span>.Now.ToString());<br />
        <span style="COLOR: #2b91af">Console</span>.WriteLine(<span style="COLOR: #a31515">"Press
any key to exit..."</span>);<br /><br />
        <span style="COLOR: #2b91af">Console</span>.ReadLine();<br />
}<br /><br />
    <span style="COLOR: blue">public</span><span style="COLOR: blue">static</span><span style="COLOR: blue">void</span> DoSignedLibWork()<br />
    {<br />
        <span style="COLOR: #2b91af">Console</span>.WriteLine(<span style="COLOR: #a31515">"Before
Work at:"</span> + <span style="COLOR: #2b91af">DateTime</span>.Now.ToString());<br />
        Debug.WriteLine(<span style="COLOR: #a31515">"Before
Work at:"</span> + <span style="COLOR: #2b91af">DateTime</span>.Now.ToString());<br />
        Microsoft.Practices.EnterpriseLibrary.Data.ConnectionString
cs = <span style="COLOR: blue">new</span><br />
Microsoft.Practices.EnterpriseLibrary.Data.ConnectionString(<span style="COLOR: #a31515">"Data
Source=DBSRV;Initial 
<br />
         Catalog=Repository;Integrated Security=True"</span>, <span style="COLOR: #a31515">"Admin"</span>, <span style="COLOR: #a31515">"Bla"</span>);<br />
        <span style="COLOR: #2b91af">Console</span>.WriteLine(<span style="COLOR: #a31515">"After
Work at:"</span> + <span style="COLOR: #2b91af">DateTime</span>.Now.ToString());<br />
        Debug.WriteLine(<span style="COLOR: #a31515">"After
Work at:"</span> + <span style="COLOR: #2b91af">DateTime</span>.Now.ToString());<br />
    }<br /><br />
    }<br />
}<br /></span><br />
________________________________________________________________________________________________<br /><br /><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Here are some test results we got
when diagnosing the problem:<br /></span><br /><span style="TEXT-DECORATION: underline"><strong>Running the program as usual in an
Intranet environment, no Internet connection at all:<br /></strong></span><span style="FONT-SIZE: 14pt"><br /></span>___________________________<br /><span style="FONT-SIZE: 10pt">Started at:22/07/2007 18:16:47<br />
Before Work at:22/07/2007 18:16:56<br />
After Work at:22/07/2007 18:16:56<br />
Total Time elapsed(Milliseconds):9234<br />
Ended at:22/07/2007 18:16:56<br />
Press any key to exit...<span style="FONT-FAMILY: Consolas"><br /></span></span>___________________________<br /><br /><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Notice how long it took this simple
program to run… almost 10 seconds !<br />
We ran Microsoft Network Monitor during the test to check what's going on behind.<br /><br /></span><span style="TEXT-DECORATION: underline">This is the Netmon output:<br /></span><br />
_____________________________________________________________________________________<br /><span style="FONT-SIZE: 7pt">111    <span style="BACKGROUND-COLOR: yellow">5.019387</span>        DNS    DNS:
QueryId = 0xAEAE, QUERY (Standard query), Query for <span style="BACKGROUND-COLOR: yellow">crl.microsoft.com</span> of
type Host Addr on class Internet<br />
112    5.024270        DNS    DNS:
QueryId = 0xAEAE, QUERY (Standard query), Response - Server failure 
<br />
113    5.024270        DNS    DNS:
QueryId = 0xAEAE, QUERY (Standard query), Query for crl.microsoft.com of type Host
Addr on class Internet<br />
123    6.024270        DNS    DNS:
QueryId = 0xAEAE, QUERY (Standard query), Query for crl.microsoft.com of type Host
Addr on class Internet<br />
124    6.024270        DNS    DNS:
QueryId = 0xAEAE, QUERY (Standard query), Response - Server failure 
<br />
125    6.024270        DNS    DNS:
QueryId = 0xAEAE, QUERY (Standard query), Query for crl.microsoft.com of type Host
Addr on class Internet<br />
126    6.024270        DNS    DNS:
QueryId = 0xAEAE, QUERY (Standard query), Query for crl.microsoft.com of type Host
Addr on class Internet<br />
127    6.024270        DNS    DNS:
QueryId = 0xAEAE, QUERY (Standard query), Query for crl.microsoft.com of type Host
Addr on class Internet<br />
128    6.024270        DNS    DNS:
QueryId = 0xAEAE, QUERY (Standard query), Query for crl.microsoft.com of type Host
Addr on class Internet<br />
129    6.024270        DNS    DNS:
QueryId = 0xAEAE, QUERY (Standard query), Response - Server failure 
<br />
130    6.024270        DNS    DNS:
QueryId = 0xAEAE, QUERY (Standard query), Response - Server failure 
<br />
131    6.024270        DNS    DNS:
QueryId = 0xAEAE, QUERY (Standard query), Response - Server failure 
<br />
184    10.024270        DNS    DNS:
QueryId = 0xAEAE, QUERY (Standard query), Query for crl.microsoft.com of type Host
Addr on class Internet<br />
227    14.025102        DNS    DNS:
QueryId = 0xB6AF, QUERY (Standard query), Query for crl.microsoft.com.myorg.com of
type Host Addr on class Internet<br />
228    14.030961        DNS    DNS:
QueryId = 0xB6AF, QUERY (Standard query), Response - Name Error 
<br />
229    14.030961        DNS    DNS:
QueryId = 0xBFAC, QUERY (Standard query), Query for crl.microsoft.com.myorg.com of
type Host Addr on class Internet<br />
230    <span style="BACKGROUND-COLOR: yellow">14.035844</span>        DNS    DNS:
QueryId = 0xBFAC, QUERY (Standard query), Response - Name Error</span><br />
_____________________________________________________________________________________<br /><br /><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Notice how the DNS requests for
"crl.microsoft.com" took almost 9 seconds !<br />
This was very funny, so we googled for this symptom.<br /></span><br /><span style="TEXT-DECORATION: underline"><strong>Internet research shows these results:<br /></strong></span><br /><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Support Certificates In Your Applications
With The .NET Framework 2.0:<br /><a href="http://www.ofeks.info/Blog/ct.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3&amp;url=http%3a%2f%2fmsdn.microsoft.com%2fmsdnmag%2fissues%2f07%2f03%2fNETSecurity%2fdefault.aspx"></a></span>http://msdn.microsoft.com/msdnmag/issues/07/03/NETSecurity/default.aspx<br /><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><br />
Microsoft, VeriSign, and Certificate Revocation:<br /></span><a href="http://www.ofeks.info/Blog/ct.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3&amp;url=http%3a%2f%2famug.org%2f%7eglguerin%2fopinion%2frevocation.html">http://amug.org/~glguerin/opinion/revocation.html</a><br /><br />
How Office Performs Certificate Revocation:<br /><a href="http://www.ofeks.info/Blog/ct.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3&amp;url=http%3a%2f%2foffice.microsoft.com%2fen-us%2fork2003%2fHA011403081033.aspx">http://office.microsoft.com/en-us/ork2003/HA011403081033.aspx</a><br /><br />
This one is talking about IE slowness:<br /><a href="http://www.ofeks.info/Blog/ct.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3&amp;url=http%3a%2f%2fwww.wilderssecurity.com%2farchive%2findex.php%2ft-47121.html">http://www.wilderssecurity.com/archive/index.php/t-47121.html<br /></a><br />
Management Studio slowness:<br /><a href="http://www.ofeks.info/Blog/ct.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3&amp;url=http%3a%2f%2fweblogs.sqlteam.com%2ftarad%2farchive%2f2006%2f10%2f05%2f13676.aspx">http://weblogs.sqlteam.com/tarad/archive/2006/10/05/13676.aspx<br /><a href="http://www.ofeks.info/Blog/ct.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3&amp;url=http%3a%2f%2fblogs.msdn.com%2fdtjones%2farchive%2f2006%2f08%2f23%2f714738.aspx">http://blogs.msdn.com/dtjones/archive/2006/08/23/714738.aspx</a><br /><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">talking about the similar symptoms,
only when using MS SQL Management Studio.<br />
The cause of the problem is the same…<br /></span><br /><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">FAQ, Why does SSMS take 45s to start
up?<br /></span><a href="http://www.ofeks.info/Blog/ct.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3&amp;url=http%3a%2f%2fblogs.msdn.com%2feuanga%2farchive%2f2006%2f07%2f11%2f662053.aspx">http://blogs.msdn.com/euanga/archive/2006/07/11/662053.aspx</a><br /><br />
Why does the .NET Runtime Optimization Service keep trying to use the internet:<br /><a href="http://www.ofeks.info/Blog/ct.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3&amp;url=http%3a%2f%2fforums.microsoft.com%2fMSDN%2fShowPost.aspx%3fPostID%3d522726%26SiteID%3d1">http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=522726&amp;SiteID=1</a></a></p>
        <p>
          <span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">so, what have we got here?<br />
It seems that Microsoft added a mechanism to the .Net CLR that checks every signed
assembly when loading it<br />
against an online revocation list.<br />
When working in an intranet environment with IP segments<br />
that are no defined as local Intranet, the mechanism is trying to locate the crl server
for 9 seconds before it<br />
gives up, delaying the assembly loading.<br /><br />
When checking the Enterprise Library Common assembly, 
<br />
We see that is indeed signed using a Microsoft Certificate:<br /><br /><img alt="" src="http://www.ofeks.info/Blog/content/binary/110807_1435_SlowAssembl1.jpg" /></span>
          <br />
          <br />
          <span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">How do we work around it you say
?<br />
Well, there are several options.<br />
The easiest one is to disable the crl check. Oddly it is done from the Internet Options
dialog available from Internet Explorer:<br /></span>
          <br />
          <img alt="" src="http://www.ofeks.info/Blog/content/binary/110807_1435_SlowAssembl2.jpg" />
          <br />
          <br />
          <span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Now, let's run our test program
again:<br /></span>
          <span style="TEXT-DECORATION: underline">
            <strong>
              <span style="FONT-SIZE: 14pt">
                <br />
              </span>Running the program after removing the check:<br /><br /></strong>
          </span>__________________________<br /><span style="FONT-SIZE: 10pt">Started at:22/07/2007 18:17:47<br />
Before Work at:22/07/2007 18:17:47<br />
After Work at:22/07/2007 18:17:47<br />
Total Time elapsed(Milliseconds):147<br />
Ended at:22/07/2007 18:17:47<br />
Press any key to exit...<br /></span>__________________________<br /><span style="TEXT-DECORATION: underline"><strong><br /></strong></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Notice that this
time we are down to a total of 147 milliseconds, which is much more reasonable.<br />
What about the netmon output ? Well, since there is no check<br />
Netmon output is empty !<br /><br />
What about security you say?<br />
If you are canceling the crl check, you are exposed to bogus certifications.<br />
My answer to that is: If you are already disconnected from the Internet, 
<br />
then you are just exposed as before, only this time you are not slowing down your
applications for nothing.<br /><br />
A questions might be asked about situations where Internet connection is partly available
through a firewall.<br />
In this situation you might consider asking the network administrator to allow connections
to the crl server,<br />
Or if you which, make it fail the requests immediately, so you don't need to configure
the Internet Options for every node.<br /><br />
Another optional workaround is to define the crl address in the etc/hosts file pointing
it to localhost (127.0.0.1),<br />
which will quickly fail every crl request it gets.<br /><br />
Let's run our test again, this time without removing the revocation check, but defining
the crl address in the hosts file:<br /></span><span style="TEXT-DECORATION: underline"><strong><br />
Running the program after redirecting the dns name to localhost:<br /><span style="FONT-SIZE: 14pt"><br /></span></strong></span>___________________________<br /><span style="FONT-SIZE: 10pt">Started at:22/07/2007 18:18:37<br />
Before Work at:22/07/2007 18:18:37<br />
After Work at:22/07/2007 18:18:37<br />
Total Time elapsed(Milliseconds):219<br />
Ended at:22/07/2007 18:18:37<br />
Press any key to exit...<br /></span>___________________________<br /><span style="FONT-SIZE: 12pt"><br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Notice that this time we
are using 219 milliseconds, which is a bit more then the first workaround, but still
reasonable.<br />
What about the netmon output? Well, since there is no outside communication<br />
Netmon output is empty in this case too!</span><span style="TEXT-DECORATION: underline"><br /><span style="FONT-SIZE: 14pt"><br /></span><span style="FONT-SIZE: 12pt"><strong><font size="2">Conclusion:<br /></font></strong></span></span><br /><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">When working with signed assemblies
having no Internet connection to crl.microsoft.com, 
<br />
you need to consider the loading delay time for the assemblies, Or work around them
as suggested above.<br /><br />
Good Luck,<br /><br />
Eli.</span></p>
        <img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3" />
      </body>
      <title>Slow Assembly loading in Intranet environment</title>
      <guid isPermaLink="false">http://www.ofeks.info/Blog/PermaLink,guid,e3d760d5-4ed0-4928-a120-9e02dc263db3.aspx</guid>
      <link>http://www.ofeks.info/Blog/PermaLink,guid,e3d760d5-4ed0-4928-a120-9e02dc263db3.aspx</link>
      <pubDate>Thu, 08 Nov 2007 14:37:28 GMT</pubDate>
      <description>&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt"&gt;&lt;span style="FONT-FAMILY: Arial"&gt;Hi,&lt;br&gt;
&lt;br&gt;
Lately we ran into a weird problem when using Enterprise Library 3.1 in the Intranet
environment,&lt;br&gt;
Where Internet connection is not available.&lt;br&gt;
&lt;br&gt;
The symptom was a slow loading of the referenced assemblies during the application
startup.&lt;br&gt;
We managed to reproduce the problem using a simple console application:&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas"&gt;
&lt;br&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br&gt;
________________________________________________________________________________________________&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System;&lt;br&gt;
&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.Diagnostics;&lt;br&gt;
&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br&gt;
&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.Text;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; TestCrlSample&lt;br&gt;
{&lt;br&gt;
&lt;span style="COLOR: blue"&gt;class&lt;/span&gt; Program&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Main(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[]
args)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: #a31515"&gt;"Started
at:"&lt;/span&gt; + &lt;span style="COLOR: #2b91af"&gt;DateTime&lt;/span&gt;.Now.ToString());&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Debug.WriteLine(&lt;span style="COLOR: #a31515"&gt;"Started
at:"&lt;/span&gt; + &lt;span style="COLOR: #2b91af"&gt;DateTime&lt;/span&gt;.Now.ToString());&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Stopwatch sw = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; Stopwatch();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sw.Start();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DoSignedLibWork();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sw.Stop();&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: #a31515"&gt;"Total
Time elapsed(Milliseconds):"&lt;/span&gt; + sw.ElapsedMilliseconds);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: #a31515"&gt;"Ended
at:"&lt;/span&gt; + &lt;span style="COLOR: #2b91af"&gt;DateTime&lt;/span&gt;.Now.ToString());&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Debug.WriteLine(&lt;span style="COLOR: #a31515"&gt;"Ended
at:"&lt;/span&gt; + &lt;span style="COLOR: #2b91af"&gt;DateTime&lt;/span&gt;.Now.ToString());&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: #a31515"&gt;"Press
any key to exit..."&lt;/span&gt;);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #2b91af"&gt;Console&lt;/span&gt;.ReadLine();&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; DoSignedLibWork()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: #a31515"&gt;"Before
Work at:"&lt;/span&gt; + &lt;span style="COLOR: #2b91af"&gt;DateTime&lt;/span&gt;.Now.ToString());&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Debug.WriteLine(&lt;span style="COLOR: #a31515"&gt;"Before
Work at:"&lt;/span&gt; + &lt;span style="COLOR: #2b91af"&gt;DateTime&lt;/span&gt;.Now.ToString());&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Microsoft.Practices.EnterpriseLibrary.Data.ConnectionString
cs = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; 
&lt;br&gt;
Microsoft.Practices.EnterpriseLibrary.Data.ConnectionString(&lt;span style="COLOR: #a31515"&gt;"Data
Source=DBSRV;Initial 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Catalog=Repository;Integrated Security=True"&lt;/span&gt;, &lt;span style="COLOR: #a31515"&gt;"Admin"&lt;/span&gt;, &lt;span style="COLOR: #a31515"&gt;"Bla"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: #a31515"&gt;"After
Work at:"&lt;/span&gt; + &lt;span style="COLOR: #2b91af"&gt;DateTime&lt;/span&gt;.Now.ToString());&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Debug.WriteLine(&lt;span style="COLOR: #a31515"&gt;"After
Work at:"&lt;/span&gt; + &lt;span style="COLOR: #2b91af"&gt;DateTime&lt;/span&gt;.Now.ToString());&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
________________________________________________________________________________________________&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Here are some test results we got
when diagnosing the problem:&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="TEXT-DECORATION: underline"&gt;&lt;strong&gt;Running the program as usual in an
Intranet environment, no Internet connection at all:&lt;br&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 14pt"&gt;
&lt;br&gt;
&lt;/span&gt;___________________________&lt;br&gt;
&lt;span style="FONT-SIZE: 10pt"&gt;Started at:22/07/2007 18:16:47&lt;br&gt;
Before Work at:22/07/2007 18:16:56&lt;br&gt;
After Work at:22/07/2007 18:16:56&lt;br&gt;
Total Time elapsed(Milliseconds):9234&lt;br&gt;
Ended at:22/07/2007 18:16:56&lt;br&gt;
Press any key to exit...&lt;span style="FONT-FAMILY: Consolas"&gt;
&lt;br&gt;
&lt;/span&gt;&lt;/span&gt;___________________________&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Notice how long it took this simple
program to run… almost 10 seconds !&lt;br&gt;
We ran Microsoft Network Monitor during the test to check what's going on behind.&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;span style="TEXT-DECORATION: underline"&gt;This is the Netmon output:&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
_____________________________________________________________________________________&lt;br&gt;
&lt;span style="FONT-SIZE: 7pt"&gt;111&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="BACKGROUND-COLOR: yellow"&gt;5.019387&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS:
QueryId = 0xAEAE, QUERY (Standard query), Query for &lt;span style="BACKGROUND-COLOR: yellow"&gt;crl.microsoft.com&lt;/span&gt; of
type Host Addr on class Internet&lt;br&gt;
112&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5.024270&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS:
QueryId = 0xAEAE, QUERY (Standard query), Response - Server failure 
&lt;br&gt;
113&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5.024270&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS:
QueryId = 0xAEAE, QUERY (Standard query), Query for crl.microsoft.com of type Host
Addr on class Internet&lt;br&gt;
123&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6.024270&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS:
QueryId = 0xAEAE, QUERY (Standard query), Query for crl.microsoft.com of type Host
Addr on class Internet&lt;br&gt;
124&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6.024270&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS:
QueryId = 0xAEAE, QUERY (Standard query), Response - Server failure 
&lt;br&gt;
125&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6.024270&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS:
QueryId = 0xAEAE, QUERY (Standard query), Query for crl.microsoft.com of type Host
Addr on class Internet&lt;br&gt;
126&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6.024270&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS:
QueryId = 0xAEAE, QUERY (Standard query), Query for crl.microsoft.com of type Host
Addr on class Internet&lt;br&gt;
127&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6.024270&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS:
QueryId = 0xAEAE, QUERY (Standard query), Query for crl.microsoft.com of type Host
Addr on class Internet&lt;br&gt;
128&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6.024270&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS:
QueryId = 0xAEAE, QUERY (Standard query), Query for crl.microsoft.com of type Host
Addr on class Internet&lt;br&gt;
129&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6.024270&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS:
QueryId = 0xAEAE, QUERY (Standard query), Response - Server failure 
&lt;br&gt;
130&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6.024270&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS:
QueryId = 0xAEAE, QUERY (Standard query), Response - Server failure 
&lt;br&gt;
131&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6.024270&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS:
QueryId = 0xAEAE, QUERY (Standard query), Response - Server failure 
&lt;br&gt;
184&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.024270&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS:
QueryId = 0xAEAE, QUERY (Standard query), Query for crl.microsoft.com of type Host
Addr on class Internet&lt;br&gt;
227&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;14.025102&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS:
QueryId = 0xB6AF, QUERY (Standard query), Query for crl.microsoft.com.myorg.com of
type Host Addr on class Internet&lt;br&gt;
228&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;14.030961&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS:
QueryId = 0xB6AF, QUERY (Standard query), Response - Name Error 
&lt;br&gt;
229&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;14.030961&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS:
QueryId = 0xBFAC, QUERY (Standard query), Query for crl.microsoft.com.myorg.com of
type Host Addr on class Internet&lt;br&gt;
230&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="BACKGROUND-COLOR: yellow"&gt;14.035844&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DNS:
QueryId = 0xBFAC, QUERY (Standard query), Response - Name Error&lt;/span&gt;
&lt;br&gt;
_____________________________________________________________________________________&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Notice how the DNS requests for
"crl.microsoft.com" took almost 9 seconds !&lt;br&gt;
This was very funny, so we googled for this symptom.&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="TEXT-DECORATION: underline"&gt;&lt;strong&gt;Internet research shows these results:&lt;br&gt;
&lt;/strong&gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Support Certificates In Your Applications
With The .NET Framework 2.0:&lt;br&gt;
&lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3&amp;amp;url=http%3a%2f%2fmsdn.microsoft.com%2fmsdnmag%2fissues%2f07%2f03%2fNETSecurity%2fdefault.aspx"&gt;
&lt;/span&gt;http://msdn.microsoft.com/msdnmag/issues/07/03/NETSecurity/default.aspx&lt;br&gt;
&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;
&lt;br&gt;
Microsoft, VeriSign, and Certificate Revocation:&lt;br&gt;
&lt;/span&gt;&lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3&amp;amp;url=http%3a%2f%2famug.org%2f%7eglguerin%2fopinion%2frevocation.html"&gt;http://amug.org/~glguerin/opinion/revocation.html&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
How Office Performs Certificate Revocation:&lt;br&gt;
&lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3&amp;amp;url=http%3a%2f%2foffice.microsoft.com%2fen-us%2fork2003%2fHA011403081033.aspx"&gt;http://office.microsoft.com/en-us/ork2003/HA011403081033.aspx&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
This one is talking about IE slowness:&lt;br&gt;
&lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3&amp;amp;url=http%3a%2f%2fwww.wilderssecurity.com%2farchive%2findex.php%2ft-47121.html"&gt;http://www.wilderssecurity.com/archive/index.php/t-47121.html&lt;br&gt;
&lt;/a&gt;
&lt;br&gt;
Management Studio slowness:&lt;br&gt;
&lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3&amp;amp;url=http%3a%2f%2fweblogs.sqlteam.com%2ftarad%2farchive%2f2006%2f10%2f05%2f13676.aspx"&gt;http://weblogs.sqlteam.com/tarad/archive/2006/10/05/13676.aspx&lt;br&gt;
&lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3&amp;amp;url=http%3a%2f%2fblogs.msdn.com%2fdtjones%2farchive%2f2006%2f08%2f23%2f714738.aspx"&gt;http://blogs.msdn.com/dtjones/archive/2006/08/23/714738.aspx&lt;/a&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;talking about the similar symptoms,
only when using MS SQL Management Studio.&lt;br&gt;
The cause of the problem is the same…&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;FAQ, Why does SSMS take 45s to start
up?&lt;br&gt;
&lt;/span&gt;&lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3&amp;amp;url=http%3a%2f%2fblogs.msdn.com%2feuanga%2farchive%2f2006%2f07%2f11%2f662053.aspx"&gt;http://blogs.msdn.com/euanga/archive/2006/07/11/662053.aspx&lt;/a&gt; 
&lt;br&gt;
&lt;br&gt;
Why does the .NET Runtime Optimization Service keep trying to use the internet:&lt;br&gt;
&lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3&amp;amp;url=http%3a%2f%2fforums.microsoft.com%2fMSDN%2fShowPost.aspx%3fPostID%3d522726%26SiteID%3d1"&gt;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=522726&amp;amp;SiteID=1&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;so, what have we got here?&lt;br&gt;
It seems that Microsoft added a mechanism to the .Net CLR that checks every signed
assembly when loading it&lt;br&gt;
against an online revocation list.&lt;br&gt;
When working in an intranet environment with IP segments&lt;br&gt;
that are no defined as local Intranet, the mechanism is trying to locate the crl server
for 9 seconds before it&lt;br&gt;
gives up, delaying the assembly loading.&lt;br&gt;
&lt;br&gt;
When checking the Enterprise Library Common assembly, 
&lt;br&gt;
We see that is indeed signed using a Microsoft Certificate:&lt;br&gt;
&lt;br&gt;
&lt;img alt="" src="http://www.ofeks.info/Blog/content/binary/110807_1435_SlowAssembl1.jpg"&gt;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;How do we work around it you say
?&lt;br&gt;
Well, there are several options.&lt;br&gt;
The easiest one is to disable the crl check. Oddly it is done from the Internet Options
dialog available from Internet Explorer:&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;img alt="" src="http://www.ofeks.info/Blog/content/binary/110807_1435_SlowAssembl2.jpg"&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Now, let's run our test program
again:&lt;br&gt;
&lt;/span&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 14pt"&gt;
&lt;br&gt;
&lt;/span&gt;Running the program after removing the check:&lt;br&gt;
&lt;br&gt;
&lt;/strong&gt;&lt;/span&gt;__________________________&lt;br&gt;
&lt;span style="FONT-SIZE: 10pt"&gt;Started at:22/07/2007 18:17:47&lt;br&gt;
Before Work at:22/07/2007 18:17:47&lt;br&gt;
After Work at:22/07/2007 18:17:47&lt;br&gt;
Total Time elapsed(Milliseconds):147&lt;br&gt;
Ended at:22/07/2007 18:17:47&lt;br&gt;
Press any key to exit...&lt;br&gt;
&lt;/span&gt;__________________________&lt;br&gt;
&lt;span style="TEXT-DECORATION: underline"&gt;&lt;strong&gt;
&lt;br&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Notice that this
time we are down to a total of 147 milliseconds, which is much more reasonable.&lt;br&gt;
What about the netmon output ? Well, since there is no check&lt;br&gt;
Netmon output is empty !&lt;br&gt;
&lt;br&gt;
What about security you say?&lt;br&gt;
If you are canceling the crl check, you are exposed to bogus certifications.&lt;br&gt;
My answer to that is: If you are already disconnected from the Internet, 
&lt;br&gt;
then you are just exposed as before, only this time you are not slowing down your
applications for nothing.&lt;br&gt;
&lt;br&gt;
A questions might be asked about situations where Internet connection is partly available
through a firewall.&lt;br&gt;
In this situation you might consider asking the network administrator to allow connections
to the crl server,&lt;br&gt;
Or if you which, make it fail the requests immediately, so you don't need to configure
the Internet Options for every node.&lt;br&gt;
&lt;br&gt;
Another optional workaround is to define the crl address in the etc/hosts file pointing
it to localhost (127.0.0.1),&lt;br&gt;
which will quickly fail every crl request it gets.&lt;br&gt;
&lt;br&gt;
Let's run our test again, this time without removing the revocation check, but defining
the crl address in the hosts file:&lt;br&gt;
&lt;/span&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;strong&gt;
&lt;br&gt;
Running the program after redirecting the dns name to localhost:&lt;br&gt;
&lt;span style="FONT-SIZE: 14pt"&gt;
&lt;br&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;___________________________&lt;br&gt;
&lt;span style="FONT-SIZE: 10pt"&gt;Started at:22/07/2007 18:18:37&lt;br&gt;
Before Work at:22/07/2007 18:18:37&lt;br&gt;
After Work at:22/07/2007 18:18:37&lt;br&gt;
Total Time elapsed(Milliseconds):219&lt;br&gt;
Ended at:22/07/2007 18:18:37&lt;br&gt;
Press any key to exit...&lt;br&gt;
&lt;/span&gt;___________________________&lt;br&gt;
&lt;span style="FONT-SIZE: 12pt"&gt;
&lt;br&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Notice that this time we
are using 219 milliseconds, which is a bit more then the first workaround, but still
reasonable.&lt;br&gt;
What about the netmon output? Well, since there is no outside communication&lt;br&gt;
Netmon output is empty in this case too!&lt;/span&gt;&lt;span style="TEXT-DECORATION: underline"&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 14pt"&gt;
&lt;br&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt"&gt;&lt;strong&gt;&lt;font size=2&gt;Conclusion:&lt;br&gt;
&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;When working with signed assemblies
having no Internet connection to crl.microsoft.com, 
&lt;br&gt;
you need to consider the loading delay time for the assemblies, Or work around them
as suggested above.&lt;br&gt;
&lt;br&gt;
Good Luck,&lt;br&gt;
&lt;br&gt;
Eli.&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=e3d760d5-4ed0-4928-a120-9e02dc263db3" /&gt;</description>
      <comments>http://www.ofeks.info/Blog/CommentView,guid,e3d760d5-4ed0-4928-a120-9e02dc263db3.aspx</comments>
      <category>.Net;Proffesional</category>
    </item>
    <item>
      <trackback:ping>http://www.ofeks.info/Blog/Trackback.aspx?guid=5ec25b60-f44c-4b8d-8a68-811224ece8ac</trackback:ping>
      <pingback:server>http://www.ofeks.info/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.ofeks.info/Blog/PermaLink,guid,5ec25b60-f44c-4b8d-8a68-811224ece8ac.aspx</pingback:target>
      <dc:creator>Eli Ofek</dc:creator>
      <wfw:comment>http://www.ofeks.info/Blog/CommentView,guid,5ec25b60-f44c-4b8d-8a68-811224ece8ac.aspx</wfw:comment>
      <wfw:commentRss>http://www.ofeks.info/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=5ec25b60-f44c-4b8d-8a68-811224ece8ac</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div>Since we decided to stop the pilot for now, we did not check the Source Control
&amp; Bug tracking thoroughly.
</div>
        <div>We already know that the performance is bad.
</div>
        <div>From functionality point of view, I can say that we used almost all the features
at least once &amp; everything worked.
</div>
        <div>We did not try use cases where 2 people are working on the same code doing merging.
</div>
        <div> 
</div>
        <div>Since performance is one of the big issues of phase 4,5,there is no point in
testing it now.
</div>
        <div> 
</div>
        <div>We can only say for now that the functionality &amp; the integration is nice.
</div>
        <div>I will post new information when the pilot will be resumed after the release
version comes out .
</div>
        <div> 
</div>
        <div>Eli.
</div>
        <div> 
</div>
        <div> 
</div>
        <div> 
</div>
        <img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=5ec25b60-f44c-4b8d-8a68-811224ece8ac" />
      </body>
      <title>Team System - Phases 4,5 - Source Control &amp; Bug Tracking</title>
      <guid isPermaLink="false">http://www.ofeks.info/Blog/PermaLink,guid,5ec25b60-f44c-4b8d-8a68-811224ece8ac.aspx</guid>
      <link>http://www.ofeks.info/Blog/PermaLink,guid,5ec25b60-f44c-4b8d-8a68-811224ece8ac.aspx</link>
      <pubDate>Thu, 25 Aug 2005 11:05:36 GMT</pubDate>
      <description>&lt;div&gt;Since we decided to stop the pilot for now, we did not check the Source Control
&amp;amp; Bug tracking thoroughly.
&lt;/div&gt;
&lt;div&gt;We already know that the performance is bad.
&lt;/div&gt;
&lt;div&gt;From functionality point of view, I can say that we used almost all the features
at least once &amp;amp; everything worked.
&lt;/div&gt;
&lt;div&gt;We did not try use cases where 2 people are working on the same code doing merging.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Since performance is one of the big issues of phase 4,5,there is no point in
testing it now.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;We can only say for now that the functionality &amp;amp; the integration is nice.
&lt;/div&gt;
&lt;div&gt;I will post new information when the pilot will be resumed after the release
version comes out .
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Eli.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=5ec25b60-f44c-4b8d-8a68-811224ece8ac" /&gt;</description>
      <comments>http://www.ofeks.info/Blog/CommentView,guid,5ec25b60-f44c-4b8d-8a68-811224ece8ac.aspx</comments>
      <category>Proffesional;Team System</category>
    </item>
    <item>
      <trackback:ping>http://www.ofeks.info/Blog/Trackback.aspx?guid=b1401e23-9b6c-4f6b-b2a5-15de8e3f285e</trackback:ping>
      <pingback:server>http://www.ofeks.info/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.ofeks.info/Blog/PermaLink,guid,b1401e23-9b6c-4f6b-b2a5-15de8e3f285e.aspx</pingback:target>
      <dc:creator>Eli Ofek</dc:creator>
      <wfw:comment>http://www.ofeks.info/Blog/CommentView,guid,b1401e23-9b6c-4f6b-b2a5-15de8e3f285e.aspx</wfw:comment>
      <wfw:commentRss>http://www.ofeks.info/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b1401e23-9b6c-4f6b-b2a5-15de8e3f285e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div>After migrating all the source files, it's time for the actual code migration.
</div>
        <div>AS stated before, the pilot is implemented on a real project.
</div>
        <div>The project is divided to 1 infrastructure subsystem and another 4 subsystems.
</div>
        <div>For now, we decided to migrate only the infrastructure subsystem, 
</div>
        <div>and one of the other subsystems, that contains both server &amp; client code,
so it's a good case to work on.
</div>
        <div> 
</div>
        <div>The conversion was done on a VMWARE machine, running with one 2.7Ghz CPU
&amp; 512MB RAM with Windows 2003 Server SP1.
</div>
        <div>We asked Ziv (one of the senior developers in the system) to migrate the code. 
</div>
        <div>Ziv did not have prior experience with CLR 2.0. Most of the findings here were
translated from and Internal Report Ziv wrote.
</div>
        <div> 
</div>
        <div>The target was to make the code compile with no errors or warnings what so ever, 
</div>
        <div>and then make all the unit tests pass as green ( Nunit 2.2.2, see prior post).
</div>
        <div> 
</div>
        <div>It took 2 days to make the code compile, 2 more days to solve runtime errors,
and another day to make all the unit tests pass.
</div>
        <div> 
</div>
        <div>No QA tests were done to the system beyond that.
</div>
        <div> 
</div>
        <div>All the code changes were made with special regions &amp; were well commented, 
</div>
        <div>for easy merging to the  real dev branch in the future.
</div>
        <div> 
</div>
        <div>It took a total of 5 work days for 1 senior developer to complete the mission.
</div>
        <div> 
</div>
        <div>
          <strong>
            <u>General impression from the code migrations stage:</u>
          </strong>
        </div>
        <div>
          <strong>
            <u>
            </u>
          </strong> 
</div>
        <div>The new IDE is pretty stable for a Beta 2 version. during the working week we
encountered only few Exceptions/Aborts.
</div>
        <div>The newly added features such as code refactoring etc are great.
</div>
        <div> 
</div>
        <div>The main problem was performance. The performance is unacceptable for normal
developing.
</div>
        <div>Compilation time increased about 5 times more then VS 2003, the IDE often freezes
for several seconds which is pretty annoying...
</div>
        <div> 
</div>
        <div>Another general problem we encountered is that the new IDE make a bad assumption
that the developer has an Internet connection.
</div>
        <div>A big part of the links in the IDE are links to the Internet and not the local
MSDN installation.
</div>
        <div>in our case the developers work in a closed intra-net environment, so it's a
bit frustrating.
</div>
        <div> 
</div>
        <div>During the migration, the compiler often tries to help by giving a link to MSDN 
</div>
        <div>which explains how to convert the code which is great, but most of the links
again - refer to the Internet, 
</div>
        <div>even if the information is also available in the Local MSDN installation.
</div>
        <div>sometimes the explanation was available only in the Internet, which forced us
to go to another network and print some pages there...
</div>
        <div> 
</div>
        <div>The new MSDN Feel &amp; Look is nice, it takes time to get used to for us "old"
developers, 
</div>
        <div>but it seems like an improvement as the search tab now tries to be a "Search
Engine" like.
</div>
        <div>The big problem with the new MSDN was that it was very buggy.
</div>
        <div>The search engine constantly returned false results. For example, if I search
for the work "XML" I get X documents, 
</div>
        <div>and when I search for "XML and Schema" I get Y documents, and Y was greater then  X
which is logically impossible.
</div>
        <div>it gave us a bad time while searching for migration information, especially since
the original compiler help links did not work for us.
</div>
        <div> 
</div>
        <div>I edition to that , the new MSDN Archive Manager which is a nice Idea, gave us
trouble too.
</div>
        <div>We selected several topics to be included, but when we saved and open the MSDN
tool, 
</div>
        <div>the list of topics we got there was different from the one we selected...
</div>
        <div> 
</div>
        <div>The integration with the Team Foundation Server is very nice &amp; user friendly,
but performance is terrible too.
</div>
        <div> 
</div>
        <div>The Team Foundation server has memory leaks which causes performance degradations,
and after 3 days of work with 1 developer 
</div>
        <div>I had to restart the services in order to be able to continue testing in a reasonable
time...
</div>
        <div> 
</div>
        <div>
          <strong>
            <u>List of Source Code changes we made during the migration phase:</u>
          </strong>
        </div>
        <div> 
</div>
        <ul>
          <li>
Changes we made in order to make the code compile with no Errors or Warnings: 
<ul><li>
Major Changes: 
<ul><li>
The usage of XML Schemas has changed. The new framework uses a class called XmlSchemaSet
which represents a collection of schemas which compile together to a single logical
unit. 
</li><li>
The usage of XML Readers has changed. The new framework makes the XmlValidatingReader
obsolete. Instead, we now need to work directly with the XML Reader, supplying it
with an object of type XmlReaderSettings which defines some attributes on the reader
we have created. 
</li><li>
Compile-time error identification of unmanaged resources usage problems. I must say
we liked this new feature a lot. the new framework identifies in compile time bad
usage of Finalizers and reports on it. We encountered only one instance of this case
in the system and replaced it with a correct implementation. <strong>Coolness</strong>.</li></ul></li><li>
Minor Changes: 
<ul><li>
The Assembly signature method has changed. in CLR 1.1 we signed the Assemblies using
the AssemblyKeyFile Attribute usually found in the AssemblyInfo.cs file. Instead,
the new framework makes as use  Project Level definition. This is not so bad,
only it was frustrating to change it manually to our 70 assemblies. in VS2003 we could
select multiple projects and change a property for all of them at the same time. In
2005 The GUI did not let me select multiple projects for the Project properties dialog.
I wonder why. 
</li><li>
The usage of Path.InvalidPathChars was replaced with the Path.GetInvalidPathChars()
method. 
</li><li>
The Certificates usage was changed. The new framework defines a delegate method on
ServicePointManager for Certificate validations instead of the class usage which replaces
the standard behavior of the Certificates Control. 
</li><li>
Form.AutoScaleBaseSize used to be an int value. In the new framework it was replaced
with Form.AutoScaledimensions which is a float. 
</li><li>
The AppDomain.GetCurrentThreadId() Method was replaced with CurrentThread.ManagedThreadID. 
</li><li>
The SmtpMail class is now obsolete. there is a new class which replaces it. we decided
to remove the entire code that uses SMTP which implemented special critical error
log reporting using email, since we never used it in the past 3 years. 
</li><li>
The Dns.GetHostName() method was replaced with Dns.GetHostEntry() method. 
</li><li>
Parameter.Add() method was replaced with Parameter.AddWithValue() method.</li></ul></li></ul></li>
          <li>
Changes due to runtime errors: 
<ul><li>
This is a new <strong>cool </strong>feature of the runtime. The new Framework identifies
at runtime of objects trying to access  other objects from a Non GUI thread to
a GUI Thread object without a proper Invoke. It throws a proper Exception. we identified
only one case in the system (Bad code in the Client's Splash Screen). This is very
cool, because such code can ofthen create random results, and hard to re-create bugs.
Other instances of the problem might come up when the system will be sent to QA for
a proper regression test. 
</li><li>
Microsoft score again. Another <strong>cool </strong>feature ! The runtime now identifies
inconsistencies between XSD Schemas of Datasets, against the real Database Types !
When the runtime encounters an inconsistency, it thrown an exception. The the system
we encountered 2 instances of the problem, and the Schemas were corrected according
o the DB Types. I guess it happened when someone changes the DB without changing the
DAL Code properly.</li></ul></li>
          <li>
Changes made due to Unit Test Failures: 
<ul><li>
The new framework adds the `xml:space="preserve"` Attribute when it finds an empty
node in the XML Document. We added the new attribute to the proper places in the XML
files.</li></ul></li>
          <li>
Some Unresolved Issues we decided to let go for now: 
<ul><li>
The client application had a special mechanism that used a special "Home made" Semaphore
( CLR 1.1 didn't have a built in one, CLR 2.0 does). the implementation was bad and
we knew it for some time now. it caused a some bugs in the GUI, but they were very
rare. When running on CLR 2.0 for some reason the mechanism stopped working almost
completely. We did not try to fix or search why, as the proper action here is to re-write
the entire mechanism correctly. 
</li><li>
The server Application started to load very slowly. Short investigation discovered
that there is a problem the the Assemblies loading phase that causes some kind of
a deadlock. The runtime releases the deadlock somehow after 20 seconds and everything
goes on well. It's mainly annoying for debug time to wait these extra 30 seconds each
time we start the server process... 
</li><li>
The Client Splash Screen started to appear in the top left corner of the screen instead
of the center. We didn't bother to check why for now.</li></ul></li>
        </ul>
        <div> 
</div>
        <div>
          <strong>
            <u>Pilot Milestone Conclusions:</u>
          </strong>
        </div>
        <div> 
</div>
        <div>Due to these findings we have decided to stop the Pilot process at this
time.
</div>
        <div>We understood that the migration process is not very heavy, 
</div>
        <div>so we don't need to start it too much ahead before we actually want to transfer
to 2.0.
</div>
        <div>We are estimating that giving the knowledge we got during this work week,
</div>
        <div> the entire team (4 People) can Migrate all the system in one more week).
</div>
        <div> 
</div>
        <div>One of the possible ways we thought of going here before the pilot 
</div>
        <div>was to transfer the dev team to start developing Version 2.0 of the System which
starts in less then a month on the Beta2, 
</div>
        <div>with the new Team Foundation, and only transfer them to the release version in
November after the Whidbey final release, 
</div>
        <div>as Version 2.0 of the system is not expected to reach production stage until
the middle of 2006.
</div>
        <div>Sadly, since the development experience with the current performance is not acceptable, 
</div>
        <div>we have decided to wait for the final Release in November, 
</div>
        <div>Hoping that Microsoft will fix the performance problems &amp; server Leaks by
then.
</div>
        <div> 
</div>
        <div>We saved the converted source, awaiting November 7.
</div>
        <div> 
</div>
        <div>Phase 4 &amp; 5 of the Pilot will not happen for now, 
</div>
        <div>I will write some conclusions about it in a separate post, but it won't be informative
as I planned too.
</div>
        <div> 
</div>
        <div>Eli.
</div>
        <div> 
</div>
        <div> 
</div>
        <img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=b1401e23-9b6c-4f6b-b2a5-15de8e3f285e" />
      </body>
      <title>Team System - Phase 3 - Migrating the code from 1.1 to 2.0</title>
      <guid isPermaLink="false">http://www.ofeks.info/Blog/PermaLink,guid,b1401e23-9b6c-4f6b-b2a5-15de8e3f285e.aspx</guid>
      <link>http://www.ofeks.info/Blog/PermaLink,guid,b1401e23-9b6c-4f6b-b2a5-15de8e3f285e.aspx</link>
      <pubDate>Wed, 24 Aug 2005 14:09:17 GMT</pubDate>
      <description>&lt;div&gt;After migrating all the source files, it's time for the actual code migration.
&lt;/div&gt;
&lt;div&gt;AS stated before, the pilot is implemented on a real project.
&lt;/div&gt;
&lt;div&gt;The project is divided to 1 infrastructure subsystem and another 4 subsystems.
&lt;/div&gt;
&lt;div&gt;For now, we decided to migrate only the infrastructure subsystem, 
&lt;/div&gt;
&lt;div&gt;and one of the other subsystems, that contains both server &amp;amp; client code,
so it's a good case to work on.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;The conversion was done on a VMWARE machine, running with&amp;nbsp;one 2.7Ghz CPU
&amp;amp; 512MB RAM with Windows 2003 Server SP1.
&lt;/div&gt;
&lt;div&gt;We asked Ziv (one of the senior developers in the system) to migrate the code. 
&lt;/div&gt;
&lt;div&gt;Ziv did not have prior experience with CLR 2.0. Most of the findings here were
translated from and Internal Report Ziv wrote.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;The target was to make the code compile with no errors or warnings what so ever, 
&lt;/div&gt;
&lt;div&gt;and then make all the unit tests pass as green ( Nunit 2.2.2, see prior post).
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;It took 2 days to make the code compile, 2 more days to solve runtime errors,
and another day to make all the unit tests pass.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;No QA tests were done to the system beyond that.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;All the code changes were made with special regions &amp;amp; were well commented, 
&lt;/div&gt;
&lt;div&gt;for easy merging to the&amp;nbsp; real dev branch in the future.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;It took a total of 5 work days for 1 senior developer to complete the mission.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;u&gt;General impression from the code migrations stage:&lt;/u&gt;&lt;/strong&gt;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;u&gt;&lt;/u&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;The new IDE is pretty stable for a Beta 2 version. during the working week we
encountered only few Exceptions/Aborts.
&lt;/div&gt;
&lt;div&gt;The newly added features such as code refactoring etc are great.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;The main problem was performance. The performance is unacceptable for normal
developing.
&lt;/div&gt;
&lt;div&gt;Compilation time increased about 5 times more then VS 2003, the IDE often freezes
for several seconds which is pretty annoying...
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Another general problem we encountered is that the new IDE make a bad assumption
that the developer has an Internet connection.
&lt;/div&gt;
&lt;div&gt;A big part of the links in the IDE are links to the Internet and not the local
MSDN installation.
&lt;/div&gt;
&lt;div&gt;in our case the developers work in a closed intra-net environment, so it's a
bit frustrating.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;During the migration, the compiler often tries to help by giving a link to MSDN 
&lt;/div&gt;
&lt;div&gt;which explains how to convert the code which is great, but most of the links
again - refer to the Internet, 
&lt;/div&gt;
&lt;div&gt;even if the information is also available in the Local MSDN installation.
&lt;/div&gt;
&lt;div&gt;sometimes the explanation was available only in the Internet, which forced us
to go to another network and print some pages there...
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;The new MSDN Feel &amp;amp; Look is nice, it takes time to get used to for us "old"
developers, 
&lt;/div&gt;
&lt;div&gt;but it seems like an improvement as the search tab now tries to be a "Search
Engine" like.
&lt;/div&gt;
&lt;div&gt;The big problem with the new MSDN was that it was very buggy.
&lt;/div&gt;
&lt;div&gt;The search engine constantly returned false results. For example, if I search
for the work "XML" I get X documents, 
&lt;/div&gt;
&lt;div&gt;and when I search for "XML and Schema" I get Y documents, and Y was greater then&amp;nbsp;&amp;nbsp;X
which is logically impossible.
&lt;/div&gt;
&lt;div&gt;it gave us a bad time while searching for migration information, especially since
the original compiler help links did not work for us.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;I edition to that , the new MSDN Archive Manager which is a nice Idea, gave us
trouble too.
&lt;/div&gt;
&lt;div&gt;We selected several topics to be included, but when we saved and open the MSDN
tool, 
&lt;/div&gt;
&lt;div&gt;the list of topics we got there was different from the one we selected...
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;The integration with the Team Foundation Server is very nice &amp;amp; user friendly,
but performance is terrible too.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;The Team Foundation server has memory leaks which causes performance degradations,
and after 3 days of work with 1 developer 
&lt;/div&gt;
&lt;div&gt;I had to restart the services in order to be able to continue testing in a reasonable
time...
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;u&gt;List of Source Code changes we made during the migration phase:&lt;/u&gt;&lt;/strong&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
Changes we made in order to make the code compile with no Errors or Warnings: 
&lt;ul&gt;
&lt;li&gt;
Major Changes: 
&lt;ul&gt;
&lt;li&gt;
The usage of XML Schemas has changed. The new framework uses a class called XmlSchemaSet
which represents a collection of schemas which compile together to a single logical
unit. 
&lt;li&gt;
The usage of XML Readers has changed. The new framework makes the XmlValidatingReader
obsolete. Instead, we now need to work directly with the XML Reader, supplying it
with an object of type XmlReaderSettings which defines some attributes on the reader
we have created. 
&lt;li&gt;
Compile-time error identification of unmanaged resources usage problems. I must say
we liked this new feature a lot. the new framework identifies in compile time bad
usage of Finalizers and reports on it. We encountered only one instance of this case
in the system and replaced it with a correct implementation. &lt;strong&gt;Coolness&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Minor Changes: 
&lt;ul&gt;
&lt;li&gt;
The Assembly signature method has changed. in CLR 1.1 we signed the Assemblies using
the AssemblyKeyFile Attribute usually found in the AssemblyInfo.cs file. Instead,
the new framework makes as use&amp;nbsp; Project Level definition. This is not so bad,
only it was frustrating to change it manually to our 70 assemblies. in VS2003 we could
select multiple projects and change a property for all of them at the same time. In
2005 The GUI did not let me select multiple projects for the Project properties dialog.
I wonder why. 
&lt;li&gt;
The usage of Path.InvalidPathChars was replaced with the Path.GetInvalidPathChars()
method. 
&lt;li&gt;
The Certificates usage was changed. The new framework defines a delegate method on
ServicePointManager for Certificate validations instead of the class usage which replaces
the standard behavior of the Certificates Control. 
&lt;li&gt;
Form.AutoScaleBaseSize used to be an int value. In the new framework it was replaced
with Form.AutoScaledimensions which is a float. 
&lt;li&gt;
The AppDomain.GetCurrentThreadId() Method was replaced with CurrentThread.ManagedThreadID. 
&lt;li&gt;
The SmtpMail class is now obsolete. there is a new class which replaces it. we decided
to remove the entire code that uses SMTP which implemented special critical error
log reporting using email, since we never used it in the past 3 years. 
&lt;li&gt;
The Dns.GetHostName() method was replaced with Dns.GetHostEntry() method. 
&lt;li&gt;
Parameter.Add() method was replaced with Parameter.AddWithValue() method.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Changes due to runtime errors: 
&lt;ul&gt;
&lt;li&gt;
This is a new &lt;strong&gt;cool &lt;/strong&gt;feature of the runtime. The new Framework identifies
at runtime of objects trying to access &amp;nbsp;other objects from a Non GUI thread to
a GUI Thread object without a proper Invoke. It throws a proper Exception. we identified
only one case in the system (Bad code in the Client's Splash Screen). This is very
cool, because such code can ofthen create random results, and hard to re-create bugs.
Other instances of the problem might come up when the system will be sent to QA for
a proper regression test. 
&lt;li&gt;
Microsoft score again. Another &lt;strong&gt;cool &lt;/strong&gt;feature ! The runtime now identifies
inconsistencies between XSD Schemas of Datasets, against the real Database Types !
When the runtime encounters an inconsistency, it thrown an exception. The the system
we encountered 2 instances of the problem, and the Schemas were corrected according
o the DB Types. I guess it happened when someone changes the DB without changing the
DAL Code properly.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Changes made due to Unit Test Failures: 
&lt;ul&gt;
&lt;li&gt;
The new framework adds the `xml:space="preserve"` Attribute when it finds an empty
node in the XML Document. We added the new attribute to the proper places in the XML
files.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Some Unresolved Issues we decided to let go for now: 
&lt;ul&gt;
&lt;li&gt;
The client application had a special mechanism that used a special "Home made" Semaphore
( CLR 1.1 didn't have a built in one, CLR 2.0 does). the implementation was bad and
we knew it for some time now. it caused a some bugs in the GUI, but they were very
rare. When running on CLR 2.0 for some reason the mechanism stopped working almost
completely. We did not try to fix or search why, as the proper action here is to re-write
the entire mechanism correctly. 
&lt;li&gt;
The server Application started to load very slowly. Short investigation discovered
that there is a problem the the Assemblies loading phase that causes some kind of
a deadlock. The runtime releases the deadlock somehow after 20 seconds and everything
goes on well. It's mainly annoying for debug time to wait these extra 30 seconds each
time we start the server process... 
&lt;li&gt;
The Client Splash Screen started to appear in the top left corner of the screen instead
of the center. We didn't bother to check why for now.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;u&gt;Pilot Milestone Conclusions:&lt;/u&gt;&lt;/strong&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Due to these&amp;nbsp;findings we have decided to stop the Pilot process at this
time.
&lt;/div&gt;
&lt;div&gt;We understood that the migration process is not very heavy, 
&lt;/div&gt;
&lt;div&gt;so we don't need to start it too much ahead before we actually want to transfer
to 2.0.
&lt;/div&gt;
&lt;div&gt;We are estimating that giving the knowledge we got during this work week,
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;the entire team (4 People) can Migrate all the system in one more week).
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;One of the possible ways we thought of going here before the pilot 
&lt;/div&gt;
&lt;div&gt;was to transfer the dev team to start developing Version 2.0 of the System which
starts in less then a month on the Beta2, 
&lt;/div&gt;
&lt;div&gt;with the new Team Foundation, and only transfer them to the release version in
November after the Whidbey final release, 
&lt;/div&gt;
&lt;div&gt;as Version 2.0 of the system is not expected to reach production stage until
the middle of 2006.
&lt;/div&gt;
&lt;div&gt;Sadly, since the development experience with the current performance is not acceptable, 
&lt;/div&gt;
&lt;div&gt;we have decided to wait for the final Release in November, 
&lt;/div&gt;
&lt;div&gt;Hoping that Microsoft will fix the performance problems &amp;amp; server Leaks by
then.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;We saved the converted source, awaiting November 7.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Phase 4 &amp;amp; 5 of the Pilot will not happen for now, 
&lt;/div&gt;
&lt;div&gt;I will write some conclusions about it in a separate post, but it won't be informative
as I planned too.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Eli.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=b1401e23-9b6c-4f6b-b2a5-15de8e3f285e" /&gt;</description>
      <comments>http://www.ofeks.info/Blog/CommentView,guid,b1401e23-9b6c-4f6b-b2a5-15de8e3f285e.aspx</comments>
      <category>Proffesional;Team System</category>
    </item>
    <item>
      <trackback:ping>http://www.ofeks.info/Blog/Trackback.aspx?guid=2f7fea78-7f02-4d72-b6e7-2d6c54508514</trackback:ping>
      <pingback:server>http://www.ofeks.info/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.ofeks.info/Blog/PermaLink,guid,2f7fea78-7f02-4d72-b6e7-2d6c54508514.aspx</pingback:target>
      <dc:creator>Eli Ofek</dc:creator>
      <wfw:comment>http://www.ofeks.info/Blog/CommentView,guid,2f7fea78-7f02-4d72-b6e7-2d6c54508514.aspx</wfw:comment>
      <wfw:commentRss>http://www.ofeks.info/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=2f7fea78-7f02-4d72-b6e7-2d6c54508514</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div>Well,
</div>
        <div> 
</div>
        <div>The Environment is ready,
</div>
        <div>Even played with it a bit, creating new Team Projects, and all is well.
</div>
        <div>Experience thought me a long time ago, that if something is working for several
files, 
</div>
        <div>It won't necessarily still be working just as well for hundreds or thousands.
</div>
        <div> 
</div>
        <div>The mission in this phase was to import the real project's VSS DB (6.0d) 
</div>
        <div>with all files in all versions &amp; labels into the newly created Team Project.
</div>
        <div> 
</div>
        <div>The VSS DB is currently 2.6 GB, after working on it for a few years now.
</div>
        <div>I figured that it's a good challenge for the Team Foundation.
</div>
        <div> 
</div>
        <div>For the mission I needed a disconnected copy of the VSS DB, which I can use with
the VSSConverter tool , 
</div>
        <div>in order to migrate it to the team system project.
</div>
        <div>(See: "<a href="http://www.ofeks.info/Blog/ct.ashx?id=2f7fea78-7f02-4d72-b6e7-2d6c54508514&amp;url=http%3a%2f%2fmsdn2.microsoft.com%2flibrary%2fms181247(en-us%2cvs.80).aspx">Walkthrough:
Migrating from Visual SourceSafe to Team Foundation</a>", available in VS 2005 MSDN)
</div>
        <div> 
</div>
        <div>This request discovered some unpleasant information:
</div>
        <div>All the legato backups from the last year kept a corrupted DB, since users were
never disconnected from the db before each backup ...
</div>
        <div>I notified the person in charge, and asked for an archive file, in order to restore
my own copy I can work with aside.
</div>
        <div>Alas, I found out that for some weird reason, the Archive tool (Both the GUI
&amp; Command line) could not archive the DB properly.
</div>
        <div>The archive file was always created suspiciously too small, 
</div>
        <div>and when opening it we found that it archived only a small portion of the projects
in spite the fact that we specified to backup everything.
</div>
        <div> 
</div>
        <div>With all this trouble I decided not to wait any longer
</div>
        <div>(this procedure took several days, it takes lots of time to archive &amp; restore
2.6 GB VSS DB for each "try"), 
</div>
        <div>And decided to change my target. 
</div>
        <div> 
</div>
        <div>I have decided to let go on all the file versions &amp; labels, and just import
a pure latest revision to the Team foundation server.
</div>
        <div>The challenge is now easier, but still dignified.
</div>
        <div>We are talking about a total of 140 MB for all files, around 4,400 of them...
</div>
        <div> 
</div>
        <div>I achieved that by doing a "Get Latest" on all the projects recursively to a
folder in the file system.
</div>
        <div>Now I had to disconnect all the projects from source control, but because there
are so many of them, I didn't want to do it manually,
</div>
        <div>So I used a batch tool to do the job for me - "<a href="http://www.ofeks.info/Blog/ct.ashx?id=2f7fea78-7f02-4d72-b6e7-2d6c54508514&amp;url=http%3a%2f%2fwww.gotdotnet.com%2fworkspaces%2fworkspace.aspx%3fid%3d05b9332b-3b4a-4239-be2f-2a0f86f9ce71">SourceSafe
Binding Remover tool </a>" from <a href="http://www.ofeks.info/Blog/ct.ashx?id=2f7fea78-7f02-4d72-b6e7-2d6c54508514&amp;url=http%3a%2f%2fwww.gotdotnet.com%2f">GotDotNet</a>.
</div>
        <div> 
</div>
        <div>The tool seemed to work well, reporting no errors. (I removed all the RO attributes
from all the files before running it).
</div>
        <div> 
</div>
        <div>Later on , I opened each Solution file (there were about 5 of them) using the
VS  2005 IDE, 
</div>
        <div>and used the "Add To source Control" menu item.
</div>
        <div> 
</div>
        <div>The wizard reported that the project files contain some "left overs" from a previous
source control system, and offered to correct the files.
</div>
        <div>I accepted the offer, and it worked like magic.
</div>
        <div>It took about 5 hours to import all the files, but it finished with all files
safely in the Team Project.
</div>
        <div> 
</div>
        <div>I checked to see the SQL DB "Data" folder, and the size was ~ 200MB, which seemed
pretty reasonable considering I have just added about 140MB of data to it ...
</div>
        <div> 
</div>
        <div>this concludes Phase 2 of the experiment. Didn't get it as I planed too, but
got enough to work with for the next phase.
</div>
        <div> 
</div>
        <div>Eli.
</div>
        <div> 
</div>
        <div> 
</div>
        <div> 
</div>
        <img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=2f7fea78-7f02-4d72-b6e7-2d6c54508514" />
      </body>
      <title>Team System - Phase 2 - Migrating VSS 6.0d to Team Foundation</title>
      <guid isPermaLink="false">http://www.ofeks.info/Blog/PermaLink,guid,2f7fea78-7f02-4d72-b6e7-2d6c54508514.aspx</guid>
      <link>http://www.ofeks.info/Blog/PermaLink,guid,2f7fea78-7f02-4d72-b6e7-2d6c54508514.aspx</link>
      <pubDate>Mon, 22 Aug 2005 17:11:51 GMT</pubDate>
      <description>&lt;div&gt;Well,
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;The Environment is ready,
&lt;/div&gt;
&lt;div&gt;Even played with it a bit, creating new Team Projects, and all is well.
&lt;/div&gt;
&lt;div&gt;Experience thought me a long time ago, that if something is working for several
files, 
&lt;/div&gt;
&lt;div&gt;It won't necessarily&amp;nbsp;still be working just as well for hundreds or thousands.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;The mission in this phase was to import the real project's VSS DB (6.0d) 
&lt;/div&gt;
&lt;div&gt;with all files in all versions &amp;amp; labels into the newly created Team Project.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;The VSS DB is currently 2.6 GB, after working on it for a few years now.
&lt;/div&gt;
&lt;div&gt;I figured that it's a good challenge for the Team Foundation.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;For the mission I needed a disconnected copy of the VSS DB, which I can use with
the VSSConverter tool , 
&lt;/div&gt;
&lt;div&gt;in order to migrate it to the team system project.
&lt;/div&gt;
&lt;div&gt;(See: "&lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=2f7fea78-7f02-4d72-b6e7-2d6c54508514&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2flibrary%2fms181247(en-us%2cvs.80).aspx"&gt;Walkthrough:
Migrating from Visual SourceSafe to Team Foundation&lt;/a&gt;", available in VS 2005 MSDN)
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;This request discovered some unpleasant information:
&lt;/div&gt;
&lt;div&gt;All the legato backups from the last year kept a corrupted DB, since users were
never disconnected from the db before each backup ...
&lt;/div&gt;
&lt;div&gt;I notified the person in charge, and asked for an archive file, in order to restore
my own copy I can work&amp;nbsp;with aside.
&lt;/div&gt;
&lt;div&gt;Alas, I found out that for some weird reason, the Archive tool (Both the GUI
&amp;amp; Command line) could not archive the DB properly.
&lt;/div&gt;
&lt;div&gt;The archive file was always created suspiciously too small, 
&lt;/div&gt;
&lt;div&gt;and when opening it we found that it archived only a small portion of the projects
in spite the fact that we specified to backup everything.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;With all this trouble I decided not to wait any longer
&lt;/div&gt;
&lt;div&gt;(this procedure took several days, it takes lots of time to archive &amp;amp; restore
2.6 GB VSS DB for&amp;nbsp;each "try"), 
&lt;/div&gt;
&lt;div&gt;And decided to change my target. 
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;I have decided to let go on all the file versions &amp;amp; labels, and just import
a pure latest revision to the Team foundation server.
&lt;/div&gt;
&lt;div&gt;The challenge is now easier, but still dignified.
&lt;/div&gt;
&lt;div&gt;We are talking about a total of 140 MB&amp;nbsp;for all files, around 4,400 of them...
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;I achieved that by doing a "Get Latest" on all the projects recursively to a
folder in the file system.
&lt;/div&gt;
&lt;div&gt;Now I had to disconnect all the projects from source control, but because there
are so many of them, I didn't want to do it manually,
&lt;/div&gt;
&lt;div&gt;So I used a batch tool to do the job for me - "&lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=2f7fea78-7f02-4d72-b6e7-2d6c54508514&amp;amp;url=http%3a%2f%2fwww.gotdotnet.com%2fworkspaces%2fworkspace.aspx%3fid%3d05b9332b-3b4a-4239-be2f-2a0f86f9ce71"&gt;SourceSafe
Binding Remover tool &lt;/a&gt;" from &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=2f7fea78-7f02-4d72-b6e7-2d6c54508514&amp;amp;url=http%3a%2f%2fwww.gotdotnet.com%2f"&gt;GotDotNet&lt;/a&gt;.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;The tool seemed to work well, reporting no errors. (I removed all the RO attributes
from all the files before running it).
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Later on , I opened each Solution file (there were about 5 of them) using the
VS&amp;nbsp; 2005 IDE, 
&lt;/div&gt;
&lt;div&gt;and used the "Add To source Control" menu item.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;The wizard reported that the project files contain some "left overs" from a previous
source control system, and offered to correct the files.
&lt;/div&gt;
&lt;div&gt;I accepted the offer, and it worked like magic.
&lt;/div&gt;
&lt;div&gt;It took about 5 hours to import all the files, but it finished with all files
safely in the Team Project.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;I checked to see the SQL DB "Data" folder, and the size was ~ 200MB, which seemed
pretty reasonable considering I have just added about 140MB of data to it ...
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;this concludes Phase 2 of the experiment. Didn't get it as I planed too, but
got enough to work with for the next phase.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Eli.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=2f7fea78-7f02-4d72-b6e7-2d6c54508514" /&gt;</description>
      <comments>http://www.ofeks.info/Blog/CommentView,guid,2f7fea78-7f02-4d72-b6e7-2d6c54508514.aspx</comments>
      <category>Proffesional;Team System</category>
    </item>
    <item>
      <trackback:ping>http://www.ofeks.info/Blog/Trackback.aspx?guid=fa866e7f-2706-4096-98a1-29ee4bff1d0d</trackback:ping>
      <pingback:server>http://www.ofeks.info/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.ofeks.info/Blog/PermaLink,guid,fa866e7f-2706-4096-98a1-29ee4bff1d0d.aspx</pingback:target>
      <dc:creator>Eli Ofek</dc:creator>
      <wfw:comment>http://www.ofeks.info/Blog/CommentView,guid,fa866e7f-2706-4096-98a1-29ee4bff1d0d.aspx</wfw:comment>
      <wfw:commentRss>http://www.ofeks.info/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=fa866e7f-2706-4096-98a1-29ee4bff1d0d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div>Hi friends,
</div>
        <div> 
</div>
        <div>Again, didn't have time to blog my findings until now, but I will try to catch
you up with the experiment.
</div>
        <div> 
</div>
        <div>While continuing to install the environment, I ran into some more problems, most
of them easily fixed after googling for them.
</div>
        <div> 
</div>
        <div>the first problem was getting the "<span class="forumName" id="_ctl0_MainContent_PostFlatView__ctl0_PostSubject">Initialization
for plugin "Microsoft.Pcw.wss" failed"</span></div>
        <div>
          <span class="forumName">Message in the portal site.</span>
        </div>
        <div>
          <span class="forumName">The problem is easily solved if going into the IIS manager
and moving the "Report" &amp; "Reports Server" Virtual Applications</span>
        </div>
        <div>
          <span class="forumName">to a new pool, so they can run under ASP.Net 2.0 by themselves.</span>
        </div>
        <div>
          <span class="forumName">The full explanation can be found at <a class="lnk3" href="http://www.ofeks.info/Blog/ct.ashx?id=fa866e7f-2706-4096-98a1-29ee4bff1d0d&amp;url=http%3a%2f%2fforums.microsoft.com%2fmsdn%2f">Microsoft
Technical Forums</a>, <a href="http://www.ofeks.info/Blog/ct.ashx?id=fa866e7f-2706-4096-98a1-29ee4bff1d0d&amp;url=http%3a%2f%2fforums.microsoft.com%2fmsdn%2fShowPost.aspx%3fPostID%3d17399">here</a>.</span>
        </div>
        <div>
          <span class="forumName">
          </span> 
</div>
        <div>
          <span class="forumName">Another problem I ran into happened after creating a
new Team  Project to play with, which later on I wanted to delete.</span>
        </div>
        <div>
          <span class="forumName">Surprisingly, I found out that there is no obvious way
from the IDE to do that.</span>
        </div>
        <div>
          <span class="forumName">I did not expect an "easy" way, as no one wants this
kind of action which is very destructive to be activated by people "with an easy finger
on the trigger".</span>
        </div>
        <div>
          <span class="forumName">
          </span> 
</div>
        <div>
          <span class="forumName">Googling for this again brought me to a command line
solution that is working pretty well.</span>
        </div>
        <div>
          <span class="forumName">You can find the "How To" right <a href="http://www.ofeks.info/Blog/ct.ashx?id=fa866e7f-2706-4096-98a1-29ee4bff1d0d&amp;url=http%3a%2f%2fblogs.msdn.com%2fbuckh%2farchive%2f2005%2f01%2f24%2f359462.aspx">here</a> on <a href="http://www.ofeks.info/Blog/ct.ashx?id=fa866e7f-2706-4096-98a1-29ee4bff1d0d&amp;url=http%3a%2f%2fblogs.msdn.com%2fbuckh%2fdefault.aspx">Buck's
Blog</a>.</span>
        </div>
        <div>
          <span class="forumName">
          </span> 
</div>
        <div>
          <span class="forumName">Another problem discovered later on in an Exception in
the "Work Items" Web Part.</span>
        </div>
        <div>
          <span class="forumName">This was easily solved too by adding a new Work Item
so the work items repository would not stay empty.</span>
        </div>
        <div>
          <span class="forumName">
          </span> 
</div>
        <div>
          <span class="forumName">This consludes the environment installation.</span>
        </div>
        <div>
          <span class="forumName">
          </span> 
</div>
        <div>
          <span class="forumName">Next: Importing the code from VSS to Team Foundation.</span>
        </div>
        <div>
          <span class="forumName">
          </span> 
</div>
        <div>
          <span class="forumName">Eli.</span>
        </div>
        <img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=fa866e7f-2706-4096-98a1-29ee4bff1d0d" />
      </body>
      <title>Team System - Phase 1 - Installing the environment - Cont.</title>
      <guid isPermaLink="false">http://www.ofeks.info/Blog/PermaLink,guid,fa866e7f-2706-4096-98a1-29ee4bff1d0d.aspx</guid>
      <link>http://www.ofeks.info/Blog/PermaLink,guid,fa866e7f-2706-4096-98a1-29ee4bff1d0d.aspx</link>
      <pubDate>Mon, 22 Aug 2005 12:54:17 GMT</pubDate>
      <description>&lt;div&gt;Hi friends,
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Again, didn't have time to blog my findings until now, but I will try to catch
you up with the experiment.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;While continuing to install the environment, I ran into some more problems, most
of them easily fixed after googling for them.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;the first problem was getting the "&lt;span class=forumName id=_ctl0_MainContent_PostFlatView__ctl0_PostSubject&gt;Initialization
for plugin "Microsoft.Pcw.wss" failed"&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;Message in the portal site.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;The problem is easily solved if going into the IIS manager
and moving the "Report" &amp;amp; "Reports Server" Virtual Applications&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;to a new pool, so they can run under ASP.Net 2.0 by themselves.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;The full explanation can be found at &lt;a class=lnk3 href="http://www.ofeks.info/Blog/ct.ashx?id=fa866e7f-2706-4096-98a1-29ee4bff1d0d&amp;amp;url=http%3a%2f%2fforums.microsoft.com%2fmsdn%2f"&gt;Microsoft
Technical Forums&lt;/a&gt;, &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=fa866e7f-2706-4096-98a1-29ee4bff1d0d&amp;amp;url=http%3a%2f%2fforums.microsoft.com%2fmsdn%2fShowPost.aspx%3fPostID%3d17399"&gt;here&lt;/a&gt;.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;&lt;/span&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;Another problem I ran into happened after creating a new
Team&amp;nbsp; Project to play with, which later on I wanted to delete.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;Surprisingly, I found out that there is no obvious way
from the IDE to do that.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;I did not expect an "easy" way, as no one wants this kind
of action which is very destructive to be activated by people "with an easy finger
on the trigger".&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;&lt;/span&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;Googling for this again brought me to a command line solution
that is working pretty well.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;You can find the "How To" right &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=fa866e7f-2706-4096-98a1-29ee4bff1d0d&amp;amp;url=http%3a%2f%2fblogs.msdn.com%2fbuckh%2farchive%2f2005%2f01%2f24%2f359462.aspx"&gt;here&lt;/a&gt;&amp;nbsp;on &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=fa866e7f-2706-4096-98a1-29ee4bff1d0d&amp;amp;url=http%3a%2f%2fblogs.msdn.com%2fbuckh%2fdefault.aspx"&gt;Buck's
Blog&lt;/a&gt;.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;&lt;/span&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;Another problem discovered later on in an Exception in
the "Work Items" Web Part.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;This was easily solved too by adding a new Work Item so
the work items repository&amp;nbsp;would not stay empty.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;&lt;/span&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;This consludes the environment installation.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;&lt;/span&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;Next: Importing the code from VSS to Team Foundation.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;&lt;/span&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;span class=forumName&gt;Eli.&lt;/span&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=fa866e7f-2706-4096-98a1-29ee4bff1d0d" /&gt;</description>
      <comments>http://www.ofeks.info/Blog/CommentView,guid,fa866e7f-2706-4096-98a1-29ee4bff1d0d.aspx</comments>
      <category>Proffesional;Team System</category>
    </item>
    <item>
      <trackback:ping>http://www.ofeks.info/Blog/Trackback.aspx?guid=0b8b21ad-9d7e-47d2-85cd-c04ecbf4a587</trackback:ping>
      <pingback:server>http://www.ofeks.info/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.ofeks.info/Blog/PermaLink,guid,0b8b21ad-9d7e-47d2-85cd-c04ecbf4a587.aspx</pingback:target>
      <dc:creator>Eli Ofek</dc:creator>
      <wfw:comment>http://www.ofeks.info/Blog/CommentView,guid,0b8b21ad-9d7e-47d2-85cd-c04ecbf4a587.aspx</wfw:comment>
      <wfw:commentRss>http://www.ofeks.info/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=0b8b21ad-9d7e-47d2-85cd-c04ecbf4a587</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div>Hi People !
</div>
        <div> 
</div>
        <div>Lately I have been getting a lot of spam in my blog from spammers posting ads 
</div>
        <div>using the blog comments system or add trackbacks to it.
</div>
        <div>To fight this I have turned on dasBLog's <a href="http://www.ofeks.info/Blog/ct.ashx?id=0b8b21ad-9d7e-47d2-85cd-c04ecbf4a587&amp;url=http%3a%2f%2fwww.google.com%2fsearch%3fie%3dUTF-8%26oe%3dUTF-8%26q%3ddefine%253Acaptcha"><strong>captcha</strong></a> system. 
</div>
        <div>It means that when you add comments, 
</div>
        <div>you will have to enter a string of chars copied from an image near the save
button.
</div>
        <div> 
</div>
        <div>Eli.
</div>
        <img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=0b8b21ad-9d7e-47d2-85cd-c04ecbf4a587" />
      </body>
      <title>Fighting Blog Spammers</title>
      <guid isPermaLink="false">http://www.ofeks.info/Blog/PermaLink,guid,0b8b21ad-9d7e-47d2-85cd-c04ecbf4a587.aspx</guid>
      <link>http://www.ofeks.info/Blog/PermaLink,guid,0b8b21ad-9d7e-47d2-85cd-c04ecbf4a587.aspx</link>
      <pubDate>Fri, 05 Aug 2005 07:15:53 GMT</pubDate>
      <description>&lt;div&gt;Hi People !
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Lately I have been getting a lot of spam in my blog from spammers posting ads 
&lt;/div&gt;
&lt;div&gt;using the blog comments system or add trackbacks to it.
&lt;/div&gt;
&lt;div&gt;To fight this I have turned on dasBLog's &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=0b8b21ad-9d7e-47d2-85cd-c04ecbf4a587&amp;amp;url=http%3a%2f%2fwww.google.com%2fsearch%3fie%3dUTF-8%26oe%3dUTF-8%26q%3ddefine%253Acaptcha"&gt;&lt;strong&gt;captcha&lt;/strong&gt; &lt;/a&gt;&amp;nbsp;system. 
&lt;/div&gt;
&lt;div&gt;It means that when you add comments, 
&lt;/div&gt;
&lt;div&gt;you will have to enter a string of chars copied&amp;nbsp;from an image near the save
button.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Eli.
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=0b8b21ad-9d7e-47d2-85cd-c04ecbf4a587" /&gt;</description>
      <comments>http://www.ofeks.info/Blog/CommentView,guid,0b8b21ad-9d7e-47d2-85cd-c04ecbf4a587.aspx</comments>
      <category>Personal;Proffesional</category>
    </item>
    <item>
      <trackback:ping>http://www.ofeks.info/Blog/Trackback.aspx?guid=9ffed0c0-eb8c-4dba-a1f6-8ce2cf8abbc9</trackback:ping>
      <pingback:server>http://www.ofeks.info/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.ofeks.info/Blog/PermaLink,guid,9ffed0c0-eb8c-4dba-a1f6-8ce2cf8abbc9.aspx</pingback:target>
      <dc:creator>Eli Ofek</dc:creator>
      <wfw:comment>http://www.ofeks.info/Blog/CommentView,guid,9ffed0c0-eb8c-4dba-a1f6-8ce2cf8abbc9.aspx</wfw:comment>
      <wfw:commentRss>http://www.ofeks.info/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9ffed0c0-eb8c-4dba-a1f6-8ce2cf8abbc9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div>Hi,
</div>
        <div> 
</div>
        <div>Today I completed phase 1.
</div>
        <div> 
</div>
        <div>For this step I used 3 VMWare Machines, One for the Team Foundation Server
(Single Server Deployment)
</div>
        <div>And Another 2 as clients with Team Suite Installed ( The test will simulate 2
users working on the same foundation server).
</div>
        <div> 
</div>
        <div>All machines are running Windows 2003 Standard Edition SP1.
</div>
        <div>The Foundation Server is running the Yukon CTP like suggested in the installation
guide.
</div>
        <div> 
</div>
        <div>I've got to say I was surprised when almost everything went smooth.
</div>
        <div> 
</div>
        <div>I downloaded the updated installation guide from <a href="http://www.ofeks.info/Blog/ct.ashx?id=9ffed0c0-eb8c-4dba-a1f6-8ce2cf8abbc9&amp;url=http%3a%2f%2fgo.microsoft.com%2ffwlink%2f%3fLinkId%3d40042%26clcid%3d0x409"><font color="#0000ff">here</font></a>.
</div>
        <div>Followed the installation instructions step by step, 
</div>
        <div>and although the process was a bit tiring and took several hours,
</div>
        <div>It worked like a charm.
</div>
        <div>Pretty nice for a Beta 2 Product.
</div>
        <div> 
</div>
        <div>It was a bit upsetting that not all perquisites for the installation were found
on the DVD/CD itself.
</div>
        <div> 
</div>
        <div>I had to manually download <a href="http://www.ofeks.info/Blog/ct.ashx?id=9ffed0c0-eb8c-4dba-a1f6-8ce2cf8abbc9&amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3fFamilyID%3defdc7227-549c-4de1-a063-783f71a8bb2b%26DisplayLang%3den"><font color="#0000ff">Microsoft
Windows SharePoint Services 2.0 with Service Pack 1</font></a></div>
        <div>which is a bit of a hassle for people like me working on an intranet which is
disconnected from the Internet.
</div>
        <div> 
</div>
        <div>The only bug I found so far was trying to add domain users to the Foundation
Server Security groups.
</div>
        <div>Most of our users have caption names written in Hebrew and the / character in
the department name, and it seems to bug the server.
</div>
        <div>It gives an error saying it has trouble adding users from other domain which
is not the case here...
</div>
        <div>The workaround I found: I have created a new Windows Domain security groups with
an English name.
</div>
        <div>Added the users to the group, and added this group to the TFS Security group.
</div>
        <div>For now it seems to work OK.
</div>
        <div> 
</div>
        <div>Stay tuned for phase 2 in the coming days...
</div>
        <div> 
</div>
        <div>Eli.
</div>
        <div> 
</div>
        <img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=9ffed0c0-eb8c-4dba-a1f6-8ce2cf8abbc9" />
      </body>
      <title>Team System - Phase 1 - Installing the environment</title>
      <guid isPermaLink="false">http://www.ofeks.info/Blog/PermaLink,guid,9ffed0c0-eb8c-4dba-a1f6-8ce2cf8abbc9.aspx</guid>
      <link>http://www.ofeks.info/Blog/PermaLink,guid,9ffed0c0-eb8c-4dba-a1f6-8ce2cf8abbc9.aspx</link>
      <pubDate>Mon, 06 Jun 2005 18:47:18 GMT</pubDate>
      <description>&lt;div&gt;Hi,
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Today I completed phase 1.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;For this step I used&amp;nbsp;3 VMWare Machines, One for the Team Foundation Server
(Single Server Deployment)
&lt;/div&gt;
&lt;div&gt;And Another 2 as clients with Team Suite Installed ( The test will simulate 2
users working on the same foundation server).
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;All machines are running Windows 2003 Standard Edition SP1.
&lt;/div&gt;
&lt;div&gt;The Foundation Server is running the Yukon CTP like suggested in the installation
guide.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;I've got to say I was surprised when almost everything went smooth.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;I downloaded the updated installation guide from &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=9ffed0c0-eb8c-4dba-a1f6-8ce2cf8abbc9&amp;amp;url=http%3a%2f%2fgo.microsoft.com%2ffwlink%2f%3fLinkId%3d40042%26clcid%3d0x409"&gt;&lt;font color=#0000ff&gt;here&lt;/font&gt;&lt;/a&gt;.
&lt;/div&gt;
&lt;div&gt;Followed the installation instructions step by step, 
&lt;/div&gt;
&lt;div&gt;and although the process was a bit tiring and took several hours,
&lt;/div&gt;
&lt;div&gt;It worked like a charm.
&lt;/div&gt;
&lt;div&gt;Pretty nice for a Beta 2 Product.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;It was a bit upsetting that not all perquisites for the installation were found
on the DVD/CD itself.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;I had to manually download &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=9ffed0c0-eb8c-4dba-a1f6-8ce2cf8abbc9&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3fFamilyID%3defdc7227-549c-4de1-a063-783f71a8bb2b%26DisplayLang%3den"&gt;&lt;font color=#0000ff&gt;Microsoft
Windows SharePoint Services 2.0 with Service Pack 1&lt;/font&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;which is a bit of a hassle for people like me working on an intranet which is
disconnected from the Internet.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;The only bug I found so far was trying to add domain users to the Foundation
Server Security groups.
&lt;/div&gt;
&lt;div&gt;Most of our users have caption names written in Hebrew and the / character in
the department name, and it seems to bug the server.
&lt;/div&gt;
&lt;div&gt;It gives an error saying it has trouble adding users from other domain which
is not the case here...
&lt;/div&gt;
&lt;div&gt;The workaround I found: I have created a new Windows Domain security groups with
an English name.
&lt;/div&gt;
&lt;div&gt;Added the users to the group, and added this group to the TFS Security group.
&lt;/div&gt;
&lt;div&gt;For now it seems to work OK.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Stay tuned for phase 2 in the coming days...
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Eli.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=9ffed0c0-eb8c-4dba-a1f6-8ce2cf8abbc9" /&gt;</description>
      <comments>http://www.ofeks.info/Blog/CommentView,guid,9ffed0c0-eb8c-4dba-a1f6-8ce2cf8abbc9.aspx</comments>
      <category>Proffesional;Team System</category>
    </item>
    <item>
      <trackback:ping>http://www.ofeks.info/Blog/Trackback.aspx?guid=e1cf7e81-7f2e-4fdf-8ee5-4fac9d986b52</trackback:ping>
      <pingback:server>http://www.ofeks.info/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.ofeks.info/Blog/PermaLink,guid,e1cf7e81-7f2e-4fdf-8ee5-4fac9d986b52.aspx</pingback:target>
      <dc:creator>Eli Ofek</dc:creator>
      <wfw:comment>http://www.ofeks.info/Blog/CommentView,guid,e1cf7e81-7f2e-4fdf-8ee5-4fac9d986b52.aspx</wfw:comment>
      <wfw:commentRss>http://www.ofeks.info/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e1cf7e81-7f2e-4fdf-8ee5-4fac9d986b52</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div>Hi,
</div>
        <div> 
</div>
        <div>I started testing Microsoft's new Team System Beta 2 (Visual Studio 2005
&amp; Team Foundation).
</div>
        <div>On the coming weeks I will test them with a test case of a real project,
</div>
        <div>the same one I used to convert Unit Test from <a href="http://www.ofeks.info/Blog/ct.ashx?id=e1cf7e81-7f2e-4fdf-8ee5-4fac9d986b52&amp;url=http%3a%2f%2fwww.ofeks.info%2fBlog%2fPermaLink%2cguid%2ca2460cd9-0df1-4c4e-bd5a-da5bf539453a.aspx">Nunit
1.0 to Nunit 2.2.2</a>.
</div>
        <div> 
</div>
        <div>The test will consist of the following phases:
</div>
        <div> 
</div>
        <div>1) Installing the environment.
</div>
        <div>2) Loading all code from VSS 6.0d to Team Foundation Source Control
</div>
        <div>3) Converting all code from Framework 1.1 to 2.0, without warnings And all Unit
Tests green.
</div>
        <div>4) Testing the source control (Labeling, Branching etc...)
</div>
        <div>5) Testing the Bug Tracking.
</div>
        <div> 
</div>
        <div>From Time To time, I will publish interesting stuff I encounter during the process,
so stay tuned ...
</div>
        <div> 
</div>
        <div> 
</div>
        <div>Eli.
</div>
        <img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=e1cf7e81-7f2e-4fdf-8ee5-4fac9d986b52" />
      </body>
      <title>Playing with Team System Beta 2</title>
      <guid isPermaLink="false">http://www.ofeks.info/Blog/PermaLink,guid,e1cf7e81-7f2e-4fdf-8ee5-4fac9d986b52.aspx</guid>
      <link>http://www.ofeks.info/Blog/PermaLink,guid,e1cf7e81-7f2e-4fdf-8ee5-4fac9d986b52.aspx</link>
      <pubDate>Mon, 06 Jun 2005 18:32:07 GMT</pubDate>
      <description>&lt;div&gt;Hi,
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;I started testing Microsoft's new Team System Beta 2&amp;nbsp;(Visual Studio 2005
&amp;amp; Team Foundation).
&lt;/div&gt;
&lt;div&gt;On the coming weeks I will test them with a test case of a real project,
&lt;/div&gt;
&lt;div&gt;the same one I used to convert Unit Test from &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=e1cf7e81-7f2e-4fdf-8ee5-4fac9d986b52&amp;amp;url=http%3a%2f%2fwww.ofeks.info%2fBlog%2fPermaLink%2cguid%2ca2460cd9-0df1-4c4e-bd5a-da5bf539453a.aspx"&gt;Nunit
1.0 to Nunit 2.2.2&lt;/a&gt;.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;The test will consist of the following phases:
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;1) Installing the environment.
&lt;/div&gt;
&lt;div&gt;2) Loading all code from VSS 6.0d to Team Foundation Source Control
&lt;/div&gt;
&lt;div&gt;3) Converting all code from Framework 1.1 to 2.0, without warnings And all Unit
Tests green.
&lt;/div&gt;
&lt;div&gt;4) Testing the source control (Labeling, Branching etc...)
&lt;/div&gt;
&lt;div&gt;5) Testing the Bug Tracking.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;From Time To time, I will publish interesting stuff I encounter during the process,
so stay tuned ...
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Eli.
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=e1cf7e81-7f2e-4fdf-8ee5-4fac9d986b52" /&gt;</description>
      <comments>http://www.ofeks.info/Blog/CommentView,guid,e1cf7e81-7f2e-4fdf-8ee5-4fac9d986b52.aspx</comments>
      <category>Proffesional;Team System</category>
    </item>
    <item>
      <trackback:ping>http://www.ofeks.info/Blog/Trackback.aspx?guid=a2460cd9-0df1-4c4e-bd5a-da5bf539453a</trackback:ping>
      <pingback:server>http://www.ofeks.info/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.ofeks.info/Blog/PermaLink,guid,a2460cd9-0df1-4c4e-bd5a-da5bf539453a.aspx</pingback:target>
      <dc:creator>Eli Ofek</dc:creator>
      <wfw:comment>http://www.ofeks.info/Blog/CommentView,guid,a2460cd9-0df1-4c4e-bd5a-da5bf539453a.aspx</wfw:comment>
      <wfw:commentRss>http://www.ofeks.info/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=a2460cd9-0df1-4c4e-bd5a-da5bf539453a</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div> 
</div>
        <div> 
</div>
        <div>Hi all,
</div>
        <div> 
</div>
        <div>One of our projects at work began 3 years ago.
</div>
        <div>at that time we searched for a Unit Testing tool for .Net.
</div>
        <div>After trying some options, we made the right decision and chose<font color="#0000ff"></font><a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;url=http%3a%2f%2fwww.nunit.org%2f"><font color="#0000ff">Nunit</font></a>1.0
as the Unit Testing tool for the project.
</div>
        <div> 
</div>
        <div>Nunit GUI 1.0 was not perfect for our requirements at that time, so we used the
benefits of open source code and
</div>
        <div>inserted some light changes, that later on became a natural part of Nunit on
the Public version.
</div>
        <div> 
</div>
        <div>When Nunit grow and developed it became an excellent tool, 
</div>
        <div>only we could not start to use it easily as Nunit 1.0 was not Attribute based,
and we had tons of "Legacy"
</div>
        <div>Unit testing code in our hands and a tight project deadline ...
</div>
        <div> 
</div>
        <div>So it became that after 3 years of coding, the project stayed with Nunit 1.0.
</div>
        <div> 
</div>
        <div>Only recently the team has decided that enough is enough and it's time to move
on.
</div>
        <div>After consulting with <a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;url=http%3a%2f%2fweblogs.asp.net%2frosherove"><font color="#0000ff">Roy
Osherove</font></a> we have decided on a general plan of converting the code
</div>
        <div>by using an evaluation version of <a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;url=http%3a%2f%2fwww.jetbrains.com%2fresharper%2f"><font color="#0000ff">Resharper</font></a>&amp;
Modifying the <a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;url=http%3a%2f%2fprdownloads.sourceforge.net%2fnunit%2fVSNUnit1.11.zip%3fdownload"><font color="#0000ff">Nunit
1.0 open source</font></a>interfaces 
</div>
        <div>to become as close as possible to Version 2.2.2.
</div>
        <div> 
</div>
        <div>Me and <strong>Galia</strong> decided to take responsibility for the mission
and transformed the code in less then a day of work.
</div>
        <div> 
</div>
        <div>We decided to share the experience in case there are other people around stuck
in the same problem ...
</div>
        <div> 
</div>
        <div>
          <strong>
            <u>Here is the recipe for transforming Nunit 1.0 Tests into Nunit 2.2.2
Tests</u>
          </strong>
        </div>
        <div>
          <strong>
            <u>
            </u>
          </strong> 
</div>
        <div>
          <strong>A bit of technical information about the project:</strong>
        </div>
        <div>
          <strong>
          </strong> 
</div>
        <ul>
          <li>
            <strong>Over 50 Assemblies</strong>
          </li>
          <li>
            <strong>Written in C#.</strong>
          </li>
          <li>
            <strong>Using Visual Studio 2003.</strong>
          </li>
          <li>
            <strong>Visual Source Safe 6.0d Source Control</strong>
          </li>
        </ul>
        <div>
          <strong>
          </strong> 
</div>
        <div>
          <strong>Here are the steps we went through:</strong>
        </div>
        <div> 
</div>
        <div> 
</div>
        <div>
          <strong>   Definition:</strong>
        </div>
        <div>   "Transformation milestone <strong>X</strong>" is defined as
the actions:
</div>
        <ol>
          <li>
Check in all you Code ( Keeping it checked out, ore checking it out again)  commenting
it with the changes made so far. 
</li>
          <li>
Create a label "Nunit Upgrade - <strong>X</strong>"</li>
        </ol>
        <div> 
</div>
        <ul>
          <li>
Coordinate a day with all the development team so that you can check out all the code
without intervention 
<ul><li>
(Unless you are working with a Source Control System that allows nice branching)</li></ul></li>
          <li>
Install Resharper in the Workstation. 
<ul><li>
If you have <a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;url=http%3a%2f%2fwww.jetbrains.com%2fresharper%2fbuy%2findex.html"><font color="#0000ff">99$</font></a> to
spare, it will be a money well spent in my opinion. 
</li><li>
If not, use the <a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;url=http%3a%2f%2fdownload.jetbrains.com%2fresharper%2fReSharper1.5.exe"><font color="#0000ff">evaluation </font></a>version
as we did, and uninstall it when you are done.</li></ul></li>
          <li>
Make sure all code is checked in the source control . 
</li>
          <li>
Clear your working folder on the hard drive. 
</li>
          <li>
Get all code from source control and Re build all projects. 
</li>
          <li>
Run all Unit tests in all the projects to make sure all is green and that we are starting
on a "clean surface". 
</li>
          <li>
In case you have multiple projects spreading over a few solutions, create one solution
with all the projects. 
</li>
          <li>
Create a Label in the Source Control named "Before Nunit upgrade" 
</li>
          <li>
Check out all code in the new solution. 
</li>
          <li>
Rename all methods to begin with "Assertion." 
<ul><li>
This conversion was done using the IDE's  Find &amp; Replace dialog. 
</li><li>
Replace all "TestCase." instances with "Assertion."Find instances with one white space
before name and ( after. and replace them.   </li></ul><ul>
 According to your coding conventions, you might need to change the spacing,
tabs prefixes and so on..           
<li>
Here are the strings we needed to replace ( for some projects you might need more) 
<ul><li>
"AssertEquals(" 
</li><li>
"AreNotNull(" 
</li><li>
"AssertNull(" 
</li><li>
"AssertSame(" 
</li><li>
"Assert("       <font color="#ffa500">- This one is
done last !</font></li></ul></li><li>
If code uses C#'s Debug.Assert, correct it using the transformation: <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Debug.Assertion
-&gt; Debug</span></li></ul></li>
          <li>
            <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
              <font face="Verdana" size="2">Create
Transformation milestone "After renaming methods to static formation"</font>
            </span>
          </li>
          <li>
            <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
              <font face="Verdana" size="2">Add
Nunit 1.0 source code to the solution.</font>
            </span>
            <ul>
              <li>
                <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
                  <font face="Verdana" size="2">You
can download the source from <a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;url=http%3a%2f%2fprdownloads.sourceforge.net%2fnunit%2fVSNUnit1.11.zip%3fdownload"><font color="#0000ff">here</font></a><font color="#0000ff">.</font></font>
                </span>
              </li>
              <li>
                <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
                  <font face="Verdana" size="2">You
only need to add the <strong>NunitCore</strong> project.</font>
                </span>
              </li>
              <li>
                <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
                  <font face="Verdana" size="2">Rename
the project from NunitCore to NunitCore<strong>Old</strong></font>
                </span>
              </li>
            </ul>
          </li>
          <li>
            <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
              <font face="Verdana" size="2">Change
all assembly references from the binary file to the added projects.</font>
            </span>
            <ul>
              <li>
                <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
                  <font face="Verdana" size="2">We know
.. it's dirty work, but we didn't think it was time worthy to automate this process...</font>
                </span>
              </li>
              <li>
                <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
                  <font face="Verdana" size="2">Save
&amp; Build all. Check that there are no compilation errors.</font>
                </span>
                <ul>
                  <li>
                    <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
                      <font face="Verdana" size="2">If
done correctly, none should be.</font>
                    </span>
                  </li>
                  <li>
                    <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
                      <font face="Verdana" size="2">If
there are, fix them.</font>
                    </span>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li>
            <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
              <font face="Verdana" size="2">Using
Resharper , Auto rename all public methods of "Assertion" class in the NunitCoreOld
project.</font>
            </span>
            <ul>
              <li>
                <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
                  <font face="Verdana" size="2">These
are the transformation we used. We actually found out not all the methods were is
use, </font>
                </span>
                <font face="Verdana">
                  <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
                    <font face="Verdana" size="2">so
we got lazy and did only the ones we needed. you might need to add some more to the
list. simply check out the new API documentation for differences.</font>
                  </span>
                </font>
                <ul>
                  <li>
Assert -&gt; IsTrue 
</li>
                  <li>
AssertEquals -&gt; AreEqual 
</li>
                  <li>
AssertNotNull -&gt; IsNotNull 
</li>
                  <li>
AssertNull -&gt; IsNull 
</li>
                  <li>
AssertSame -&gt; AreSame</li>
                </ul>
              </li>
              <li>
Rename "ExpectException" at<span class="109050220-03042005">t</span>ribute class to
"ExpectedException"</li>
            </ul>
          </li>
          <li>
Save &amp; Compile code to make sure there are no errors, If there are any, fix them. 
</li>
          <li>
Now we need to change all parameters order according to the new API in the "Assertion"
class using Resharper. 
<ul><li>
The Rule is "For all public methods that has a string as a first parameter, move it
to be the last. 
</li><li>
For methods that has 3 string parameters, sample the transformed code to see it was
done correctly. We found a problem, didn't bother to make sure if it was a software
error or a human error.</li></ul></li>
          <li>
Save &amp; Compile code to make sure there are no errors, If there are any, fix them. 
</li>
          <li>
Using Resharper, rename the "Assertion" class to "Assert". 
</li>
          <li>
Save &amp; Compile code to make sure there are no errors, If there are any, fix them. 
</li>
          <li>
            <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
              <font face="Verdana" size="2">Create
Transformation milestone "After Resharper transformation"</font>
            </span> . 
</li>
          <li>
Install Nunit 2.2.2 
<ul><li>
You can download the installation package <a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;url=http%3a%2f%2fwww.nunit.org%2fdownloads%2fNUnit-2.2.0.msi"><font color="#0000ff">here</font></a>.</li></ul></li>
          <li>
Change all project references from <strong>NunitCoreOld</strong>  to the new <strong>nunit.framework </strong>binary
in the GAC from Version 2.2.2. 
</li>
          <li>
Remove NunitCoreOld from the Solution. 
</li>
          <li>
            <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
              <font face="Verdana" size="2">Create
Transformation milestone "Referencing Version 2.2.2"</font>
            </span> . 
</li>
          <li>
Now we need to deal with adding the new Attributes of the 2.2.2 framework to the tests. 
<ul><li>
We did all the transformation in this section using the IDE's Find &amp; Replace dialog
with the <strong>Regular Expressions</strong> checkbox enabled. 
</li><li>
Here are all the transformation &amp; Regular expressions used to make them: 
<ul><li>
TestCase inheritance -&gt; [TestFixture] 
<ul><li>
public class {:c+}.*TestCase -&gt; [TestFixture]\n\tpublic class \1</li></ul></li><li>
Setup method -&gt;  [SetUp] : 
<ul><li>
protected override void SetUp -&gt; [SetUp]\n\t\tpublic void SetUp </li></ul></li><li>
TearDown method -&gt; [TearDown] 
<ul><li>
protected override void TearDown -&gt; [TearDown]\n\t\tpublic void TearDown</li></ul></li><li>
TestMethod - &gt; [Test] 
<ul><li>
public void Test -&gt; [Test]\n\t\tpublic void 
</li><li><font color="#ffa500">( notice one white space at the end of the replace string !
)</font></li></ul></li><li>
Removing Inheritance: 
<ul><li>
\([Ss]tring name\).*\n*.*base\(name\) -&gt; \(\)</li></ul></li></ul></li></ul></li>
          <li>
Save &amp; Compile code to make sure there are no errors, If there are any, fix them. 
</li>
          <li>
            <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
              <font face="Verdana" size="2">Create
Transformation milestone "Changing to Attribute formation"</font>
            </span> . 
</li>
          <li>
Run all tests using the new Nunit 2.2.2 GUI. 
<ul><li>
You might find some errors created by bad transformation . we found only 2. it took
5 min. to solve them.</li></ul></li>
          <li>
            <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
              <font face="Verdana" size="2">Create
Transformation milestone "Ready for Nunit 2.2.2"</font>
            </span> . 
</li>
          <li>
Delete old Nunit Source code from Source Control &amp; File system. (Normal delete,
not permanent) 
</li>
          <li>
Delete old Nunit 1.0 binaries from source control * File system. (Normal delete, not
permanent) 
</li>
          <li>
Optionally, Install "<a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;url=http%3a%2f%2fwww.testdriven.net%2f"><font color="#0000ff">Test
Driven .Net</font></a>" for easy usage in development process.</li>
        </ul>
        <div>
          <font color="#006400">
            <strong>That's all ! Your'e done !</strong>
          </font>
        </div>
        <div> 
</div>
        <div>And it took us less then a day. 
</div>
        <div>Should take you less because you have all the process figured out already right
here <img alt=":-)" src="smilies/happy.gif" /></div>
        <div> 
</div>
        <div>Good Luck !
</div>
        <div> 
</div>
        <div>Eli &amp; Galia.
</div>
        <div> 
</div>
        <div>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
          </span>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <font face="Verdana" size="2">
            </font>
          </span> 
</div>
        <div> 
</div>
        <div>
          <br />
        </div>
        <img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a" />
      </body>
      <title>Migrating from Nunit 1.0 to Nunit 2.2.2</title>
      <guid isPermaLink="false">http://www.ofeks.info/Blog/PermaLink,guid,a2460cd9-0df1-4c4e-bd5a-da5bf539453a.aspx</guid>
      <link>http://www.ofeks.info/Blog/PermaLink,guid,a2460cd9-0df1-4c4e-bd5a-da5bf539453a.aspx</link>
      <pubDate>Sun, 03 Apr 2005 19:39:36 GMT</pubDate>
      <description>&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Hi all,
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;One of our projects at work began 3 years ago.
&lt;/div&gt;
&lt;div&gt;at that time we searched for a Unit Testing tool for .Net.
&lt;/div&gt;
&lt;div&gt;After trying some options, we made the right decision and chose&lt;font color=#0000ff&gt; &lt;/font&gt;&lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;amp;url=http%3a%2f%2fwww.nunit.org%2f"&gt;&lt;font color=#0000ff&gt;Nunit&lt;/font&gt; &lt;/a&gt;1.0
as the Unit Testing tool for the project.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Nunit GUI 1.0 was not perfect for our requirements at that time, so we used the
benefits of open source code and
&lt;/div&gt;
&lt;div&gt;inserted some light changes, that later on became a natural part of Nunit on
the Public version.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;When Nunit grow and developed it became an excellent tool, 
&lt;/div&gt;
&lt;div&gt;only we could not start to use it easily as Nunit 1.0 was not Attribute based,
and we had tons of "Legacy"
&lt;/div&gt;
&lt;div&gt;Unit testing code in our hands and a tight project deadline ...
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;So it became that after 3 years of coding, the project stayed with Nunit 1.0.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Only recently the team has decided that enough is enough and it's time to move
on.
&lt;/div&gt;
&lt;div&gt;After consulting with &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;amp;url=http%3a%2f%2fweblogs.asp.net%2frosherove"&gt;&lt;font color=#0000ff&gt;Roy
Osherove&lt;/font&gt;&lt;/a&gt;&amp;nbsp;we have decided on a general plan of converting the code
&lt;/div&gt;
&lt;div&gt;by using an evaluation version of &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;amp;url=http%3a%2f%2fwww.jetbrains.com%2fresharper%2f"&gt;&lt;font color=#0000ff&gt;Resharper&lt;/font&gt; &lt;/a&gt;&amp;amp;
Modifying the &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;amp;url=http%3a%2f%2fprdownloads.sourceforge.net%2fnunit%2fVSNUnit1.11.zip%3fdownload"&gt;&lt;font color=#0000ff&gt;Nunit
1.0 open source&lt;/font&gt; &lt;/a&gt;interfaces 
&lt;/div&gt;
&lt;div&gt;to become as close as possible to Version 2.2.2.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Me and &lt;strong&gt;Galia&lt;/strong&gt; decided to take responsibility for the mission
and transformed the code in less then a day of work.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;We decided to share the experience in case there are other people around stuck
in the same problem ...
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;u&gt;Here is the recipe for transforming Nunit 1.0 Tests into Nunit 2.2.2
Tests&lt;/u&gt;&lt;/strong&gt;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;u&gt;&lt;/u&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;A bit of technical information about the project:&lt;/strong&gt;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Over 50 Assemblies&lt;/strong&gt; 
&lt;li&gt;
&lt;strong&gt;Written in C#.&lt;/strong&gt; 
&lt;li&gt;
&lt;strong&gt;Using Visual Studio 2003.&lt;/strong&gt; 
&lt;li&gt;
&lt;strong&gt;Visual Source Safe 6.0d Source Control&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Here are the steps we went through:&lt;/strong&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Definition:&lt;/strong&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;"Transformation milestone &lt;strong&gt;X&lt;/strong&gt;" is defined as
the actions:
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
Check in all you Code ( Keeping it checked out, ore checking it out again)&amp;nbsp; commenting
it with the changes made so far. 
&lt;li&gt;
Create a label "Nunit Upgrade - &lt;strong&gt;X&lt;/strong&gt;"&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
Coordinate a day with all the development team so that you can check out all the code
without intervention 
&lt;ul&gt;
&lt;li&gt;
(Unless you are working with a Source Control System that allows nice branching)&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Install Resharper in the Workstation. 
&lt;ul&gt;
&lt;li&gt;
If you have &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;amp;url=http%3a%2f%2fwww.jetbrains.com%2fresharper%2fbuy%2findex.html"&gt;&lt;font color=#0000ff&gt;99$&lt;/font&gt;&lt;/a&gt; to
spare, it will be a money well spent in my opinion. 
&lt;li&gt;
If not, use the &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;amp;url=http%3a%2f%2fdownload.jetbrains.com%2fresharper%2fReSharper1.5.exe"&gt;&lt;font color=#0000ff&gt;evaluation &lt;/font&gt;&lt;/a&gt;version
as we did, and uninstall it when you are done.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Make sure all code is checked in the source control . 
&lt;li&gt;
Clear your working folder on the hard drive. 
&lt;li&gt;
Get all code from source control and Re build all projects. 
&lt;li&gt;
Run all Unit tests in all the projects to make sure all is green and that we are starting
on a "clean surface". 
&lt;li&gt;
In case you have multiple projects spreading over a few solutions, create one solution
with all the projects. 
&lt;li&gt;
Create a Label in the Source Control named "Before Nunit upgrade" 
&lt;li&gt;
Check out all code in the new solution. 
&lt;li&gt;
Rename all methods to begin with "Assertion." 
&lt;ul&gt;
&lt;li&gt;
This conversion was done using the IDE's&amp;nbsp; Find &amp;amp; Replace dialog. 
&lt;li&gt;
Replace all "TestCase." instances with "Assertion."Find instances with one white space
before name and ( after. and replace them. &amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&amp;nbsp;According to your coding conventions, you might need to change the spacing,
tabs prefixes and so on..&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;li&gt;
Here are the strings we needed to replace ( for some projects you might need more) 
&lt;ul&gt;
&lt;li&gt;
"AssertEquals(" 
&lt;li&gt;
"AreNotNull(" 
&lt;li&gt;
"AssertNull(" 
&lt;li&gt;
"AssertSame(" 
&lt;li&gt;
"Assert("&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#ffa500&gt;- This one is done
last !&lt;/font&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
If code uses C#'s Debug.Assert, correct it using the transformation: &lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Debug.Assertion
-&amp;gt; Debug&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;Create
Transformation milestone "After renaming methods to static formation"&lt;/font&gt;&lt;/span&gt; 
&lt;li&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;Add
Nunit 1.0 source code to the solution.&lt;/font&gt;&lt;/span&gt; 
&lt;ul&gt;
&lt;li&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;You
can download the source from &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;amp;url=http%3a%2f%2fprdownloads.sourceforge.net%2fnunit%2fVSNUnit1.11.zip%3fdownload"&gt;&lt;font color=#0000ff&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font color=#0000ff&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;li&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;You
only need to add the &lt;strong&gt;NunitCore&lt;/strong&gt; project.&lt;/font&gt;&lt;/span&gt; 
&lt;li&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;Rename
the project from NunitCore to NunitCore&lt;strong&gt;Old&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;Change
all assembly references from the binary file to the added projects.&lt;/font&gt;&lt;/span&gt; 
&lt;ul&gt;
&lt;li&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;We&amp;nbsp;know
.. it's dirty work, but&amp;nbsp;we didn't think it was time worthy to automate this process...&lt;/font&gt;&lt;/span&gt; 
&lt;li&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;Save
&amp;amp; Build all. Check that there are no compilation errors.&lt;/font&gt;&lt;/span&gt; 
&lt;ul&gt;
&lt;li&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;If
done correctly, none should be.&lt;/font&gt;&lt;/span&gt; 
&lt;li&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;If
there are, fix them.&lt;/font&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;Using
Resharper , Auto rename all public methods of "Assertion" class in the NunitCoreOld
project.&lt;/font&gt;&lt;/span&gt; 
&lt;ul&gt;
&lt;li&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;These
are the transformation we used. We actually found out not all the methods were is
use,&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;font face=Verdana&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;so
we got lazy and did only the ones we needed. you might need to add some more to the
list. simply check out the new API documentation for differences.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; 
&lt;ul&gt;
&lt;li&gt;
Assert -&amp;gt; IsTrue 
&lt;li&gt;
AssertEquals -&amp;gt; AreEqual 
&lt;li&gt;
AssertNotNull -&amp;gt; IsNotNull 
&lt;li&gt;
AssertNull -&amp;gt; IsNull 
&lt;li&gt;
AssertSame -&amp;gt; AreSame&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Rename "ExpectException" at&lt;span class=109050220-03042005&gt;t&lt;/span&gt;ribute class to
"ExpectedException"&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Save &amp;amp; Compile code to make sure there are no errors, If there are any, fix them. 
&lt;li&gt;
Now we need to change all parameters order according to the new API in the "Assertion"
class using Resharper. 
&lt;ul&gt;
&lt;li&gt;
The Rule is "For all public methods that has a string as a first parameter, move it
to be the last. 
&lt;li&gt;
For methods that has 3 string parameters, sample the transformed code to see it was
done correctly. We found a problem, didn't bother to make sure if it was a software
error or a human error.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Save &amp;amp; Compile code to make sure there are no errors, If there are any, fix them. 
&lt;li&gt;
Using Resharper, rename the "Assertion" class to "Assert". 
&lt;li&gt;
Save &amp;amp; Compile code to make sure there are no errors, If there are any, fix them. 
&lt;li&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;Create
Transformation milestone "After Resharper transformation"&lt;/font&gt;&lt;/span&gt; . 
&lt;li&gt;
Install Nunit 2.2.2 
&lt;ul&gt;
&lt;li&gt;
You can download the installation package &lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;amp;url=http%3a%2f%2fwww.nunit.org%2fdownloads%2fNUnit-2.2.0.msi"&gt;&lt;font color=#0000ff&gt;here&lt;/font&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Change all project references from &lt;strong&gt;NunitCoreOld&lt;/strong&gt;&amp;nbsp; to the new &lt;strong&gt;nunit.framework &lt;/strong&gt;binary
in the GAC from Version 2.2.2. 
&lt;li&gt;
Remove NunitCoreOld from the Solution. 
&lt;li&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;Create
Transformation milestone "Referencing Version 2.2.2"&lt;/font&gt;&lt;/span&gt; . 
&lt;li&gt;
Now we need to deal with adding the new Attributes of the 2.2.2 framework to the tests. 
&lt;ul&gt;
&lt;li&gt;
We did all the transformation in this section using the IDE's Find &amp;amp; Replace dialog
with the &lt;strong&gt;Regular Expressions&lt;/strong&gt; checkbox enabled. 
&lt;li&gt;
Here are all the transformation &amp;amp; Regular expressions used to make them: 
&lt;ul&gt;
&lt;li&gt;
TestCase inheritance -&amp;gt; [TestFixture] 
&lt;ul&gt;
&lt;li&gt;
public class {:c+}.*TestCase -&amp;gt; [TestFixture]\n\tpublic class \1&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Setup method -&amp;gt;&amp;nbsp; [SetUp] : 
&lt;ul&gt;
&lt;li&gt;
protected override void SetUp -&amp;gt; [SetUp]\n\t\tpublic void SetUp&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
TearDown method -&amp;gt; [TearDown] 
&lt;ul&gt;
&lt;li&gt;
protected override void TearDown -&amp;gt; [TearDown]\n\t\tpublic void TearDown&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
TestMethod - &amp;gt; [Test] 
&lt;ul&gt;
&lt;li&gt;
public void Test -&amp;gt; [Test]\n\t\tpublic void 
&lt;li&gt;
&lt;font color=#ffa500&gt;( notice one white space at the end of the replace string ! )&lt;/font&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Removing Inheritance: 
&lt;ul&gt;
&lt;li&gt;
\([Ss]tring name\).*\n*.*base\(name\) -&amp;gt; \(\)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Save &amp;amp; Compile code to make sure there are no errors, If there are any, fix them. 
&lt;li&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;Create
Transformation milestone "Changing to Attribute formation"&lt;/font&gt;&lt;/span&gt; . 
&lt;li&gt;
Run all tests using the new Nunit 2.2.2 GUI. 
&lt;ul&gt;
&lt;li&gt;
You might find some errors created by bad transformation . we found only 2. it took
5 min. to solve them.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;Create
Transformation milestone "Ready for Nunit 2.2.2"&lt;/font&gt;&lt;/span&gt; . 
&lt;li&gt;
Delete old Nunit Source code from Source Control &amp;amp; File system. (Normal delete,
not permanent) 
&lt;li&gt;
Delete old Nunit 1.0 binaries from source control * File system. (Normal delete, not
permanent) 
&lt;li&gt;
Optionally, Install "&lt;a href="http://www.ofeks.info/Blog/ct.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a&amp;amp;url=http%3a%2f%2fwww.testdriven.net%2f"&gt;&lt;font color=#0000ff&gt;Test
Driven .Net&lt;/font&gt;&lt;/a&gt;" for easy usage in development process.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;font color=#006400&gt;&lt;strong&gt;That's all ! Your'e done !&lt;/strong&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;And it took us less then a day. 
&lt;/div&gt;
&lt;div&gt;Should take you less because you have all the process figured out already right
here &lt;img alt=":-)" src="smilies/happy.gif"&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Good Luck !
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Eli &amp;amp; Galia.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.ofeks.info/Blog/aggbug.ashx?id=a2460cd9-0df1-4c4e-bd5a-da5bf539453a" /&gt;</description>
      <comments>http://www.ofeks.info/Blog/CommentView,guid,a2460cd9-0df1-4c4e-bd5a-da5bf539453a.aspx</comments>
      <category>Proffesional</category>
    </item>
  </channel>
</rss>