<?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>My thoughts, shares ... with .Net and Microsoft</title>
    <link>http://blog.svencipido.be/Blog/</link>
    <description>My life in the Microsoft World</description>
    <copyright>Sven Cipido</copyright>
    <lastBuildDate>Fri, 08 May 2009 12:22:46 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.8.5223.0</generator>
    <managingEditor>sccs@svencipido.be</managingEditor>
    <webMaster>sccs@svencipido.be</webMaster>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=d753848a-fe48-4aa7-bdc1-ca9522763035</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,d753848a-fe48-4aa7-bdc1-ca9522763035.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,d753848a-fe48-4aa7-bdc1-ca9522763035.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d753848a-fe48-4aa7-bdc1-ca9522763035</wfw:commentRss>
      <title>Create of a new project not available in VS2008</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,d753848a-fe48-4aa7-bdc1-ca9522763035.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Create+Of+A+New+Project+Not+Available+In+VS2008.aspx</link>
      <pubDate>Fri, 08 May 2009 12:22:46 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;span style="mso-ansi-language: EN-US"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;Sometimes
   it is possible that after you have done a full install of VS2008 with Team Explorer,
   than you can’t create a new project. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;The
   only thing you could do is creating a new Team Project.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;span style="mso-ansi-language: EN-US"&gt;
   &lt;o:p&gt;
      &lt;font face=Arial color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;span style="mso-ansi-language: EN-US"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;Mostly
   this happens when the installation takes a long time.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Internally
   the installation goes in timeout then.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;span style="mso-ansi-language: EN-US"&gt;
   &lt;o:p&gt;
      &lt;font face=Arial color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;span style="mso-ansi-language: EN-US"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;Instead
   of re-installing your VS2008, you could also use following tip:&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;span style="mso-ansi-language: EN-US"&gt;
   &lt;o:p&gt;
      &lt;font face=Arial color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;span style="mso-ansi-language: EN-US"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;Follow
   this path&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;span style="mso-ansi-language: EN-US"&gt;
   &lt;o:p&gt;
      &lt;font face=Arial color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;font color=#000000&gt;&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;font size=3&gt;Tools &lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;strong&gt;&lt;font size=3&gt;&lt;span style="FONT-FAMILY: Wingdings; mso-ansi-language: EN-US; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;à&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial&gt; Import
   and export settings &lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: Wingdings; mso-ansi-language: EN-US; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;à&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial&gt; reset
   all settings&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;span style="mso-ansi-language: EN-US"&gt;
   &lt;o:p&gt;
      &lt;font face=Arial color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;span style="mso-ansi-language: EN-US"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;If you
   have done this, reboot your PC and restart VS.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You
   will see that you now can create not only new Team Projects, but also standard Projects.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=d753848a-fe48-4aa7-bdc1-ca9522763035" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,d753848a-fe48-4aa7-bdc1-ca9522763035.aspx</comments>
      <category>.Net;VSTS</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=4daeed43-4356-4dac-bf62-6efeeca477d2</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,4daeed43-4356-4dac-bf62-6efeeca477d2.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,4daeed43-4356-4dac-bf62-6efeeca477d2.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=4daeed43-4356-4dac-bf62-6efeeca477d2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      The Patterns&amp;Design team released some new eBooks.  This time it are 6 pocket
      guides.
   </p>
        <ol>
          <li>
            <a href="http://www.codeplex.com/AppArch/Release/ProjectReleases.aspx?ReleaseId=19797">Agile
         Architecture Method Pocket Guide</a>
          </li>
          <li>
            <a href="http://www.codeplex.com/AppArch/Release/ProjectReleases.aspx?ReleaseId=19802">Web
         Application Architecture Pocket Guide</a>
          </li>
          <li>
            <a href="http://www.codeplex.com/AppArch/Release/ProjectReleases.aspx?ReleaseId=19798">Mobile
         Application Architecture Pocket Guide</a>
          </li>
          <li>
            <a href="http://www.codeplex.com/AppArch/Release/ProjectReleases.aspx?ReleaseId=19799">RIA
         Architecture Pocket Guide</a>
          </li>
          <li>
            <a href="http://www.codeplex.com/AppArch/Release/ProjectReleases.aspx?ReleaseId=19800">Rich
         Client Application Architecture Pocket Guide</a>
          </li>
          <li>
            <a href="http://www.codeplex.com/AppArch/Release/ProjectReleases.aspx?ReleaseId=19801">Service
         Architecture Pocket Guide</a>
          </li>
        </ol>
        <p>
      So happy reading for the end of this year.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=4daeed43-4356-4dac-bf62-6efeeca477d2" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Application Architectures Pocket Guides</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,4daeed43-4356-4dac-bf62-6efeeca477d2.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Application+Architectures+Pocket+Guides.aspx</link>
      <pubDate>Thu, 27 Nov 2008 07:41:27 GMT</pubDate>
      <description>&lt;p&gt;
   The Patterns&amp;amp;Design team released some new eBooks.&amp;nbsp; This time it are 6 pocket
   guides.
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;
      &lt;a href="http://www.codeplex.com/AppArch/Release/ProjectReleases.aspx?ReleaseId=19797"&gt;Agile
      Architecture Method Pocket Guide&lt;/a&gt; 
   &lt;li&gt;
      &lt;a href="http://www.codeplex.com/AppArch/Release/ProjectReleases.aspx?ReleaseId=19802"&gt;Web
      Application Architecture Pocket Guide&lt;/a&gt; 
   &lt;li&gt;
      &lt;a href="http://www.codeplex.com/AppArch/Release/ProjectReleases.aspx?ReleaseId=19798"&gt;Mobile
      Application Architecture Pocket Guide&lt;/a&gt; 
   &lt;li&gt;
      &lt;a href="http://www.codeplex.com/AppArch/Release/ProjectReleases.aspx?ReleaseId=19799"&gt;RIA
      Architecture Pocket Guide&lt;/a&gt; 
   &lt;li&gt;
      &lt;a href="http://www.codeplex.com/AppArch/Release/ProjectReleases.aspx?ReleaseId=19800"&gt;Rich
      Client Application Architecture Pocket Guide&lt;/a&gt; 
   &lt;li&gt;
      &lt;a href="http://www.codeplex.com/AppArch/Release/ProjectReleases.aspx?ReleaseId=19801"&gt;Service
      Architecture Pocket Guide&lt;/a&gt;
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   So happy reading for the end of this year.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=4daeed43-4356-4dac-bf62-6efeeca477d2" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,4daeed43-4356-4dac-bf62-6efeeca477d2.aspx</comments>
      <category>.Net;Agile;Architecture;eBooks;efficiency;Links</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=663c5da6-947f-4bb1-9277-cf0fe58e580a</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,663c5da6-947f-4bb1-9277-cf0fe58e580a.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,663c5da6-947f-4bb1-9277-cf0fe58e580a.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=663c5da6-947f-4bb1-9277-cf0fe58e580a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      It's a pitty that I wasn't able to go to PDC.  A lot of interresting news is
      comming from there up to me :-).
   </p>
        <p>
      .Net has a new logo. This is the one.
   </p>
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/net-logo.jpg" border="0" />
        </p>
        <p>
      This looks so great for me it so refreshing.  Being tired after 8 years of the
      old logo, I'm so happy with it.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=663c5da6-947f-4bb1-9277-cf0fe58e580a" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>New .Net logo</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,663c5da6-947f-4bb1-9277-cf0fe58e580a.aspx</guid>
      <link>http://blog.svencipido.be/Blog/New+Net+Logo.aspx</link>
      <pubDate>Tue, 28 Oct 2008 14:47:54 GMT</pubDate>
      <description>&lt;p&gt;
   It's a pitty that I wasn't able to go to PDC.&amp;nbsp; A lot of interresting news is
   comming from there up to me :-).
&lt;/p&gt;
&lt;p&gt;
   .Net has a new logo. This is the one.
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/net-logo.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   This looks so great for me it so refreshing.&amp;nbsp; Being tired after 8 years of the
   old logo, I'm so happy with it.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=663c5da6-947f-4bb1-9277-cf0fe58e580a" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,663c5da6-947f-4bb1-9277-cf0fe58e580a.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=d78a8200-9037-4c05-9f1e-d4dc0b638f96</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,d78a8200-9037-4c05-9f1e-d4dc0b638f96.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,d78a8200-9037-4c05-9f1e-d4dc0b638f96.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d78a8200-9037-4c05-9f1e-d4dc0b638f96</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://weblogs.asp.net/rweigelt/">Roland Weigelt</a> has released a new verison
      of his famous Ghostdoc.  It's a minor release but it solves a few issues with
      some operators and rules.
   </p>
        <p>
      Download it form the <a href="http://www.roland-weigelt.de/ghostdoc/">Ghostdoc website</a>.
   </p>
        <p>
      If you want a easy and fast way to ahve standard documentation of your code this is
      a very nice product.  I'm using it now on several projects.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=d78a8200-9037-4c05-9f1e-d4dc0b638f96" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>New (minor) version of Ghostdoc</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,d78a8200-9037-4c05-9f1e-d4dc0b638f96.aspx</guid>
      <link>http://blog.svencipido.be/Blog/New+Minor+Version+Of+Ghostdoc.aspx</link>
      <pubDate>Mon, 07 Jan 2008 14:49:18 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;a href="http://weblogs.asp.net/rweigelt/"&gt;Roland Weigelt&lt;/a&gt; has released a new verison
   of his famous Ghostdoc.&amp;nbsp; It's a minor release but it solves a few issues with
   some operators and rules.
&lt;/p&gt;
&lt;p&gt;
   Download it form the &lt;a href="http://www.roland-weigelt.de/ghostdoc/"&gt;Ghostdoc website&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   If you want a easy and fast way to ahve standard documentation of your code this is
   a very nice product.&amp;nbsp; I'm using it now on several projects.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=d78a8200-9037-4c05-9f1e-d4dc0b638f96" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,d78a8200-9037-4c05-9f1e-d4dc0b638f96.aspx</comments>
      <category>.Net;Ghostdoc</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=dc673bf8-e5a0-492e-bdb2-3820b3dfe186</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,dc673bf8-e5a0-492e-bdb2-3820b3dfe186.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,dc673bf8-e5a0-492e-bdb2-3820b3dfe186.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=dc673bf8-e5a0-492e-bdb2-3820b3dfe186</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/VS2008IsHere.jpg" border="0" />
        </p>
        <p>
      OK, I know.  The official RTM is released last monday (So 4 days late with blogging
      it), but I haven't had time to blog.  So here's a full list of all info I have
      about VS2008.
   </p>
        <p>
      Since monday, you can download VS2008 RTM if you are an MSDN subscriber (almost 4GB).
   </p>
        <p>
      But you aren't a MSDN subscriber and you still want to have it.  Well here are
      a few possibilities :
   </p>
        <ul>
          <li>
            <a href="http://msdn2.microsoft.com/en-us/vstudio/products/aa700831.aspx">Download
         the express editions</a>
          </li>
          <li>
            <a href="http://www.microsoft.com/express/">Download the trial editions</a>
          </li>
        </ul>
        <p>
      You can also download the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&amp;displaylang=en">.Net
      3.5 runtime</a>.
   </p>
        <p>
      Read a few Microsoft blogs who announced the shipment :
   </p>
        <ul>
          <li>
            <a href="http://blogs.msdn.com/somasegar/archive/2007/11/19/visual-studio-2008-and-net-framework-3-5-shipped.aspx">Somasegar's
         weblog</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/11/19/visual-studio-2008-and-net-3-5-released.aspx">ScottGu's
         blog</a>
          </li>
        </ul>
        <p>
      When you're a Silverlight developer, be sure to read the last paragraph with some
      important info.
   </p>
        <p>
      Also the VS2008 RTM Training kit is available for download.  This kit contains
      presentations, hands on labs, demo's,... about VS2008.  It's just a great bunch
      of sources. Go and download it <a href="http://go.microsoft.com/?linkid=7602397">here</a>.
   </p>
        <p>
      More and more info can be found on blogs.  <a href="http://blogs.msdn.com/danielfe/default.aspx">Dan
      Fernandez</a> has blogged a list with 15 nice and great new features which can be
      found in thss editions.  Here's his <a href="http://blogs.msdn.com/danielfe/archive/2007/11/19/top-15-things-to-love-about-visual-studio-2008-express.aspx">list</a>.
      Great work Dan.
   </p>
        <p>
      And if you're in game programming.  You can download the beta of XNA Game Studio
      2.0 add-in <a href="http://creators.xna.com/beta/betanewtoxna.aspx">here</a>.
   </p>
        <p>
      So fo those who doesn't still have anything of VS2008.  Go, grap it, download
      it and install it.  You just will love the new version.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=dc673bf8-e5a0-492e-bdb2-3820b3dfe186" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Visual Studio 2008</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,dc673bf8-e5a0-492e-bdb2-3820b3dfe186.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Visual+Studio+2008.aspx</link>
      <pubDate>Fri, 23 Nov 2007 09:30:49 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/VS2008IsHere.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   OK, I know.&amp;nbsp; The official RTM is released last monday (So 4 days late with blogging
   it), but I haven't had time to blog.&amp;nbsp; So here's a full list of all info I have
   about VS2008.
&lt;/p&gt;
&lt;p&gt;
   Since monday, you can download VS2008 RTM if you are an MSDN subscriber (almost 4GB).
&lt;/p&gt;
&lt;p&gt;
   But you aren't a MSDN subscriber and you still want to have it.&amp;nbsp; Well here are
   a few possibilities :
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;a href="http://msdn2.microsoft.com/en-us/vstudio/products/aa700831.aspx"&gt;Download
      the express editions&lt;/a&gt;
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://www.microsoft.com/express/"&gt;Download the trial editions&lt;/a&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   You can also download the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&amp;amp;displaylang=en"&gt;.Net
   3.5 runtime&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   Read a few Microsoft blogs who announced the shipment :
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;a href="http://blogs.msdn.com/somasegar/archive/2007/11/19/visual-studio-2008-and-net-framework-3-5-shipped.aspx"&gt;Somasegar's
      weblog&lt;/a&gt;
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/11/19/visual-studio-2008-and-net-3-5-released.aspx"&gt;ScottGu's
      blog&lt;/a&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   When you're a Silverlight developer, be sure to read the last paragraph with some
   important info.
&lt;/p&gt;
&lt;p&gt;
   Also the VS2008 RTM Training kit is available for download.&amp;nbsp; This kit contains
   presentations, hands on labs, demo's,... about VS2008.&amp;nbsp; It's just a great bunch
   of sources. Go and download it &lt;a href="http://go.microsoft.com/?linkid=7602397"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   More and more info can be found on blogs.&amp;nbsp; &lt;a href="http://blogs.msdn.com/danielfe/default.aspx"&gt;Dan
   Fernandez&lt;/a&gt; has blogged a list with 15 nice and great new features which can be
   found in thss editions.&amp;nbsp; Here's his &lt;a href="http://blogs.msdn.com/danielfe/archive/2007/11/19/top-15-things-to-love-about-visual-studio-2008-express.aspx"&gt;list&lt;/a&gt;.
   Great work Dan.
&lt;/p&gt;
&lt;p&gt;
   And if you're in game programming.&amp;nbsp; You can download the beta of XNA Game Studio
   2.0 add-in &lt;a href="http://creators.xna.com/beta/betanewtoxna.aspx"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   So fo those who doesn't still have anything of VS2008.&amp;nbsp; Go, grap it, download
   it and install it.&amp;nbsp; You just will love the new version.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=dc673bf8-e5a0-492e-bdb2-3820b3dfe186" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,dc673bf8-e5a0-492e-bdb2-3820b3dfe186.aspx</comments>
      <category>.Net;News</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=a909c9fa-0ee6-4bb1-a375-1537e833d032</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,a909c9fa-0ee6-4bb1-a375-1537e833d032.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,a909c9fa-0ee6-4bb1-a375-1537e833d032.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=a909c9fa-0ee6-4bb1-a375-1537e833d032</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Yesterday evening, <a href="http://www.visug.be">the Belgium Visug group</a> organized
      a “Best of TechEd” session.  In this session several speakers (I was one of them
      ;-) ) has given a 5 – 10 minute presentation about the best session they attended
      at TechEd 2007.
   </p>
        <p>
      Following topics were given:
   </p>
        <ul>
          <li>
         Astoria (<a href="http://www.goeleven.com/">Yves Goeleven</a>) 
      </li>
          <li>
         BizTalk Services (Lieven Iliano) 
      </li>
          <li>
         ASP.Net Futures (<a href="http://www.snowball.be">Gill Cleeren</a>) 
      </li>
          <li>
         Building Services with the Service Factory: Modeling Edition (<a href="http://geekswithblogs.net/claeyskurt/Default.aspx">Kurt
         Claeys</a>) 
      </li>
          <li>
         .Net Code Protection (Sven Cipido)</li>
        </ul>
        <p>
      The evening started with a 25 minute part of the openings keynote video. And at the
      end <a href="http://blog.u2u.info/DottextWeb/peter/">Peter Himschoot</a> also gives
      a little example of the combination between Ajax and Silverlight.
   </p>
        <p>
      Afterwards there was a bit of time to talk with everyone.  The comments that
      I heard where very positive.  So I hope Visug will organise it next year again.
      For me it was also a great experience, as this was my first external presentation
      I gave (I already had given presentation within my company).
   </p>
        <p>
      All presentations and demos will be available at the Visug site later this week. 
   </p>
        <p>
      You can download my presentation here <a href="http://blog.svencipido.be/Blog/content/binary/Best%20Of%20TechEd%20-%20SLPS.ppt">Best
      Of TechEd - SLPS.ppt (560 KB)</a>.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=a909c9fa-0ee6-4bb1-a375-1537e833d032" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Visug session : Best Of TechEd</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,a909c9fa-0ee6-4bb1-a375-1537e833d032.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Visug+Session++Best+Of+TechEd.aspx</link>
      <pubDate>Fri, 23 Nov 2007 08:36:02 GMT</pubDate>
      <description>&lt;p&gt;
   Yesterday evening, &lt;a href="http://www.visug.be"&gt;the Belgium Visug group&lt;/a&gt; organized
   a “Best of TechEd” session.&amp;nbsp; In this session several speakers (I was one of them
   ;-) ) has given a 5 – 10 minute presentation about the best session they attended
   at TechEd 2007.
&lt;/p&gt;
&lt;p&gt;
   Following topics were given:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Astoria (&lt;a href="http://www.goeleven.com/"&gt;Yves Goeleven&lt;/a&gt;) 
   &lt;li&gt;
      BizTalk Services (Lieven Iliano) 
   &lt;li&gt;
      ASP.Net Futures (&lt;a href="http://www.snowball.be"&gt;Gill Cleeren&lt;/a&gt;) 
   &lt;li&gt;
      Building Services with the Service Factory: Modeling Edition (&lt;a href="http://geekswithblogs.net/claeyskurt/Default.aspx"&gt;Kurt
      Claeys&lt;/a&gt;) 
   &lt;li&gt;
      .Net Code Protection (Sven Cipido)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   The evening started with a 25 minute part of the openings keynote video. And at the
   end &lt;a href="http://blog.u2u.info/DottextWeb/peter/"&gt;Peter Himschoot&lt;/a&gt; also gives
   a little example of the combination between Ajax and Silverlight.
&lt;/p&gt;
&lt;p&gt;
   Afterwards there was a bit of time to talk with everyone.&amp;nbsp; The comments that
   I heard where very positive.&amp;nbsp; So I hope Visug will organise it next year again.
   For me it was also a great experience, as this was my first external presentation
   I gave (I already had given presentation within my company).
&lt;/p&gt;
&lt;p&gt;
   All presentations and demos will be available at the Visug site later this week. 
&lt;/p&gt;
&lt;p&gt;
   You can download my presentation here &lt;a href="http://blog.svencipido.be/Blog/content/binary/Best%20Of%20TechEd%20-%20SLPS.ppt"&gt;Best
   Of TechEd - SLPS.ppt (560 KB)&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=a909c9fa-0ee6-4bb1-a375-1537e833d032" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,a909c9fa-0ee6-4bb1-a375-1537e833d032.aspx</comments>
      <category>.Net;Visug</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=89b34de8-a548-4814-af49-85d15a57f04c</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,89b34de8-a548-4814-af49-85d15a57f04c.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,89b34de8-a548-4814-af49-85d15a57f04c.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=89b34de8-a548-4814-af49-85d15a57f04c</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p>
      In a <a href="http://blog.svencipido.be/Blog/Creating+Project+Templates+In+VS2005.aspx">previous
      post</a> I wrote about how you could create a VS2005 template. I also told you that
      there was a problem when using multi-project templates. This can be solved by using
      the GAT tool to create your template. 
   </p>
        <p>
      If you never heard about the <a href="http://msdn.microsoft.com/vstudio/teamsystem/workshop/gat/">Guidance
      Automation Toolkit (GAT) or the Guidance Automation Extensions</a>, I would like to
      refer <a href="http://www.guidanceautomation.net/">the Guidance Automation community
      site</a>. 
   </p>
        <p>
      You are probably wondering why I’m talking about two products. Let’s make it clear.
      First you have the Guidance Automation Extensions. This is the runtime and must be
      installed on every machine that will make use of Guidance Packages. The Guidance Automation
      Toolkit is only needed on the machines of the architects or lead-developers or the
      developers who will create the Guidance Packages. 
   </p>
        <p>
      In this post I will provide you a solution for the problem with the multi-project
      templates. But just know that this tool can do much more than this. For example Jelle
      Druyts has wrote a serie <a href="http://jelle.druyts.net/CategoryView.aspx?category=Blog%7CProgramming%7C.NET%7CGuidanceAutomation">Guidance
      Automation Series</a> in which he will create his own application block. Txs Jelle
      for this great starter. 
   </p>
        <h6>Create a Guidance Package
   </h6>
        <p>
      Start your Visual Studio and go to the New Project dialog box. You will see that after
      installing the GAT, there’s a new Project Type Guidance Packages. This will contain
      all Guidance Packages that are installed on the machine. 
   </p>
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/newguidancepackage.png" border="0" />
        </p>
        <p>
      If not selected, select Guidance Package. Fill in a name and press OK. A dialog box
      will popup for some additional information about your Guidance Package.
   </p>
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/newguidancepackage1.png" border="0" />
        </p>
        <p>
      Fill in the extra info and press Finish. The wizard will create your solution which
      contains 3 projects :
   </p>
        <ul>
          <li>
         The Guidance Package project itself 
      </li>
          <li>
         The Guidance Package Installer 
      </li>
          <li>
         The Guidance Package Setup 
      </li>
        </ul>
        <p>
      Also the Guidance Navigator will be visible. At least you get a small help on how
      to create your Guidance Package. 
   </p>
        <p>
       <img style="WIDTH: 899px; HEIGHT: 892px" height="962" src="http://blog.svencipido.be/Blog/content/binary/newguidanceproject.png" width="1072" border="0" /></p>
        <p>
        </p>
        <p>
      Read carefully the instructions, because when you want to test your Guidance Package
      you have to open a new instance of Visual Studio. Also how to register your Guidance
      Package is described here. 
   </p>
        <p>
      So lets do a first test. Follow this steps
   </p>
        <ul>
          <li>
         Build your project 
      </li>
          <li>
         Right click on your Guidance Project and select Register Guidance Package</li>
        </ul>
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/registerguidancepackage.png" border="0" />
        </p>
        <p>
      After the registration is completed, this process takes a while, you can test it by
      opening a new instance of Visual Studio. The nest time in your development process
      you could use Quick register, which will reduce the registration time. But be aware,
      you could only do this only when you haven’t add any new templates or haven’t changed
      any of the HOSTDATA sections. HOSTDATA sections defines the integration with Visual
      Studio.
   </p>
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/customcreatedguidancepackage.png" border="0" />
        </p>
        <p>
      When opening the New Project Dialog Box you will see under the Guidance Packages a
      sub directory with your Guidance Package.<br />
      Start with our own Guidance Package<br />
      After playing around a bit, we want to create a Solution Template containing our pre-defined
      projects. First, let’s empty our project so we can start with a clean Package :
   </p>
        <ul>
          <li>
         Important : Leave the 2 XML files in the project. 
      </li>
          <li>
         Delete all other files, but leave the directories. 
      </li>
        </ul>
        <p>
      Now that we have an empty project, we can add our first project. In our demo, we will
      add a C# project for the Business Layer. The next step is adding the DAL Layer project. 
   </p>
        <p>
      A good thing to know is that a Guidance Package is a combination of Visual Studio
      Templates and Guidance Automation Recipes. Templates are explained in my previous
      post. Guidance Automation Recipes are automated activities containing actions which
      are normally done manually by the developer. The recipes are stored in the Guidance
      Package XML (this is not the TypaAlias.xml). You link the two by adding a recipe reference
      to the .vstemplate file.
   </p>
        <h6>Solution template
   </h6>
        <p>
      What I did was creating a standard multi-project template and use these files to add
      in the Guidance Package. Be sure to set for all the objects their Build Action to
      Content and Copy To Output Directory to Copy Always. 
   </p>
        <p>
      If you check out the .vstemplate file, you will see that we add sections WizardExtension
      and WizardData to the template file. This is needed to made the connection to the
      recipe. 
   </p>
        <h6>Project template
   </h6>
        <p>
      Next we need to add our template solution. In the Solution folder we create a directory
      Projects. Under this folder we create a folder for our solution. In here we place
      all our files needed for the solution. Be aware for the Build Action and the Copy
      To Output Directory.<br />
      We also create the .vstemplate for our project, which included also the WizardExtension
      and WizardData section. 
   </p>
        <h6>Parameters
   </h6>
        <p>
      As you see in the examples we have used a parameter $SolutionTemplateName$. This is
      a custom parameter we can use together with other parameters (also the standard template
      parameter names). These parameters will be replaced during the run of the Guidance
      Package. They are defined in the recipe.<br />
      The Recipe<br />
      The last step after defining your templates, you need to define the recipe. A recipe
      will collects all user data and then start a series of automated commands. In our
      case we need the user to fill in the parameter $SolutionTemplateName$ and then start
      the creation of our solution. How to ask the user about the parameter, is done in
      the recipe. To do this we have to define arguments and fields for each parameter. 
   </p>
        <h6>Running the Guidance Package
   </h6>
        <p>
      Finally everything is ready. Now we want to run the Guidance Package. To do this,
      we need to register out package. When this is finished, we can start another Visual
      Studio session. Our Guidance Package will show up under the Guidance Packages section.
   </p>
        <p>
      Next, just like a normal project fill in the name and location and press OK. Now the
      Guidance Package will take over. A wizard will popup, where the user can add the info
      we need. 
      <br /></p>
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/Runningguidancepackage.png" border="0" />
        </p>
        <p>
      After filling in all info, press finished. Now our Guidance Package will create our
      solution. As you can see in the result our project has the correct name as we want
      and not the default defined in the templates.<br /></p>
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/guidancewizard.png" border="0" />
        </p>
        <h6>Add another project
   </h6>
        <p>
      Yes, you’re sure. So much work for one project. But now we are going to add a second
      project. Just add all needed files to the template directory, change your root .vstemplate
      file. 
   </p>
        <p>
      Register your Guidance Package and test it again. You will see in the final result,
      that our solution now contains two projects. 
   </p>
        <p>
      From here, you can add your complete structure the same way. And now you see how much
      work that need to be done by the developer manually can be automated.<br />
      How to deploy to other developers<br />
      If you want to deploy your Guidance Package to other developers, follow the next steps
   </p>
        <ul>
          <li>
         Be sure that that the Guidance Automation Extensions are installed 
      </li>
          <li>
         Install the MSI, created when building your project 
      </li>
        </ul>
        <p>
          <a href="http://blog.svencipido.be/Blog/content/binary/GAT%20Demo.zip">Download here
      a example solution</a>.
   </p>
        <h6>In the future
   </h6>
        <p>
      I will play more with the GAT tool, so maybe I will post more about this tool and
      it’s possibilities.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=89b34de8-a548-4814-af49-85d15a57f04c" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Guidance Automation Toolkit : Create a GAT Solution</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,89b34de8-a548-4814-af49-85d15a57f04c.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Guidance+Automation+Toolkit++Create+A+GAT+Solution.aspx</link>
      <pubDate>Mon, 30 Apr 2007 13:40:02 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
   In a &lt;a href="http://blog.svencipido.be/Blog/Creating+Project+Templates+In+VS2005.aspx"&gt;previous
   post&lt;/a&gt; I wrote about how you could create a VS2005 template. I also told you that
   there was a problem when using multi-project templates. This can be solved by using
   the GAT tool to create your template. 
&lt;p&gt;
   If you never heard about the &lt;a href="http://msdn.microsoft.com/vstudio/teamsystem/workshop/gat/"&gt;Guidance
   Automation Toolkit (GAT) or the Guidance Automation Extensions&lt;/a&gt;, I would like to
   refer &lt;a href="http://www.guidanceautomation.net/"&gt;the Guidance Automation community
   site&lt;/a&gt;. 
&lt;p&gt;
   You are probably wondering why I’m talking about two products. Let’s make it clear.
   First you have the Guidance Automation Extensions. This is the runtime and must be
   installed on every machine that will make use of Guidance Packages. The Guidance Automation
   Toolkit is only needed on the machines of the architects or lead-developers or the
   developers who will create the Guidance Packages. 
&lt;p&gt;
   In this post I will provide you a solution for the problem with the multi-project
   templates. But just know that this tool can do much more than this. For example Jelle
   Druyts has wrote a serie &lt;a href="http://jelle.druyts.net/CategoryView.aspx?category=Blog%7CProgramming%7C.NET%7CGuidanceAutomation"&gt;Guidance
   Automation Series&lt;/a&gt; in which he will create his own application block. Txs Jelle
   for this great starter. 
&lt;h6&gt;Create a Guidance Package
&lt;/h6&gt;
&lt;p&gt;
   Start your Visual Studio and go to the New Project dialog box. You will see that after
   installing the GAT, there’s a new Project Type Guidance Packages. This will contain
   all Guidance Packages that are installed on the machine. 
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/newguidancepackage.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   If not selected, select Guidance Package. Fill in a name and press OK. A dialog box
   will popup for some additional information about your Guidance Package.
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/newguidancepackage1.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   Fill in the extra info and press Finish. The wizard will create your solution which
   contains 3 projects :
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      The Guidance Package project itself 
   &lt;li&gt;
      The Guidance Package Installer 
   &lt;li&gt;
      The Guidance Package Setup 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Also the Guidance Navigator will be visible. At least you get a small help on how
   to create your Guidance Package. 
&lt;p&gt;
   &amp;nbsp;&lt;img style="WIDTH: 899px; HEIGHT: 892px" height=962 src="http://blog.svencipido.be/Blog/content/binary/newguidanceproject.png" width=1072 border=0&gt; 
&lt;p&gt;
&lt;p&gt;
   Read carefully the instructions, because when you want to test your Guidance Package
   you have to open a new instance of Visual Studio. Also how to register your Guidance
   Package is described here. 
&lt;p&gt;
   So lets do a first test. Follow this steps
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Build your project 
   &lt;li&gt;
      Right click on your Guidance Project and select Register Guidance Package&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/registerguidancepackage.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   After the registration is completed, this process takes a while, you can test it by
   opening a new instance of Visual Studio. The nest time in your development process
   you could use Quick register, which will reduce the registration time. But be aware,
   you could only do this only when you haven’t add any new templates or haven’t changed
   any of the HOSTDATA sections. HOSTDATA sections defines the integration with Visual
   Studio.
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/customcreatedguidancepackage.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   When opening the New Project Dialog Box you will see under the Guidance Packages a
   sub directory with your Guidance Package.&lt;br&gt;
   Start with our own Guidance Package&lt;br&gt;
   After playing around a bit, we want to create a Solution Template containing our pre-defined
   projects. First, let’s empty our project so we can start with a clean Package :
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Important : Leave the 2 XML files in the project. 
   &lt;li&gt;
      Delete all other files, but leave the directories. 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Now that we have an empty project, we can add our first project. In our demo, we will
   add a C# project for the Business Layer. The next step is adding the DAL Layer project. 
&lt;p&gt;
   A good thing to know is that a Guidance Package is a combination of Visual Studio
   Templates and Guidance Automation Recipes. Templates are explained in my previous
   post. Guidance Automation Recipes are automated activities containing actions which
   are normally done manually by the developer. The recipes are stored in the Guidance
   Package XML (this is not the TypaAlias.xml). You link the two by adding a recipe reference
   to the .vstemplate file.
&lt;/p&gt;
&lt;h6&gt;Solution template
&lt;/h6&gt;
&lt;p&gt;
   What I did was creating a standard multi-project template and use these files to add
   in the Guidance Package. Be sure to set for all the objects their Build Action to
   Content and Copy To Output Directory to Copy Always. 
&lt;/p&gt;
&lt;p&gt;
   If you check out the .vstemplate file, you will see that we add sections WizardExtension
   and WizardData to the template file. This is needed to made the connection to the
   recipe. 
&lt;h6&gt;Project template
&lt;/h6&gt;
&lt;p&gt;
   Next we need to add our template solution. In the Solution folder we create a directory
   Projects. Under this folder we create a folder for our solution. In here we place
   all our files needed for the solution. Be aware for the Build Action and the Copy
   To Output Directory.&lt;br&gt;
   We also create the .vstemplate for our project, which included also the WizardExtension
   and WizardData section. 
&lt;/p&gt;
&lt;h6&gt;Parameters
&lt;/h6&gt;
&lt;p&gt;
   As you see in the examples we have used a parameter $SolutionTemplateName$. This is
   a custom parameter we can use together with other parameters (also the standard template
   parameter names). These parameters will be replaced during the run of the Guidance
   Package. They are defined in the recipe.&lt;br&gt;
   The Recipe&lt;br&gt;
   The last step after defining your templates, you need to define the recipe. A recipe
   will collects all user data and then start a series of automated commands. In our
   case we need the user to fill in the parameter $SolutionTemplateName$ and then start
   the creation of our solution. How to ask the user about the parameter, is done in
   the recipe. To do this we have to define arguments and fields for each parameter. 
&lt;/p&gt;
&lt;h6&gt;Running the Guidance Package
&lt;/h6&gt;
&lt;p&gt;
   Finally everything is ready. Now we want to run the Guidance Package. To do this,
   we need to register out package. When this is finished, we can start another Visual
   Studio session. Our Guidance Package will show up under the Guidance Packages section.
&lt;/p&gt;
&lt;p&gt;
   Next, just like a normal project fill in the name and location and press OK. Now the
   Guidance Package will take over. A wizard will popup, where the user can add the info
   we need. 
   &lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/Runningguidancepackage.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   After filling in all info, press finished. Now our Guidance Package will create our
   solution. As you can see in the result our project has the correct name as we want
   and not the default defined in the templates.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/guidancewizard.png" border=0&gt;
&lt;/p&gt;
&lt;h6&gt;Add another project
&lt;/h6&gt;
&lt;p&gt;
   Yes, you’re sure. So much work for one project. But now we are going to add a second
   project. Just add all needed files to the template directory, change your root .vstemplate
   file. 
&lt;/p&gt;
&lt;p&gt;
   Register your Guidance Package and test it again. You will see in the final result,
   that our solution now contains two projects. 
&lt;p&gt;
   From here, you can add your complete structure the same way. And now you see how much
   work that need to be done by the developer manually can be automated.&lt;br&gt;
   How to deploy to other developers&lt;br&gt;
   If you want to deploy your Guidance Package to other developers, follow the next steps
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Be sure that that the Guidance Automation Extensions are installed 
   &lt;li&gt;
      Install the MSI, created when building your project 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;a href="http://blog.svencipido.be/Blog/content/binary/GAT%20Demo.zip"&gt;Download here
   a example solution&lt;/a&gt;.
&lt;/p&gt;
&lt;h6&gt;In the future
&lt;/h6&gt;
&lt;p&gt;
   I will play more with the GAT tool, so maybe I will post more about this tool and
   it’s possibilities.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=89b34de8-a548-4814-af49-85d15a57f04c" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,89b34de8-a548-4814-af49-85d15a57f04c.aspx</comments>
      <category>.Net;Guidance Automation Toolkit</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=df1becfa-791c-4396-bee3-cc47e80ef915</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,df1becfa-791c-4396-bee3-cc47e80ef915.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,df1becfa-791c-4396-bee3-cc47e80ef915.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=df1becfa-791c-4396-bee3-cc47e80ef915</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h6>Manually generation
   </h6>
        <p>
      In our previous artikel we talked about the NAnt build scripts.  We will show
      you a script that you can use to create your NAnt buildscripts.  This script
      can called manually. Later we will show you how you can do this fully automaticly.
   </p>
        <p>
      For the easy generation of the Buildscripts, we have a buildscript generator. Running
      this will create the master.build file for a project. You have to change manually
      the name of the project when creating the master.build file for the next project (See
      red text in the example of a master.build file).
   </p>
        <p>
          <font face="Courier New" size="1">&lt;?xml version="1.0" ?&gt;<br />
      &lt;project name="Tools.BuildScriptGenerator" default="GenerateBuildScript" xmlns="nant.xsd"&gt; </font>
        </p>
        <p>
          <font face="Courier New" size="1">&lt;!-- ###################################################################################################
      --&gt;<br />
      &lt;!-- GENERATE A NANT BUILD FILE FROM A VS.NET PROJECT --&gt;<br />
      &lt;!-- ###################################################################################################
      --&gt;<br />
      &lt;property name="file.out" value="generated.build" /&gt;<br />
      &lt;property name="file.temp" value="${file.out}.temp" /&gt;<br /><font color="#ff0000">&lt;property name="file.in" value="C:\Buildserver\Projects\&lt;Your
      project folder&gt;\&lt;Project&gt;Solution\&lt;Project&gt;.BL\&lt;Project&gt;.BL.csproj"
      /&gt;</font></font>
        </p>
        <p>
          <font face="Courier New" size="1">&lt;target name="GenerateBuildScript"&gt;<br />
          &lt;delete file="${file.out}" verbose="true" failonerror="false"
      /&gt;<br />
          &lt;delete file="${file.temp}" verbose="true" failonerror="false"
      /&gt;<br />
          &lt;style style="VSConvert.xsl" in="${file.in}" out="${file.temp}"
      /&gt;<br />
          &lt;loadfile file="${file.temp}" property="file" /&gt;<br />
          &lt;property name="newfile" value="${string::replace(file,'REPLACE_','')}"
      /&gt;<br />
          &lt;echo file="${file.out}" message="${newfile}" /&gt;<br />
      &lt;/target&gt; </font>
        </p>
        <p>
          <font face="Courier New" size="1">&lt;/project&gt;</font>
        </p>
        <p>
      You can create a .Bat file for easy startup of the script generator. This is the code
      in your GenerateBuildScript.Bat file  : 
   </p>
        <p>
          <font face="Courier New" size="1">@ECHO OFF<br />
      ..\NAnt\bin\NAnt.exe -buildfile:master.build<br />
      PAUSE</font>
        </p>
        <p>
      while the buildscriptgeneration is running and you get an error “Unable to find
      source XML file ‘&lt;&lt;Project name&gt;&gt;’” this means that the path to your csproj
      file is wrong.  If you run the bat file, you get the file “generated.build”.
      This file must be copied to the project directory and renamed to master.build. In
      CruiseControl.Net, the automatic generation will also be added including this copy
      action. 
   </p>
        <h6>Automaticilly generation
   </h6>
        <p>
      Now that we know how to let the computer generate our NAnt build scripts for a project,
      we can change this to let Cruisecontrol generates all the NAnt buildscripts for us
      and copy them in the correct place.  To do this, we will create a script called
      all.build.  This file contains all the project of our solution, will create for
      each project the master.build file and places it in the correct directory. 
   </p>
        <p>
          <strong>One important notice</strong> : I haven't found out how we can automate the
      building order of the projects, so this file must be maintained manually :-(. 
   </p>
        <p>
      OK, let's go to the script.  The lines marked in red must be changed
      manually : 
   </p>
        <p>
          <font face="Courier New" size="1">&lt;?xml version="1.0" ?&gt;<br />
      &lt;project name<font color="#ff0000">="&lt;Project&gt;.Complete</font>" xmlns="</font>
          <a href="http://nant.sf.net/release/0.85-rc3/nant.xsd&quot;">
            <font face="Courier New" size="1">http://nant.sf.net/release/0.85-rc3/nant.xsd"</font>
          </a>
          <font face="Courier New" size="1">&gt;<br />
      &lt;!-- BuildServer Properties --&gt; 
      <br />
      &lt;include buildfile="properties.build" /&gt; </font>
        </p>
        <p>
          <font face="Courier New" size="1">&lt;!-- Solution Properties --&gt;<br />
      &lt;property name="src.root.dir" value="${root.dir}/<font color="#ff0000">&lt;Project
      name&gt;</font>" overwrite="false" /&gt;<br />
      &lt;!-- Rebuild Master Scripts --&gt;<br />
      &lt;include buildfile="buildscripts.refresh.build" /&gt;<br />
      &lt;call target="RefreshBuildScripts" /&gt;<br />
      &lt;!-- Error Handling --&gt;<br />
      &lt;property name="nant.onfailure" value="<font color="#ff0000">&lt;Project name&gt;.Fail</font>"
      /&gt; </font>
        </p>
        <p>
          <font face="Courier New" size="1">&lt;!-- Includes --&gt;<br />
      &lt;include buildfile="clean.build" /&gt;<br />
      &lt;!-- Preparation --&gt;<br />
      &lt;call target="Clean" /&gt;<br />
      &lt;!-- Project Properties --&gt;<br />
      &lt;property name="project.version" value="true" /&gt;<br />
      &lt;property name="buildnumber.build" value="${CCNetLabel}" /&gt;<br />
      &lt;property name="buildnumber.version" value="${buildnumber.build}" /&gt;<br />
      &lt;property name="asm.version" value="${buildnumber.version}" /&gt;<br /></font>
          <font face="Courier New">
            <font size="1">
              <font color="#ff0000">&lt;!-- projects
      --&gt;<br />
      &lt;include buildfile="&lt;Project name&gt;.Common/master.build" /&gt;<br />
      &lt;call target="&lt;Project name&gt;.Common.Build" /&gt; 
      <br />
      &lt;include buildfile="&lt;Project name&gt;.DAL.AccessDbProvider/master.build" /&gt;<br />
      &lt;call target="Fortisbank.&lt;Project name&gt;.AccessDbProvider.Build" /&gt;<br />
      &lt;include buildfile="&lt;Project name&gt;.DAL/master.build" /&gt;<br />
      &lt;call target="&lt;Project name&gt;.DAL.Build" /&gt;<br />
      &lt;include buildfile="&lt;Project name&gt;.BL/master.build" /&gt;<br />
      &lt;call target="&lt;Project name&gt;.BL.Build" /&gt; 
      <br />
      &lt;include buildfile="&lt;Project name&gt;.PL/master.build" /&gt;<br />
      &lt;call target="&lt;Project name&gt;.Prototype.PL.Build" /&gt;<br />
      &lt;!-- Web Applications Installation --&gt;<br />
      &lt;include buildfile="Webapplication.install.build" /&gt;<br />
      &lt;call target="InstallWebApplications" /&gt;</font>
              <br />
      &lt;!-- CleanUp Sources --&gt;<br />
      &lt;!--&lt;call target="<font color="#ff0000">&lt;Project&gt;.CleanSources</font>"
      /&gt;--&gt;<br />
      &lt;!-- THE END --&gt;<br />
      &lt;!-- Remove Sources --&gt;<br />
      &lt;target name="<font color="#ff0000">&lt;Project&gt;.CleanSources</font>"&gt;<br />
          &lt;delete&gt;<br />
              &lt;fileset basedir="${src.root.dir}"&gt;<br />
                  &lt;include name="**.*"
      /&gt;<br />
                  &lt;exclude name="**.sln"
      /&gt;<br />
                  &lt;exclude name="**.suo"
      /&gt;<br />
              &lt;/fileset&gt;<br />
          &lt;/delete&gt;<br />
      &lt;/target&gt; </font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="1">&lt;!-- Fail --&gt;<br />
      &lt;target name="<font color="#ff0000">&lt;Project&gt;.Fail</font>"&gt;<br />
      &lt;!-- Remove sources --&gt;<br />
      &lt;call target="<font color="#ff0000">&lt;Project&gt;.CleanSources</font>" failonerror="false"/&gt;<br />
      &lt;/target&gt; </font>
        </p>
        <p>
          <font face="Courier New" size="1">&lt;/project&gt;</font>
        </p>
        <p>
      As you can see, there are several blocks in the script : 
   </p>
        <ol>
          <li>
         Buildserver properties : Properties of the buildserver 
      </li>
          <li>
         Solution properties : Specific properties for that solution 
      </li>
          <li>
         Refresh Master Scripts : Recreate the master.build files for each defined projects 
      </li>
          <li>
         Error Handling 
      </li>
          <li>
         Clean : This will clean up all the sources 
      </li>
          <li>
         Project properties : specific project properties 
      </li>
          <li>
         Projects : Declaration of the non-web projects that need to be build.  Be sure
         you put them in the correct building order. 
      </li>
          <li>
         Web applications : Same as Projects, but for your web applications.</li>
        </ol>
        <p>
      As you can see we make a difference between normal projects and web projects. 
      Why ? This will explained later.
   </p>
        <p>
      Be sure to stayed tuned, because in the next chapter we will discuss a few build scripts
      which are called from within this script.  We also have to change our ccnet.config
      file.
   </p>
        <hr />
        <p>
      Overview Buildserver chapters on my blog : 
   </p>
        <p>
          <a href="http://blog.svencipido.be/Blog/ct.ashx?id=fdb58f59-7fd6-449e-a354-c3df43fb5e01&amp;url=http%3a%2f%2fblog.svencipido.be%2fBlog%2fBuild%2bServer%2b%2bPart%2b1%2b%2bIntroduction.aspx">Chapter
      1 : Introduction</a>
          <br />
          <a href="http://blog.svencipido.be/Blog/ct.ashx?id=fdb58f59-7fd6-449e-a354-c3df43fb5e01&amp;url=http%3a%2f%2fblog.svencipido.be%2fBlog%2fBuild%2bServer%2bPart%2b2%2b%2bCruiseControlNet.aspx">Chapter
      2 : CruiseControl.Net</a>
          <br />
          <a href="http://blog.svencipido.be/Blog/ct.ashx?id=fdb58f59-7fd6-449e-a354-c3df43fb5e01&amp;url=http%3a%2f%2fblog.svencipido.be%2fBlog%2fBuild%2bServer%2bPart%2b3%2b%2bProjects.aspx">Chapter
      3 : Projects</a>
          <br />
          <a href="http://blog.svencipido.be/Blog/ct.ashx?id=fdb58f59-7fd6-449e-a354-c3df43fb5e01&amp;url=http%3a%2f%2fblog.svencipido.be%2fBlog%2fBuild%2bServer%2bPart%2b4%2bNdash%2bProject%2bStructure.aspx">Chapter
      4 : Project Structure</a>
          <br />
          <a href="http://blog.svencipido.be/Blog/Build+Server+Part+5+Ndash+NAnt+And+All+Our+Buildscripts.aspx">Chapter
      5 : NAnt and all our buildscripts</a>
          <br />
      Chapter 6 : Buildscript generation Part 1
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=df1becfa-791c-4396-bee3-cc47e80ef915" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Build server: Part 6 - Buildscript generation part 1</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,df1becfa-791c-4396-bee3-cc47e80ef915.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Build+Server+Part+6++Buildscript+Generation+Part+1.aspx</link>
      <pubDate>Tue, 17 Apr 2007 07:13:22 GMT</pubDate>
      <description>&lt;h6&gt;Manually generation
&lt;/h6&gt;
&lt;p&gt;
   In our previous artikel we talked about the NAnt build scripts.&amp;nbsp; We will show
   you a script that you can use to create your NAnt buildscripts.&amp;nbsp; This script
   can called manually. Later we will show you how you can do this fully automaticly.
&lt;/p&gt;
&lt;p&gt;
   For the easy generation of the Buildscripts, we have a buildscript generator. Running
   this will create the master.build file for a project. You have to change manually
   the name of the project when creating the master.build file for the next project (See
   red text in the example of a master.build file).
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Courier New" size=1&gt;&amp;lt;?xml version="1.0" ?&amp;gt;&lt;br&gt;
   &amp;lt;project name="Tools.BuildScriptGenerator" default="GenerateBuildScript" xmlns="nant.xsd"&amp;gt; &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Courier New" size=1&gt;&amp;lt;!-- ###################################################################################################
   --&amp;gt;&lt;br&gt;
   &amp;lt;!-- GENERATE A NANT BUILD FILE FROM A VS.NET PROJECT --&amp;gt;&lt;br&gt;
   &amp;lt;!-- ###################################################################################################
   --&amp;gt;&lt;br&gt;
   &amp;lt;property name="file.out" value="generated.build" /&amp;gt;&lt;br&gt;
   &amp;lt;property name="file.temp" value="${file.out}.temp" /&amp;gt;&lt;br&gt;
   &lt;font color=#ff0000&gt;&amp;lt;property name="file.in" value="C:\Buildserver\Projects\&amp;lt;Your
   project folder&amp;gt;\&amp;lt;Project&amp;gt;Solution\&amp;lt;Project&amp;gt;.BL\&amp;lt;Project&amp;gt;.BL.csproj"
   /&amp;gt;&lt;/font&gt; &lt;/font&gt; 
&lt;p&gt;
   &lt;font face="Courier New" size=1&gt;&amp;lt;target name="GenerateBuildScript"&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;delete file="${file.out}" verbose="true" failonerror="false"
   /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;delete file="${file.temp}" verbose="true" failonerror="false"
   /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;style style="VSConvert.xsl" in="${file.in}" out="${file.temp}"
   /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;loadfile file="${file.temp}" property="file" /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="newfile" value="${string::replace(file,'REPLACE_','')}"
   /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo file="${file.out}" message="${newfile}" /&amp;gt;&lt;br&gt;
   &amp;lt;/target&amp;gt; &lt;/font&gt; 
&lt;p&gt;
   &lt;font face="Courier New" size=1&gt;&amp;lt;/project&amp;gt;&lt;/font&gt; 
&lt;p&gt;
   You can create a .Bat file for easy startup of the script generator. This is the code
   in your GenerateBuildScript.Bat file&amp;nbsp;&amp;nbsp;: 
&lt;p&gt;
   &lt;font face="Courier New" size=1&gt;@ECHO OFF&lt;br&gt;
   ..\NAnt\bin\NAnt.exe -buildfile:master.build&lt;br&gt;
   PAUSE&lt;/font&gt; 
&lt;p&gt;
   while&amp;nbsp;the buildscriptgeneration is running and you get an error “Unable to find
   source XML file ‘&amp;lt;&amp;lt;Project name&amp;gt;&amp;gt;’” this means that the path to your csproj
   file is wrong.&amp;nbsp; If you run the bat file, you get the file “generated.build”.
   This file must be copied to the project directory and renamed to master.build. In
   CruiseControl.Net, the automatic generation will also be added including this copy
   action. 
&lt;h6&gt;Automaticilly generation
&lt;/h6&gt;
&lt;p&gt;
   Now that we know how to let the computer generate our NAnt build scripts for a project,
   we can change this to let Cruisecontrol generates all the NAnt buildscripts for us
   and copy them in the correct place.&amp;nbsp; To do this, we will create a script called
   all.build.&amp;nbsp; This file contains all the project of our solution, will create for
   each project the master.build file and places it in the correct directory. 
&lt;p&gt;
   &lt;strong&gt;One important notice&lt;/strong&gt; : I haven't found out how we can automate the
   building order of&amp;nbsp;the projects, so this file must be maintained manually :-(. 
&lt;p&gt;
   OK, let's go to the script.&amp;nbsp;&amp;nbsp;The lines&amp;nbsp;marked in red must be changed
   manually&amp;nbsp;: 
&lt;p&gt;
   &lt;font face="Courier New" size=1&gt;&amp;lt;?xml version="1.0" ?&amp;gt;&lt;br&gt;
   &amp;lt;project name&lt;font color=#ff0000&gt;="&amp;lt;Project&amp;gt;.Complete&lt;/font&gt;" xmlns="&lt;/font&gt;&lt;a href='http://nant.sf.net/release/0.85-rc3/nant.xsd"'&gt;&lt;font face="Courier New" size=1&gt;http://nant.sf.net/release/0.85-rc3/nant.xsd"&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New" size=1&gt;&amp;gt;&lt;br&gt;
   &amp;lt;!-- BuildServer Properties --&amp;gt; 
   &lt;br&gt;
   &amp;lt;include buildfile="properties.build" /&amp;gt; &lt;/font&gt; 
&lt;p&gt;
   &lt;font face="Courier New" size=1&gt;&amp;lt;!-- Solution Properties --&amp;gt;&lt;br&gt;
   &amp;lt;property name="src.root.dir" value="${root.dir}/&lt;font color=#ff0000&gt;&amp;lt;Project
   name&amp;gt;&lt;/font&gt;" overwrite="false" /&amp;gt;&lt;br&gt;
   &amp;lt;!-- Rebuild Master Scripts --&amp;gt;&lt;br&gt;
   &amp;lt;include buildfile="buildscripts.refresh.build" /&amp;gt;&lt;br&gt;
   &amp;lt;call target="RefreshBuildScripts" /&amp;gt;&lt;br&gt;
   &amp;lt;!-- Error Handling --&amp;gt;&lt;br&gt;
   &amp;lt;property name="nant.onfailure" value="&lt;font color=#ff0000&gt;&amp;lt;Project name&amp;gt;.Fail&lt;/font&gt;"
   /&amp;gt; &lt;/font&gt; 
&lt;p&gt;
   &lt;font face="Courier New" size=1&gt;&amp;lt;!-- Includes --&amp;gt;&lt;br&gt;
   &amp;lt;include buildfile="clean.build" /&amp;gt;&lt;br&gt;
   &amp;lt;!-- Preparation --&amp;gt;&lt;br&gt;
   &amp;lt;call target="Clean" /&amp;gt;&lt;br&gt;
   &amp;lt;!-- Project Properties --&amp;gt;&lt;br&gt;
   &amp;lt;property name="project.version" value="true" /&amp;gt;&lt;br&gt;
   &amp;lt;property name="buildnumber.build" value="${CCNetLabel}" /&amp;gt;&lt;br&gt;
   &amp;lt;property name="buildnumber.version" value="${buildnumber.build}" /&amp;gt;&lt;br&gt;
   &amp;lt;property name="asm.version" value="${buildnumber.version}" /&amp;gt;&lt;br&gt;
   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=1&gt;&lt;font color=#ff0000&gt;&amp;lt;!-- projects
   --&amp;gt;&lt;br&gt;
   &amp;lt;include buildfile="&amp;lt;Project name&amp;gt;.Common/master.build" /&amp;gt;&lt;br&gt;
   &amp;lt;call target="&amp;lt;Project name&amp;gt;.Common.Build" /&amp;gt; 
   &lt;br&gt;
   &amp;lt;include buildfile="&amp;lt;Project name&amp;gt;.DAL.AccessDbProvider/master.build" /&amp;gt;&lt;br&gt;
   &amp;lt;call target="Fortisbank.&amp;lt;Project name&amp;gt;.AccessDbProvider.Build" /&amp;gt;&lt;br&gt;
   &amp;lt;include buildfile="&amp;lt;Project name&amp;gt;.DAL/master.build" /&amp;gt;&lt;br&gt;
   &amp;lt;call target="&amp;lt;Project name&amp;gt;.DAL.Build" /&amp;gt;&lt;br&gt;
   &amp;lt;include buildfile="&amp;lt;Project name&amp;gt;.BL/master.build" /&amp;gt;&lt;br&gt;
   &amp;lt;call target="&amp;lt;Project name&amp;gt;.BL.Build" /&amp;gt; 
   &lt;br&gt;
   &amp;lt;include buildfile="&amp;lt;Project name&amp;gt;.PL/master.build" /&amp;gt;&lt;br&gt;
   &amp;lt;call target="&amp;lt;Project name&amp;gt;.Prototype.PL.Build" /&amp;gt;&lt;br&gt;
   &amp;lt;!-- Web Applications Installation --&amp;gt;&lt;br&gt;
   &amp;lt;include buildfile="Webapplication.install.build" /&amp;gt;&lt;br&gt;
   &amp;lt;call target="InstallWebApplications" /&amp;gt;&lt;/font&gt;
   &lt;br&gt;
   &amp;lt;!-- CleanUp Sources --&amp;gt;&lt;br&gt;
   &amp;lt;!--&amp;lt;call target="&lt;font color=#ff0000&gt;&amp;lt;Project&amp;gt;.CleanSources&lt;/font&gt;" /&amp;gt;--&amp;gt;&lt;br&gt;
   &amp;lt;!-- THE END --&amp;gt;&lt;br&gt;
   &amp;lt;!-- Remove Sources --&amp;gt;&lt;br&gt;
   &amp;lt;target name="&lt;font color=#ff0000&gt;&amp;lt;Project&amp;gt;.CleanSources&lt;/font&gt;"&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;delete&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fileset basedir="${src.root.dir}"&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include name="**.*"
   /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude name="**.sln"
   /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude name="**.suo"
   /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fileset&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/delete&amp;gt;&lt;br&gt;
   &amp;lt;/target&amp;gt; &lt;/font&gt;&lt;/font&gt; 
&lt;p&gt;
   &lt;font face="Courier New" size=1&gt;&amp;lt;!-- Fail --&amp;gt;&lt;br&gt;
   &amp;lt;target name="&lt;font color=#ff0000&gt;&amp;lt;Project&amp;gt;.Fail&lt;/font&gt;"&amp;gt;&lt;br&gt;
   &amp;lt;!-- Remove sources --&amp;gt;&lt;br&gt;
   &amp;lt;call target="&lt;font color=#ff0000&gt;&amp;lt;Project&amp;gt;.CleanSources&lt;/font&gt;" failonerror="false"/&amp;gt;&lt;br&gt;
   &amp;lt;/target&amp;gt; &lt;/font&gt; 
&lt;p&gt;
   &lt;font face="Courier New" size=1&gt;&amp;lt;/project&amp;gt;&lt;/font&gt; 
&lt;p&gt;
   As you can see, there are several blocks in the script : 
&lt;ol&gt;
   &lt;li&gt;
      Buildserver properties : Properties of the buildserver 
   &lt;li&gt;
      Solution properties : Specific properties for that solution 
   &lt;li&gt;
      Refresh Master Scripts : Recreate the master.build files for&amp;nbsp;each defined projects 
   &lt;li&gt;
      Error Handling 
   &lt;li&gt;
      Clean : This will clean up all the sources 
   &lt;li&gt;
      Project properties : specific project properties 
   &lt;li&gt;
      Projects : Declaration of the non-web projects that need to be build.&amp;nbsp; Be sure
      you put them in the correct building order. 
   &lt;li&gt;
      Web applications : Same as Projects, but for your web applications.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   As you can see we make a difference between normal projects and web projects.&amp;nbsp;
   Why ? This will explained later.
&lt;/p&gt;
&lt;p&gt;
   Be sure to stayed tuned, because in the next chapter we will discuss a few build scripts
   which are called from within this script.&amp;nbsp; We also have to change our ccnet.config
   file.
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
   Overview Buildserver chapters on my blog : 
&lt;p&gt;
   &lt;a href="http://blog.svencipido.be/Blog/ct.ashx?id=fdb58f59-7fd6-449e-a354-c3df43fb5e01&amp;amp;url=http%3a%2f%2fblog.svencipido.be%2fBlog%2fBuild%2bServer%2b%2bPart%2b1%2b%2bIntroduction.aspx"&gt;Chapter
   1 : Introduction&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="http://blog.svencipido.be/Blog/ct.ashx?id=fdb58f59-7fd6-449e-a354-c3df43fb5e01&amp;amp;url=http%3a%2f%2fblog.svencipido.be%2fBlog%2fBuild%2bServer%2bPart%2b2%2b%2bCruiseControlNet.aspx"&gt;Chapter
   2 : CruiseControl.Net&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="http://blog.svencipido.be/Blog/ct.ashx?id=fdb58f59-7fd6-449e-a354-c3df43fb5e01&amp;amp;url=http%3a%2f%2fblog.svencipido.be%2fBlog%2fBuild%2bServer%2bPart%2b3%2b%2bProjects.aspx"&gt;Chapter
   3 : Projects&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="http://blog.svencipido.be/Blog/ct.ashx?id=fdb58f59-7fd6-449e-a354-c3df43fb5e01&amp;amp;url=http%3a%2f%2fblog.svencipido.be%2fBlog%2fBuild%2bServer%2bPart%2b4%2bNdash%2bProject%2bStructure.aspx"&gt;Chapter
   4 : Project Structure&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+5+Ndash+NAnt+And+All+Our+Buildscripts.aspx"&gt;Chapter
   5 : NAnt and all our buildscripts&lt;/a&gt;
   &lt;br&gt;
   Chapter 6 : Buildscript generation Part 1
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=df1becfa-791c-4396-bee3-cc47e80ef915" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,df1becfa-791c-4396-bee3-cc47e80ef915.aspx</comments>
      <category>.Net;Buildserver</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=fdb58f59-7fd6-449e-a354-c3df43fb5e01</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,fdb58f59-7fd6-449e-a354-c3df43fb5e01.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,fdb58f59-7fd6-449e-a354-c3df43fb5e01.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=fdb58f59-7fd6-449e-a354-c3df43fb5e01</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h6>Introduction
   </h6>
        <p>
      Nant is used as a building service. MsBuild is another option, but these settings
      aren’t discussed here.<br />
      We have several scripts for the build process in Nant. You will see that only a few
      things must be changed in the scripts when adding another project. 
   </p>
        <p>
      The total package of all NAnt scripts will be available over several posts, so be
      sure that you read all my upcomming posts also. At the end you will have a fully automatic
      working buildserver ;-).  
   </p>
        <p>
      To use Nant in CruiseControl.Net, we have to change the ccnet.config file (see the
      ccnet.config file in <a href="http://blog.svencipido.be/Blog/Build+Server+Part+3++Projects.aspx">chapter
      3</a>). Here is the new ccnet.config: 
   </p>
        <p>
          <font face="Courier New" size="1">&lt;cruisecontrol&gt;<br />
          &lt;project 
      <br />
              name="ProjectX"<br />
              webURL="http:\\localhost\ccnet"<br />
              workingDirectory="C:\Buildserver"&gt;<br />
              &lt;sourcecontrol type="vss" autoGetSource="true"
      applyLabel="false"&gt;<br />
                  &lt;executable&gt;C:\Program
      Files\Microsoft Visual SourceSafe\Common\Vss\template\win32\SS.EXE&lt;/executable&gt;<br />
                  &lt;project&gt;$/Projects\ProjectX\xxxxx.ProjectX&lt;/project&gt;<br />
                  &lt;username&gt;VSSUser&lt;/username&gt;<br />
                  &lt;password&gt;VSSPws&lt;/password&gt;<br />
                  &lt;ssdir&gt;\\path
      to VSS DB\SourceDB&lt;/ssdir&gt;<br />
                  &lt;workingDirectory&gt;Buildserver\ProjectX&lt;/workingDirectory&gt;<br />
                  &lt;cleanCopy&gt;true&lt;/cleanCopy&gt;<br />
              &lt;/sourcecontrol&gt;<br />
             &lt;tasks&gt;<br />
                    &lt;nant&gt;<br />
                         
      &lt;executable&gt;Tools\Nant\bin\nant.exe&lt;/executable&gt;<br />
                         
      &lt;buildArgs&gt;"-D:outputType=Xml"&lt;/buildArgs&gt;<br />
                         
      &lt;nologo&gt;false&lt;/nologo&gt;<br />
                         
      &lt;buildFile&gt;Projects\ProjectX\ProjectXSolution\xxxxx.ProjectX\master.build<br />
                         
      &lt;/buildFile&gt;<br />
                         
      &lt;targetList&gt;<br />
                                
      &lt;target&gt;&lt;/target&gt;<br />
                         
      &lt;/targetList&gt;<br />
                         
      &lt;buildTimeoutSeconds&gt;1200&lt;/buildTimeoutSeconds&gt;<br />
                   &lt;/nant&gt;<br />
           &lt;/tasks&gt;<br />
        &lt;/project&gt;<br />
      &lt;/cruisecontrol&gt;</font>
        </p>
        <p>
      As you can see we refer to the master.build file of our first project. Later this
      will be changed to all.build in the Buildscripts.
   </p>
        <h6>Buildscripts
   </h6>
        <p>
      OK let's start with our buildscripts. As you can see Nant uses a Buildscript to know
      which projects to build and in which order (all.build – will be our general script
      in a later phase). For each project there is also a project bound script (master.build).
      In this build file, we define which files are needed to build that specific project. 
      As first step we will refer to the master.build for one project so we can test if
      our buildserver is working correctly.
   </p>
        <p>
      Here's an example of a master.build file :
   </p>
        <p>
          <font face="Courier New" size="1">&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />
      &lt;project name="xxxxx.ProjectX" default="xxxxx.ProjectX.Build" xmlns="</font>
          <a href="http://nant.sf.net/release/0.85-rc3/nant.xsd&quot;">
            <font face="Courier New" size="1">http://nant.sf.net/release/0.85-rc3/nant.xsd"</font>
          </a>
          <font face="Courier New" size="1">&gt;<br />
          &lt;!-- #################################################### --&gt;<br />
          &lt;!-- Settings --&gt;<br />
          &lt;!-- #################################################### --&gt;<br />
          &lt;property name="project.type" value="library" /&gt;<br />
          &lt;property name="project.FormalName" value="xxxxx.ProjectX" /&gt;<br />
          &lt;property name="project.build.dir" value="${bin.intern.dir}"
      /&gt;<br />
          &lt;property name="project.output" value="${project.build.dir}\${project.FormalName}.dll"
      /&gt;<br />
          &lt;property name="rootNamespace" value="xxxxx.ProjectX" /&gt;<br />
          &lt;property name="src.dir" value="${src.root.dir}\${project.FormalName}"
      /&gt;<br />
          &lt;property name="project.define" value="${vbc.define}" /&gt;<br />
          &lt;include buildfile="../generictargets.build" /&gt;<br />
          &lt;!-- #################################################### --&gt;<br />
          &lt;!-- Project xxxxx.ProjectX--&gt;<br />
          &lt;!-- #################################################### --&gt;<br />
          &lt;target name="xxxxx.ProjectX.Compile" description="Compile project"&gt;<br />
              &lt;csc target="${project.type}" output="${project.output}"
      debug="${vbc.debug}" define="${project.define}"&gt;<br />
                  &lt;sources&gt;<br />
                     
      &lt;include name="${src.dir}\AssemblyInfo.cs" /&gt;<br />
                     
      &lt;include name="${src.dir}\Class1.cs" /&gt;<br />
                  &lt;/sources&gt;<br />
                 &lt;references&gt;<br />
                    
      &lt;include name="System.dll" /&gt;<br />
                    
      &lt;include name="System.Data.dll" /&gt;<br />
                    
      &lt;include name="System.Xml.dll" /&gt;<br />
                    
      &lt;include name="${project.build.dir}/xxxxx.ProjectY.dll" /&gt; <br />
                 &lt;/references&gt;<br />
              &lt;/csc&gt;<br />
          &lt;/target&gt;<br />
          &lt;!-- #################################################### --&gt;<br />
          &lt;!-- Start --&gt;<br />
          &lt;!-- #################################################### --&gt;<br />
          &lt;target name="xxxxx.ProjectX.Build"&gt;<br />
              &lt;call target="xxxxx.Version" if="${project.version}"
      /&gt;<br />
              &lt;call target="xxxxx.ProjectX.Compile"
      /&gt;<br />
              &lt;call target="xxxxx.DEV" if="${build.type.deploy}"
      /&gt;<br />
              &lt;call target="xxxxx.TST" if="${build.type.deploy}"
      /&gt;<br />
              &lt;call target="xxxxx.PRD" if="${build.type.deploy}"
      /&gt;<br />
          &lt;/target&gt;<br />
      &lt;/project&gt;</font>
        </p>
        <p>
      In our next chapter we will show you how you can create the master.build file automaticly.
   </p>
        <hr />
        <p>
      Overview Buildserver chapters on my blog : 
   </p>
        <p>
          <a href="http://blog.svencipido.be/Blog/Build+Server++Part+1++Introduction.aspx">Chapter
      1 : Introduction</a>
          <br />
          <a href="http://blog.svencipido.be/Blog/Build+Server+Part+2++CruiseControlNet.aspx">Chapter
      2 : CruiseControl.Net</a>
          <br />
          <a href="http://blog.svencipido.be/Blog/Build+Server+Part+3++Projects.aspx">Chapter
      3 : Projects</a>
          <br />
          <a href="http://blog.svencipido.be/Blog/Build+Server+Part+4+Ndash+Project+Structure.aspx">Chapter
      4 : Project Structure</a>
          <br />
      Chapter 5 : NAnt and all our buildscripts
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=fdb58f59-7fd6-449e-a354-c3df43fb5e01" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Build server: Part 5 &amp;ndash; NAnt and all our buildscripts</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,fdb58f59-7fd6-449e-a354-c3df43fb5e01.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Build+Server+Part+5+Ndash+NAnt+And+All+Our+Buildscripts.aspx</link>
      <pubDate>Fri, 13 Apr 2007 09:04:59 GMT</pubDate>
      <description>&lt;h6&gt;Introduction
&lt;/h6&gt;
&lt;p&gt;
   Nant is used as a building service. MsBuild is another option, but these settings
   aren’t discussed here.&lt;br&gt;
   We have several scripts for the build process in Nant. You will see that only a few
   things must be changed in the scripts when adding another project. 
&lt;/p&gt;
&lt;p&gt;
   The total package of all NAnt scripts will be available over several posts, so be
   sure that you read all my upcomming posts also. At the end you will have a fully automatic
   working buildserver ;-).&amp;nbsp; 
&lt;p&gt;
   To use Nant in CruiseControl.Net, we have to change the ccnet.config file (see the
   ccnet.config file in &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+3++Projects.aspx"&gt;chapter
   3&lt;/a&gt;). Here is the new ccnet.config: 
&lt;p&gt;
   &lt;font face="Courier New" size=1&gt;&amp;lt;cruisecontrol&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;project 
   &lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name="ProjectX"&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;webURL="http:\\localhost\ccnet"&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;workingDirectory="C:\Buildserver"&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;sourcecontrol type="vss" autoGetSource="true"
   applyLabel="false"&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;executable&amp;gt;C:\Program
   Files\Microsoft Visual SourceSafe\Common\Vss\template\win32\SS.EXE&amp;lt;/executable&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;project&amp;gt;$/Projects\ProjectX\xxxxx.ProjectX&amp;lt;/project&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;username&amp;gt;VSSUser&amp;lt;/username&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;password&amp;gt;VSSPws&amp;lt;/password&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ssdir&amp;gt;\\path
   to VSS DB\SourceDB&amp;lt;/ssdir&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;workingDirectory&amp;gt;Buildserver\ProjectX&amp;lt;/workingDirectory&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;cleanCopy&amp;gt;true&amp;lt;/cleanCopy&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/sourcecontrol&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tasks&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;nant&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   &amp;lt;executable&amp;gt;Tools\Nant\bin\nant.exe&amp;lt;/executable&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   &amp;lt;buildArgs&amp;gt;"-D:outputType=Xml"&amp;lt;/buildArgs&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   &amp;lt;nologo&amp;gt;false&amp;lt;/nologo&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   &amp;lt;buildFile&amp;gt;Projects\ProjectX\ProjectXSolution\xxxxx.ProjectX\master.build&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   &amp;lt;/buildFile&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   &amp;lt;targetList&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   &amp;lt;target&amp;gt;&amp;lt;/target&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   &amp;lt;/targetList&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   &amp;lt;buildTimeoutSeconds&amp;gt;1200&amp;lt;/buildTimeoutSeconds&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/nant&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tasks&amp;gt;&lt;br&gt;
   &amp;nbsp; &amp;lt;/project&amp;gt;&lt;br&gt;
   &amp;lt;/cruisecontrol&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   As you can see we refer to the master.build file of our first project. Later this
   will be changed to all.build in the Buildscripts.
&lt;/p&gt;
&lt;h6&gt;Buildscripts
&lt;/h6&gt;
&lt;p&gt;
   OK let's start with our buildscripts. As you can see Nant uses a Buildscript to know
   which projects to build and in which order (all.build – will be our general script
   in a later phase). For each project there is also a project bound script (master.build).
   In this build file, we define which files are needed to build that specific project.&amp;nbsp;
   As first step we will refer to the master.build for one project so we can test if
   our buildserver is working correctly.
&lt;/p&gt;
&lt;p&gt;
   Here's an example of a master.build file :
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Courier New" size=1&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br&gt;
   &amp;lt;project name="xxxxx.ProjectX" default="xxxxx.ProjectX.Build" xmlns="&lt;/font&gt;&lt;a href='http://nant.sf.net/release/0.85-rc3/nant.xsd"'&gt;&lt;font face="Courier New" size=1&gt;http://nant.sf.net/release/0.85-rc3/nant.xsd"&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New" size=1&gt;&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- #################################################### --&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Settings --&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- #################################################### --&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="project.type" value="library" /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="project.FormalName" value="xxxxx.ProjectX" /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="project.build.dir" value="${bin.intern.dir}"
   /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="project.output" value="${project.build.dir}\${project.FormalName}.dll"
   /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="rootNamespace" value="xxxxx.ProjectX" /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="src.dir" value="${src.root.dir}\${project.FormalName}"
   /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="project.define" value="${vbc.define}" /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include buildfile="../generictargets.build" /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- #################################################### --&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Project xxxxx.ProjectX--&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- #################################################### --&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name="xxxxx.ProjectX.Compile" description="Compile project"&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;csc target="${project.type}" output="${project.output}"
   debug="${vbc.debug}" define="${project.define}"&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;sources&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   &amp;lt;include name="${src.dir}\AssemblyInfo.cs" /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   &amp;lt;include name="${src.dir}\Class1.cs" /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/sources&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;references&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   &amp;lt;include name="System.dll" /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   &amp;lt;include name="System.Data.dll" /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   &amp;lt;include name="System.Xml.dll" /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   &amp;lt;include name="${project.build.dir}/xxxxx.ProjectY.dll" /&amp;gt;&amp;nbsp;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/references&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/csc&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- #################################################### --&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Start --&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- #################################################### --&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name="xxxxx.ProjectX.Build"&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;call target="xxxxx.Version" if="${project.version}"
   /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;call target="xxxxx.ProjectX.Compile"
   /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;call target="xxxxx.DEV" if="${build.type.deploy}"
   /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;call target="xxxxx.TST" if="${build.type.deploy}"
   /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;call target="xxxxx.PRD" if="${build.type.deploy}"
   /&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&lt;br&gt;
   &amp;lt;/project&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   In our next chapter we will show you how you can create the master.build file automaticly.
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
   Overview Buildserver chapters on my blog : 
&lt;p&gt;
   &lt;a href="http://blog.svencipido.be/Blog/Build+Server++Part+1++Introduction.aspx"&gt;Chapter
   1 : Introduction&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+2++CruiseControlNet.aspx"&gt;Chapter
   2 : CruiseControl.Net&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+3++Projects.aspx"&gt;Chapter
   3 : Projects&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+4+Ndash+Project+Structure.aspx"&gt;Chapter
   4 : Project Structure&lt;/a&gt;
   &lt;br&gt;
   Chapter 5 : NAnt and all our buildscripts
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=fdb58f59-7fd6-449e-a354-c3df43fb5e01" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,fdb58f59-7fd6-449e-a354-c3df43fb5e01.aspx</comments>
      <category>.Net;Buildserver</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=385e8a11-a0e6-4358-b9e9-9e5d7aa44b5d</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,385e8a11-a0e6-4358-b9e9-9e5d7aa44b5d.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,385e8a11-a0e6-4358-b9e9-9e5d7aa44b5d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=385e8a11-a0e6-4358-b9e9-9e5d7aa44b5d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Finally the next part of my Buildserver article.  This time about the the project
      structure we are using.
   </p>
        <p>
      First of all, let's see our project structure in Sourcesafe :
   </p>
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/visualsourcesafeStructure.png" border="0" />
        </p>
        <p>
      We can locate following folders:
   </p>
        <ul>
          <li>
         Sources : Still in the project folder 
      </li>
          <li>
         BinIntern : The project compiled assemblies 
      </li>
          <li>
         BinExtern : external assemblies 
      </li>
          <li>
         Release : The officially deployed assemblies 
      </li>
          <li>
         Buildscripts: All the Cruisecontrol.net, Nant (MsBuild) scripts are located here.
         This folder has also a subfolder for each Visual Studio Project. In here you can find
         the master.build script for each project specifically. 
      </li>
          <li>
         Tools: All the correct versions of the tools (= the versions which are used in the
         scripts and sources). 
      </li>
          <li>
         Server and WebDashboard: Contains the configuration of CruiseControl.net like config
         files, projects, reports, style sheets…</li>
        </ul>
        <p>
      This is it for this part.  Be sure to stayed tuned for the next part, as we will
      start with our first NAnt scripts.
   </p>
        <p>
          <hr />
        </p>
        <p>
        </p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <font face="Verdana" color="#003300" size="2">
              <p>
         Overview Buildserver chapters on my blog : 
      </p>
              <p>
                <a href="http://blog.svencipido.be/Blog/Build+Server++Part+1++Introduction.aspx">Chapter
         1 : Introduction</a>
                <br />
                <a href="http://blog.svencipido.be/Blog/Build+Server+Part+2++CruiseControlNet.aspx">Chapter
         2 : CruiseControl.Net</a>
                <br />
                <a href="http://blog.svencipido.be/Blog/Build+Server+Part+3++Projects.aspx">Chapter
         3 : Projects</a>
                <br />
         Chapter 4 : Project Structure<br /><a href="http://blog.svencipido.be/Blog/Build+Server+Part+5+Ndash+NAnt+And+All+Our+Buildscripts.aspx">Chapter
         5 : NAnt and all our buildscripts</a></p>
            </font>
          </span>
          <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=385e8a11-a0e6-4358-b9e9-9e5d7aa44b5d" />
          <br />
          <hr />
      My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido
   </p>
      </body>
      <title>Build server: Part 4 &amp;ndash; Project Structure</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,385e8a11-a0e6-4358-b9e9-9e5d7aa44b5d.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Build+Server+Part+4+Ndash+Project+Structure.aspx</link>
      <pubDate>Tue, 10 Apr 2007 07:13:40 GMT</pubDate>
      <description>&lt;p&gt;
   Finally the next part of my Buildserver article.&amp;nbsp; This time about the the project
   structure we are using.
&lt;/p&gt;
&lt;p&gt;
   First of all, let's see our project structure in Sourcesafe :
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/visualsourcesafeStructure.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   We can locate following folders:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Sources : Still in the project folder 
   &lt;li&gt;
      BinIntern : The project compiled assemblies 
   &lt;li&gt;
      BinExtern : external assemblies 
   &lt;li&gt;
      Release : The officially deployed assemblies 
   &lt;li&gt;
      Buildscripts: All the Cruisecontrol.net, Nant (MsBuild) scripts are located here.
      This folder has also a subfolder for each Visual Studio Project. In here you can find
      the master.build script for each project specifically. 
   &lt;li&gt;
      Tools: All the correct versions of the tools (= the versions which are used in the
      scripts and sources). 
   &lt;li&gt;
      Server and WebDashboard: Contains the configuration of CruiseControl.net like config
      files, projects, reports, style sheets…&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   This is it for this part.&amp;nbsp; Be sure to stayed tuned for the next part, as we will
   start with our first NAnt scripts.
&lt;/p&gt;
&lt;p&gt;
   &lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana color=#003300 size=2&gt; 
   &lt;p&gt;
      Overview Buildserver chapters on my blog : 
   &lt;p&gt;
      &lt;a href="http://blog.svencipido.be/Blog/Build+Server++Part+1++Introduction.aspx"&gt;Chapter
      1 : Introduction&lt;/a&gt;
      &lt;br&gt;
      &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+2++CruiseControlNet.aspx"&gt;Chapter
      2 : CruiseControl.Net&lt;/a&gt;
      &lt;br&gt;
      &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+3++Projects.aspx"&gt;Chapter
      3 : Projects&lt;/a&gt;
      &lt;br&gt;
      Chapter 4 : Project Structure&lt;br&gt;
      &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+5+Ndash+NAnt+And+All+Our+Buildscripts.aspx"&gt;Chapter
      5 : NAnt and all our buildscripts&lt;/a&gt;
   &lt;/p&gt;
   &lt;/font&gt;&lt;/span&gt;&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=385e8a11-a0e6-4358-b9e9-9e5d7aa44b5d" /&gt;
   &lt;br /&gt;
   &lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,385e8a11-a0e6-4358-b9e9-9e5d7aa44b5d.aspx</comments>
      <category>.Net;Buildserver</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=99c17bf2-8f04-486f-9979-9c7f59f7bce3</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,99c17bf2-8f04-486f-9979-9c7f59f7bce3.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,99c17bf2-8f04-486f-9979-9c7f59f7bce3.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=99c17bf2-8f04-486f-9979-9c7f59f7bce3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      At this moment I’m busy with creating a windows service with following specifications:
   </p>
        <ul>
          <li>
         Host a web service in this windows service without using IIS</li>
          <li>
         On one site the communication uses TCP Sockets</li>
          <li>
         On the other site the communication uses SOAP messages</li>
          <li>
         Above all of this, the whole thing must work Asynchronous.</li>
        </ul>
        <p>
      Yesterday in my RSS Feeds, I came to an interesting site for using this in ASP.Net. 
      Just follow this link <a href="http://gbarnett.org/archive/2007/02/08/asynchronous-programming-in-asp-net.aspx">http://gbarnett.org/archive/2007/02/08/asynchronous-programming-in-asp-net.aspx</a>.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=99c17bf2-8f04-486f-9979-9c7f59f7bce3" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Asynchronous Programming in .Net</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,99c17bf2-8f04-486f-9979-9c7f59f7bce3.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Asynchronous+Programming+In+Net.aspx</link>
      <pubDate>Fri, 09 Feb 2007 08:33:34 GMT</pubDate>
      <description>&lt;p&gt;
   At this moment I’m busy with creating a windows service with following specifications:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Host a web service in this windows service without using IIS&lt;/li&gt;
   &lt;li&gt;
      On one site the communication uses TCP Sockets&lt;/li&gt;
   &lt;li&gt;
      On the other site the communication uses SOAP messages&lt;/li&gt;
   &lt;li&gt;
      Above all of this, the whole thing must work Asynchronous.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Yesterday in my RSS Feeds,&amp;nbsp;I came to an interesting site for using this in ASP.Net.&amp;nbsp;
   Just follow this link &lt;a href="http://gbarnett.org/archive/2007/02/08/asynchronous-programming-in-asp-net.aspx"&gt;http://gbarnett.org/archive/2007/02/08/asynchronous-programming-in-asp-net.aspx&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=99c17bf2-8f04-486f-9979-9c7f59f7bce3" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,99c17bf2-8f04-486f-9979-9c7f59f7bce3.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=dd2b6cff-edab-4a0a-a1b4-d82afa142e19</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,dd2b6cff-edab-4a0a-a1b4-d82afa142e19.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,dd2b6cff-edab-4a0a-a1b4-d82afa142e19.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=dd2b6cff-edab-4a0a-a1b4-d82afa142e19</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      For the first time, Scott Guthrie will come to Belgium.
   </p>
        <p>
      Read more and register @ the <a href="http://www.visug.be">VISUG website</a>.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=dd2b6cff-edab-4a0a-a1b4-d82afa142e19" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>News : Scott Guthrie comes to Belgium</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,dd2b6cff-edab-4a0a-a1b4-d82afa142e19.aspx</guid>
      <link>http://blog.svencipido.be/Blog/News++Scott+Guthrie+Comes+To+Belgium.aspx</link>
      <pubDate>Mon, 22 Jan 2007 12:29:58 GMT</pubDate>
      <description>&lt;p&gt;
   For the first time, Scott Guthrie will come to Belgium.
&lt;/p&gt;
&lt;p&gt;
   Read more and register&amp;nbsp;@ the &lt;a href="http://www.visug.be"&gt;VISUG website&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=dd2b6cff-edab-4a0a-a1b4-d82afa142e19" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,dd2b6cff-edab-4a0a-a1b4-d82afa142e19.aspx</comments>
      <category>.Net;News</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=d43991ab-de4a-4982-853a-4d57e0cf0074</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,d43991ab-de4a-4982-853a-4d57e0cf0074.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,d43991ab-de4a-4982-853a-4d57e0cf0074.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d43991ab-de4a-4982-853a-4d57e0cf0074</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      This means that you can’t post values containing HTML or script tags.  So when
      you have an ASP.Net page with a textbox on it, and your users enters something like 
   </p>
        <p>
          <img height="156" src="http://blog.svencipido.be/Blog/content/binary/textboxwithhtmltags.png" width="439" border="0" />
        </p>
        <p>
      And then the user press a submit button, they get this error. 
      <br />
      More info about this can be found <a href="http://www.asp.net/faq/RequestValidation.aspx">here</a>.
   </p>
        <p>
      Just change the page-directive on top of your page by adding the tag "validateRequest". 
      Set this tag to false and your users are able to add HTML tags in your textbox.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=d43991ab-de4a-4982-853a-4d57e0cf0074" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>A potentially dangerous Request.Form value was detected from the client</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,d43991ab-de4a-4982-853a-4d57e0cf0074.aspx</guid>
      <link>http://blog.svencipido.be/Blog/A+Potentially+Dangerous+RequestForm+Value+Was+Detected+From+The+Client.aspx</link>
      <pubDate>Fri, 05 Jan 2007 09:21:40 GMT</pubDate>
      <description>&lt;p&gt;
   This means that you can’t post values containing HTML or script tags.&amp;nbsp; So when
   you have an ASP.Net page with a textbox on it, and your users enters something like 
&lt;/p&gt;
&lt;p&gt;
   &lt;img height=156 src="http://blog.svencipido.be/Blog/content/binary/textboxwithhtmltags.png" width=439 border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   And then the user press a submit button, they get this error. 
   &lt;br&gt;
   More info about this can be found &lt;a href="http://www.asp.net/faq/RequestValidation.aspx"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   Just change the page-directive on top of your page by adding the tag "validateRequest".&amp;nbsp;
   Set this tag to false and your users are able to add HTML tags in your textbox.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=d43991ab-de4a-4982-853a-4d57e0cf0074" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,d43991ab-de4a-4982-853a-4d57e0cf0074.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=24a0e50c-4f53-4bce-9554-1c989b343eca</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,24a0e50c-4f53-4bce-9554-1c989b343eca.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,24a0e50c-4f53-4bce-9554-1c989b343eca.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=24a0e50c-4f53-4bce-9554-1c989b343eca</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      I got this error when accessing an ashx file, wich returns some data to me. 
      After trying to figure out what the problem is, I came to this solution.
   </p>
        <p>
      It seems that .Net closes connections prior to it being finished.  I think
      it's a bug in .net which concerns me.  
   </p>
        <p>
      Find a solution here : <a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;915599">http://support.microsoft.com/default.aspx?scid=kb;EN-US;915599</a></p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=24a0e50c-4f53-4bce-9554-1c989b343eca" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive.</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,24a0e50c-4f53-4bce-9554-1c989b343eca.aspx</guid>
      <link>http://blog.svencipido.be/Blog/SystemNetWebException+The+Underlying+Connection+Was+Closed+An+Unexpected+Error+Occurred+On+A+Receive.aspx</link>
      <pubDate>Fri, 05 Jan 2007 07:34:32 GMT</pubDate>
      <description>&lt;p&gt;
   I got this error when accessing an ashx file, wich returns some data to me.&amp;nbsp;
   After trying to figure out what the problem is, I came to this solution.
&lt;/p&gt;
&lt;p&gt;
   It seems that .Net closes connections prior to it being finished.&amp;nbsp;&amp;nbsp;I think
   it's a bug in .net which&amp;nbsp;concerns me.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   Find a solution here : &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;915599"&gt;http://support.microsoft.com/default.aspx?scid=kb;EN-US;915599&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=24a0e50c-4f53-4bce-9554-1c989b343eca" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,24a0e50c-4f53-4bce-9554-1c989b343eca.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=888cf75a-737b-4793-bb55-1b0942b6cbfc</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,888cf75a-737b-4793-bb55-1b0942b6cbfc.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,888cf75a-737b-4793-bb55-1b0942b6cbfc.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=888cf75a-737b-4793-bb55-1b0942b6cbfc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Here at the customer we are encountering a problem when calling our .Net web applications. 
      Many users are getting a HTTP 400 – Bad Request error (Request Header Too Long).  
   </p>
        <p>
      After many investigations with other people who do not have this problem when connecting
      to the web applications, it seems that only users who are belonging to too many groups
      (&gt;300) get this error.
   </p>
        <p>
      Here are a few articles on this problem:<br /><a href="http://support.microsoft.com/kb/327825">http://support.microsoft.com/kb/327825</a><br /><a href="http://support.microsoft.com/kb/269643/">http://support.microsoft.com/kb/269643/</a><br /><a href="http://support.microsoft.com/kb/263693/">http://support.microsoft.com/kb/263693/</a></p>
        <p>
      After checking the workaround proposed in these articles (increasing the MaxTokenSize
      value to 65535), but it is already done on our workstations!  According these
      articles, "<strong>the token size to 65 KB allows a user to be present in more than
      900 groups. Because of the associated SID information, this number may vary</strong>”. 
      In addition, the naming conventions used here for security groups do not help!
   </p>
        <p>
      If you want to check in which group you belong, you can use following command in a
      DOS box: 
   </p>
        <p>
      ismember /list
   </p>
        <p>
      If you want to know, the total groups use this command:
   </p>
        <p>
      ismember /list|find "User" /c
   </p>
        <p>
      For myself, at this moment, I belong to 478 groups.
   </p>
        <p>
      At For the moment, we do not have a solution for this problem.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=888cf75a-737b-4793-bb55-1b0942b6cbfc" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>HTTP400 – Bad Request</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,888cf75a-737b-4793-bb55-1b0942b6cbfc.aspx</guid>
      <link>http://blog.svencipido.be/Blog/HTTP400++Bad+Request.aspx</link>
      <pubDate>Thu, 19 Oct 2006 15:53:45 GMT</pubDate>
      <description>&lt;p&gt;
   Here at the customer we are encountering a problem when calling our .Net web applications.&amp;nbsp;
   Many users are getting a HTTP 400 – Bad Request error (Request Header Too Long).&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   After many investigations with other people who do not have this problem when connecting
   to the web applications, it seems that only users who are belonging to too many groups
   (&amp;gt;300) get this error.
&lt;/p&gt;
&lt;p&gt;
   Here are a few articles on this problem:&lt;br&gt;
   &lt;a href="http://support.microsoft.com/kb/327825"&gt;http://support.microsoft.com/kb/327825&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="http://support.microsoft.com/kb/269643/"&gt;http://support.microsoft.com/kb/269643/&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="http://support.microsoft.com/kb/263693/"&gt;http://support.microsoft.com/kb/263693/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   After checking the workaround proposed in these articles (increasing the MaxTokenSize
   value to 65535), but it is already done on our workstations!&amp;nbsp; According these
   articles, "&lt;strong&gt;the token size to 65 KB allows a user to be present in more than
   900 groups. Because of the associated SID information, this number may vary&lt;/strong&gt;”.&amp;nbsp;
   In addition, the naming conventions used here for security groups do not help!
&lt;/p&gt;
&lt;p&gt;
   If you want to check in which group you belong, you can use following command in a
   DOS box: 
&lt;/p&gt;
&lt;p&gt;
   ismember /list
&lt;/p&gt;
&lt;p&gt;
   If you want to know, the total groups use this command:
&lt;/p&gt;
&lt;p&gt;
   ismember /list|find "User" /c
&lt;/p&gt;
&lt;p&gt;
   For myself, at this moment, I belong to 478 groups.
&lt;/p&gt;
&lt;p&gt;
   At For the moment, we do not have a solution for this problem.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=888cf75a-737b-4793-bb55-1b0942b6cbfc" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,888cf75a-737b-4793-bb55-1b0942b6cbfc.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=6cece8b0-ab07-4e47-98ee-548b192f6002</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,6cece8b0-ab07-4e47-98ee-548b192f6002.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,6cece8b0-ab07-4e47-98ee-548b192f6002.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6cece8b0-ab07-4e47-98ee-548b192f6002</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      I had this problem almost a year ago, but finally I've written it down.
   </p>
        <p>
      The problem I had (and sometimes other developers too) is that I don’t had administrator
      rights on my local PC.  So I called the people from security about this issue. 
      They were very helpful for this problem.  Step by step they upgrade my account
      with more rights and more rights (e.g. rights for the event log, rights for the registry…). 
      With a few of them I got a step further, but at the end I still haven’t enough rights
      to install the service.  The last step was to give the full administrator rights
      on my local PC and it’s just this step that I needed.  As following <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/service_security_and_access_rights.asp">MSDN</a> article
      states “Only processes with Administrator privileges are able to op handles to the
      Service Control Manager that can be used by the CreateService and LockServiceDatabase
      functions”.
   </p>
        <p>
      So now we had a problem.  The security people came with two solutions:
   </p>
        <ul>
          <li>
         Every time we need to send the new version to them and they will install it on the
         server.  
      </li>
          <li>
         We got a second PC with administrator rights, but not connected to the network</li>
        </ul>
        <p>
      Both solutions aren’t that great, but we choose for the second option.  Ones
      we had the PC, we add our accounts in the administrator group, so we could install
      the service with our account and we had network connection.
   </p>
        <p>
      As you can see, in some cases administrator rights as a developer are important on
      your development machine.
   </p>
        <p>
          <a href="http://www.realdn.net/msblog/UserView,user,krolsd.aspx">Diederik Krols</a> also
      blogged about this <a href="http://www.realdn.net/msblog/PermaLink,guid,2d1e516e-4432-4d0f-b3ba-1efe0f69b143.aspx">item</a>,
      and he has a nice Bart Simpson chalk board about this, which I will include here also
      and maybe you need to give this picture to security people if you encountered the
      same problem ;-).<br /></p>
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/bart_service.gif" border="0" />
        </p>
        <p>
      BTW: Dierderik was my scrum master/technical architect there and he helped me a lot
      with this issue. 
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=6cece8b0-ab07-4e47-98ee-548b192f6002" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Testing a windows Service on your local development station</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,6cece8b0-ab07-4e47-98ee-548b192f6002.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Testing+A+Windows+Service+On+Your+Local+Development+Station.aspx</link>
      <pubDate>Mon, 28 Aug 2006 18:02:17 GMT</pubDate>
      <description>&lt;p&gt;
   I had this problem almost a year ago, but finally I've written it down.
&lt;/p&gt;
&lt;p&gt;
   The problem I had (and sometimes other developers too) is that I don’t had administrator
   rights on my local PC.&amp;nbsp; So I called the people from security about this issue.&amp;nbsp;
   They were very helpful for this problem.&amp;nbsp; Step by step they upgrade my account
   with more rights and more rights (e.g. rights for the event log, rights for the registry…).&amp;nbsp;
   With a few of them I got a step further, but at the end I still haven’t enough rights
   to install the service.&amp;nbsp; The last step was to give the full administrator rights
   on my local PC and it’s just this step that I needed.&amp;nbsp; As following &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/service_security_and_access_rights.asp"&gt;MSDN&lt;/a&gt; article
   states “Only processes with Administrator privileges are able to op handles to the
   Service Control Manager that can be used by the CreateService and LockServiceDatabase
   functions”.
&lt;/p&gt;
&lt;p&gt;
   So now we had a problem.&amp;nbsp; The security people came with two solutions:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Every time we need to send the new version to them and they will install it on the
      server.&amp;nbsp; 
   &lt;li&gt;
      We got a second PC with administrator rights, but not connected to the network&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Both solutions aren’t that great, but we choose for the second option.&amp;nbsp; Ones
   we had the PC, we add our accounts in the administrator group, so we could install
   the service with our account and we had network connection.
&lt;/p&gt;
&lt;p&gt;
   As you can see, in some cases administrator rights as a developer are important on
   your development machine.
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.realdn.net/msblog/UserView,user,krolsd.aspx"&gt;Diederik Krols&lt;/a&gt; also
   blogged about this &lt;a href="http://www.realdn.net/msblog/PermaLink,guid,2d1e516e-4432-4d0f-b3ba-1efe0f69b143.aspx"&gt;item&lt;/a&gt;,
   and he has a nice Bart Simpson chalk board about this, which I will include here also
   and maybe you need to give this picture to security people if you encountered the
   same problem ;-).&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/bart_service.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   BTW: Dierderik was my scrum master/technical architect there and he helped me a lot
   with this issue. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=6cece8b0-ab07-4e47-98ee-548b192f6002" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,6cece8b0-ab07-4e47-98ee-548b192f6002.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=e0a3bf94-e0d4-41c7-9ab9-58412ae538b3</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,e0a3bf94-e0d4-41c7-9ab9-58412ae538b3.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,e0a3bf94-e0d4-41c7-9ab9-58412ae538b3.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e0a3bf94-e0d4-41c7-9ab9-58412ae538b3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font face="Times New Roman" size="3">At my current project we came across the problem
      that we didn't receive our exception anymore but a TargetInvocationException. 
      After a little investigation we found where our exception was.  So here's a little
      explication about it.</font>
        </p>
        <p>
          <font face="Times New Roman" size="3">When using reflection to create your assemblies,
      reflection will act like remoting.  So it will invoke your method.  Hereby
      we have a proxy and the stub.  </font>
          <font face="Times New Roman" size="3">The
      moment that in the stub an exception is thrown this exception will be wrapped in a
      TargetInvocationException.  To see the real exception you can take the innerexception
      of the exception.<br /></font>
        </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=e0a3bf94-e0d4-41c7-9ab9-58412ae538b3" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Reflection and exceptions</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,e0a3bf94-e0d4-41c7-9ab9-58412ae538b3.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Reflection+And+Exceptions.aspx</link>
      <pubDate>Sat, 05 Aug 2006 14:15:30 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font face="Times New Roman" size=3&gt;At my current project we came across the problem
   that we didn't receive our exception anymore but a TargetInvocationException.&amp;nbsp;
   After a little investigation we found where our exception was.&amp;nbsp; So here's a little
   explication about it.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Times New Roman" size=3&gt;When using reflection to create your assemblies,
   reflection will act like remoting.&amp;nbsp; So it will invoke your method.&amp;nbsp; Hereby
   we have a proxy and the stub.&amp;nbsp; &lt;/font&gt;&lt;font face="Times New Roman" size=3&gt;The
   moment that in the stub an exception is thrown this exception will be wrapped in a
   TargetInvocationException.&amp;nbsp; To see the real exception you can take the innerexception
   of the exception.&lt;br&gt;
   &lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=e0a3bf94-e0d4-41c7-9ab9-58412ae538b3" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,e0a3bf94-e0d4-41c7-9ab9-58412ae538b3.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=bb584def-3b17-4255-ab30-d2fb1ad7fa23</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,bb584def-3b17-4255-ab30-d2fb1ad7fa23.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,bb584def-3b17-4255-ab30-d2fb1ad7fa23.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=bb584def-3b17-4255-ab30-d2fb1ad7fa23</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h2>
          <span lang="NL-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: NL-BE; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">Projects
      in CruiseControl.Net</span>
        </h2>
        <span lang="NL-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: NL-BE; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">
          <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
            <font color="#000000">The CruiseControl.Net tasks are divided in ‘Projects’. 
      There are several kinds of projects.  This is a possible list of projects on
      the server :</font>
          </p>
          <ul>
            <li>
              <div class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
                <font color="#000000">The Continuous
            Integration Build of an application</font>
              </div>
            </li>
            <li>
              <div class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
                <font color="#000000">The Deployment
            Build of an application</font>
              </div>
            </li>
            <li>
              <div class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
                <font color="#000000">Automatic
            generation of buildscripts for the Visual Studio projects of an application</font>
              </div>
            </li>
            <li>
              <font color="#000000">…</font>
            </li>
          </ul>
          <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
            <font color="#000000">The technical project leader or the architect/designer could
      also define specific projects on the server.</font>
          </p>
          <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
            <font color="#000000">
            </font> 
   </p>
          <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
            <font color="#000000">e.g. only checking FxCop rules, or only run the unit testing,...</font>
          </p>
          <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
            <font color="#000000">
            </font> 
   </p>
          <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
            <font color="#000000">Projects are defined in the XML way in ccnet.config.  It
      just a list of projects defined one after the other one.  But keep in mind that
      those projects could be run <strong><u>parallel</u></strong> (and they will).</font>
          </p>
          <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
            <font color="#000000">
            </font> 
   </p>
          <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
            <font color="#000000">For each project you have to create a &lt;Project&gt; element
      with following attributes:</font>
          </p>
          <ul>
            <li>
              <div class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
                <font color="#000000">Name</font>
              </div>
            </li>
            <li>
              <div class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
                <font color="#000000">Work
            folders</font>
              </div>
            </li>
            <li>
              <div class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
                <font color="#000000">Links
            with source control</font>
              </div>
            </li>
            <li>
              <div class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
                <font color="#000000">Running
            scripts.  These are Nant Targets who can be separated in activities</font>
              </div>
            </li>
            <li>
              <div class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
                <font color="#000000">Triggers</font>
              </div>
            </li>
            <li>
              <div class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
                <font color="#000000">…</font>
              </div>
            </li>
          </ul>
          <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
            <font color="#000000">The official documentation of the &lt;Project&gt; element can
      be found <a href="http://confluence.public.thoughtworks.org/display/CCNET/Project+Configuration+Block">here </a>.</font>
          </p>
          <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
            <font color="#000000">
            </font> 
   </p>
          <h2 class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
            <font size="3">Continuous
      Integration Build</font>
          </h2>
          <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
      It’s a good thing to analyze and describe each project in the first place in a Use
      Case.
   </p>
          <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
       
   </p>
          <p>
          </p>
        </span>
        <img src="http://blog.svencipido.be/Blog/content/binary/Continuous%20Integration%20Build%20Use%20Case.png" border="0" />
        <p>
      After this, you are able to create a sequence diagram :
   </p>
        <p>
       
   </p>
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/Continuous%20Integration%20Build%20Sequence%20Diagram.png" border="0" />
        </p>
        <h2>
          <font size="3">Basic configuration of a Continuous Integration Build project</font>
        </h2>
        <p>
      Here we will describe the first step for our configuration.  It’s very basic. 
      We just at our project and source control.  We will add other features like tasks,
      publishers,... later on.
   </p>
        <p>
      So first create a working directory for your build server.  We propose for this
      ‘c:\buildserver’.
   </p>
        <p>
      Secondly we will add the project to the cruise control server.  To
      do this, open the ccnet.config file in the C:\Program Files\CruiseControl.NET\server
      directory.
   </p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">&lt;cruisecontrol&gt;<br />
          &lt;project 
      <br />
              name=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"ProjectX"</span><br />
              webURL=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"http:\\localhost\ccnet"</span><br />
              workingDirectory=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"C:\Buildserver"</span>&gt;<br />
              &lt;sourcecontrol type=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"vss"</span> autoGetSource=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"true"</span> applyLabel=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"false"</span>&gt;<br />
                  &lt;executable&gt;C:\Program
      Files\Microsoft Visual SourceSafe\Common\Vss\template\win32\SS.EXE&lt;/executable&gt;<br />
                  &lt;project&gt;$/Projects\ProjectX\xxxxx.ProjectX&lt;/project&gt;<br />
                  &lt;username&gt;VSSUser&lt;/username&gt;<br />
                  &lt;password&gt;VSSPws&lt;/password&gt;<br />
                  &lt;ssdir&gt;\\path
      to VSS DB\SourceDB&lt;/ssdir&gt;<br />
                  &lt;workingDirectory&gt;Buildserver\ProjectX&lt;/workingDirectory&gt;<br />
                  &lt;cleanCopy&gt;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">true</span>&lt;/cleanCopy&gt;<br />
              &lt;/sourcecontrol&gt;<br />
          &lt;/project&gt;<br />
      &lt;/cruisecontrol&gt;</span>
        </p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <font face="Verdana" color="#003300" size="2">
              <hr />
            </font>
          </span>
        </p>
        <p>
        </p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <font face="Verdana" color="#003300" size="2">
              <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
                <font face="Verdana" color="#003300" size="2"> 
      </font>
              </span>
            </font>
          </span>
        </p>
        <p>
      Overview Buildserver chapters on my blog : 
   </p>
        <p>
          <a href="http://blog.svencipido.be/Blog/Build+Server++Part+1++Introduction.aspx">Chapter
      1 : Introduction</a>
          <br />
          <a href="http://blog.svencipido.be/Blog/Build+Server+Part+2++CruiseControlNet.aspx">Chapter
      2 : CruiseControl.Net</a>
          <br />
      Chapter 3 : Projects<br /><a href="http://blog.svencipido.be/Blog/Build+Server+Part+4+Ndash+Project+Structure.aspx">Chapter
      4 : Project Structure</a><br /><a href="http://blog.svencipido.be/Blog/Build+Server+Part+5+Ndash+NAnt+And+All+Our+Buildscripts.aspx">Chapter
      5 : NAnt and all our buildscripts</a></p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=bb584def-3b17-4255-ab30-d2fb1ad7fa23" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Build server: Part 3 – Projects</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,bb584def-3b17-4255-ab30-d2fb1ad7fa23.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Build+Server+Part+3++Projects.aspx</link>
      <pubDate>Thu, 08 Jun 2006 19:07:00 GMT</pubDate>
      <description>&lt;h2&gt;&lt;span lang=NL-BE style="FONT-SIZE: 11pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: NL-BE; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt"&gt;Projects
   in CruiseControl.Net&lt;/span&gt;
&lt;/h2&gt;
&lt;span lang=NL-BE style="FONT-SIZE: 11pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: NL-BE; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt"&gt; 
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;font color=#000000&gt;The CruiseControl.Net tasks are divided in ‘Projects’.&amp;nbsp; There
   are several kinds of projects.&amp;nbsp; This is a possible list of projects on the server
   :&lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;font color=#000000&gt;The Continuous
         Integration Build of an application&lt;/font&gt;
      &lt;/div&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;font color=#000000&gt;The Deployment
         Build of an application&lt;/font&gt;
      &lt;/div&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;font color=#000000&gt;Automatic generation
         of buildscripts for the Visual Studio projects of an application&lt;/font&gt;
      &lt;/div&gt;
   &lt;li&gt;
      &lt;font color=#000000&gt;…&lt;/font&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;font color=#000000&gt;The technical project leader or the architect/designer could also
   define specific projects on the server.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;font color=#000000&gt;e.g. only checking FxCop rules, or only run the unit testing,...&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;
   &lt;font color=#000000&gt;Projects are defined in the XML way in ccnet.config.&amp;nbsp; It
   just a list of projects defined one after the other one.&amp;nbsp; But keep in mind that
   those projects could be run &lt;strong&gt;&lt;u&gt;parallel&lt;/u&gt;&lt;/strong&gt; (and they will).&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;
   &lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;
   &lt;font color=#000000&gt;For each project you have to create a &amp;lt;Project&amp;gt; element
   with following attributes:&lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;font color=#000000&gt;Name&lt;/font&gt;
      &lt;/div&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;font color=#000000&gt;Work
         folders&lt;/font&gt;
      &lt;/div&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;font color=#000000&gt;Links
         with source control&lt;/font&gt;
      &lt;/div&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;font color=#000000&gt;Running
         scripts.&amp;nbsp; These are Nant Targets who can be separated in activities&lt;/font&gt;
      &lt;/div&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;font color=#000000&gt;Triggers&lt;/font&gt;
      &lt;/div&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;font color=#000000&gt;…&lt;/font&gt;
      &lt;/div&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;
   &lt;font color=#000000&gt;The official documentation of the &amp;lt;Project&amp;gt; element can
   be found &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Project+Configuration+Block"&gt;here &lt;/a&gt;.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;
   &lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;h2 class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;font size=3&gt;Continuous
   Integration Build&lt;/font&gt;
&lt;/h2&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;
   It’s a good thing to analyze and describe each project in the first place in a Use
   Case.
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;/span&gt;&lt;img src="http://blog.svencipido.be/Blog/content/binary/Continuous%20Integration%20Build%20Use%20Case.png" border=0&gt;&gt;
&lt;p&gt;
   After this, you&amp;nbsp;are able to&amp;nbsp;create a sequence diagram :
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/Continuous%20Integration%20Build%20Sequence%20Diagram.png" border=0&gt;
&lt;/p&gt;
&lt;h2&gt;&lt;font size=3&gt;Basic configuration of a Continuous Integration Build project&lt;/font&gt;
&lt;/h2&gt;
&lt;p&gt;
   Here we will describe the first step for our configuration.&amp;nbsp; It’s very basic.&amp;nbsp;
   We just at our project and source control.&amp;nbsp; We will add other features like tasks,
   publishers,... later on.
&lt;/p&gt;
&lt;p&gt;
   So first create a working directory for your build server.&amp;nbsp; We propose for this
   ‘c:\buildserver’.
&lt;/p&gt;
&lt;p&gt;
   Secondly we will add the project to&amp;nbsp;the cruise control server.&amp;nbsp;&amp;nbsp;To
   do this, open the ccnet.config file in the&amp;nbsp;C:\Program Files\CruiseControl.NET\server
   directory.
&lt;/p&gt;
&lt;p&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;lt;cruisecontrol&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;project 
   &lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name=&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"ProjectX"&lt;/span&gt; 
   &lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;webURL=&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"http:\\localhost\ccnet"&lt;/span&gt; 
   &lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;workingDirectory=&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"C:\Buildserver"&lt;/span&gt;&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;sourcecontrol type=&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"vss"&lt;/span&gt; autoGetSource=&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"true"&lt;/span&gt; applyLabel=&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"false"&lt;/span&gt;&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;executable&amp;gt;C:\Program
   Files\Microsoft Visual SourceSafe\Common\Vss\template\win32\SS.EXE&amp;lt;/executable&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;project&amp;gt;$/Projects\ProjectX\xxxxx.ProjectX&amp;lt;/project&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;username&amp;gt;VSSUser&amp;lt;/username&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;password&amp;gt;VSSPws&amp;lt;/password&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ssdir&amp;gt;\\path
   to VSS DB\SourceDB&amp;lt;/ssdir&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;workingDirectory&amp;gt;Buildserver\ProjectX&amp;lt;/workingDirectory&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;cleanCopy&amp;gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;true&lt;/span&gt;&amp;lt;/cleanCopy&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/sourcecontrol&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/project&amp;gt;&lt;br&gt;
   &amp;lt;/cruisecontrol&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana color=#003300 size=2&gt; 
   &lt;hr&gt;
   &lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana color=#003300 size=2&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana color=#003300 size=2&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   Overview Buildserver chapters on my blog : 
&lt;p&gt;
   &lt;a href="http://blog.svencipido.be/Blog/Build+Server++Part+1++Introduction.aspx"&gt;Chapter
   1 : Introduction&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+2++CruiseControlNet.aspx"&gt;Chapter
   2 : CruiseControl.Net&lt;/a&gt;
   &lt;br&gt;
   Chapter 3 : Projects&lt;br&gt;
   &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+4+Ndash+Project+Structure.aspx"&gt;Chapter
   4 : Project Structure&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+5+Ndash+NAnt+And+All+Our+Buildscripts.aspx"&gt;Chapter
   5 : NAnt and all our buildscripts&lt;/a&gt;
&lt;/p&gt;
&gt;&gt;&gt;&gt;&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=bb584def-3b17-4255-ab30-d2fb1ad7fa23" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,bb584def-3b17-4255-ab30-d2fb1ad7fa23.aspx</comments>
      <category>.Net;Buildserver</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=00975973-1248-4cb5-965b-f3023e5ece5f</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,00975973-1248-4cb5-965b-f3023e5ece5f.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,00975973-1248-4cb5-965b-f3023e5ece5f.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=00975973-1248-4cb5-965b-f3023e5ece5f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      At this moment I'm diving into Design Patterns and Business Objects.  Later I
      will blog more about these items, but now I just put down the resources I have at
      this moment:
   </p>
        <ul>
          <li>
         First of all: <a href="http://msdn.microsoft.com/practices/">Microsoft Patterns &amp;
         Practices Developer Center</a> </li>
          <li>
         Basic article about Design Patterns: <a href="http://msdn.microsoft.com/msdnmag/issues/01/07/patterns/">http://msdn.microsoft.com/msdnmag/issues/01/07/patterns/</a></li>
          <li>
         Great .Net examples can be found @ <a href="http://www.dofactory.com/">Data &amp;
         Object Factory</a>.  It includes the GoF patterns in C#, Service Oriented Architecture
         Design Patterns, The Head First Design Patterns converted from Java to .Net and more</li>
          <li>
         About the <a href="http://www.c-sharpcorner.com/UploadFile/PashuSX/PrototypeDesignPattern05042006112741AM/PrototypeDesignPattern.aspx">prototyping
         Design Pattern</a> </li>
          <li>
            <a href="http://www.lhotka.net/">LHotka site</a> with a great example CSLA.Net</li>
        </ul>
        <p>
      I also have bought a few books:
   </p>
        <ul>
          <li>
         Head First Design Patterns (Eric &amp; Elisabeth Freeman), which I'm reading now. 
         This book has it's examples in Java, but that should be no problem.</li>
          <li>
         Expert C#2005 Business Objects (Rockford LHotka)</li>
        </ul>
        <p>
      At the project I'm working this moment, we are using Design Patterns like the state
      Machine Pattern.  We have created a base business object based on LHotka. 
      We have included the rule manager for broken rules of LHotka.  At last we also
      included the use of property bags (-Collections).  We have prepared the base
      in the first project.  All of this will be extended during the next projects. 
      We have seen that we have the need for some extensions, but have chosen for the pragmatic
      approach (also because of the project deadline ;-) ).
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=00975973-1248-4cb5-965b-f3023e5ece5f" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Design Patterns and Business Objects</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,00975973-1248-4cb5-965b-f3023e5ece5f.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Design+Patterns+And+Business+Objects.aspx</link>
      <pubDate>Tue, 16 May 2006 19:43:39 GMT</pubDate>
      <description>&lt;p&gt;
   At this moment I'm diving into Design Patterns and Business Objects.&amp;nbsp; Later I
   will blog more about these items, but now I just put down the resources I have at
   this moment:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      First of all: &lt;a href="http://msdn.microsoft.com/practices/"&gt;Microsoft Patterns &amp;amp;
      Practices Developer Center&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
   &lt;li&gt;
      Basic article about Design Patterns: &lt;a href="http://msdn.microsoft.com/msdnmag/issues/01/07/patterns/"&gt;http://msdn.microsoft.com/msdnmag/issues/01/07/patterns/&lt;/a&gt;
   &lt;/li&gt;
   &lt;li&gt;
      Great .Net examples can be found @ &lt;a href="http://www.dofactory.com/"&gt;Data &amp;amp;
      Object Factory&lt;/a&gt;.&amp;nbsp; It includes the GoF patterns in C#, Service Oriented Architecture
      Design Patterns, The Head First Design Patterns converted from Java to .Net and more&lt;/li&gt;
   &lt;li&gt;
      About the &lt;a href="http://www.c-sharpcorner.com/UploadFile/PashuSX/PrototypeDesignPattern05042006112741AM/PrototypeDesignPattern.aspx"&gt;prototyping
      Design Pattern&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://www.lhotka.net/"&gt;LHotka site&lt;/a&gt;&amp;nbsp;with a great example CSLA.Net&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   I also have bought a few books:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Head First Design Patterns (Eric &amp;amp; Elisabeth Freeman), which I'm reading now.&amp;nbsp;
      This book has it's examples in Java, but that should be no problem.&lt;/li&gt;
   &lt;li&gt;
      Expert C#2005 Business Objects (Rockford LHotka)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   At the project I'm working this moment, we are using Design Patterns like the state
   Machine Pattern.&amp;nbsp; We have created a base business object based on LHotka.&amp;nbsp;
   We have included the rule manager for broken rules of LHotka.&amp;nbsp; At last we also
   included the use of property bags (-Collections).&amp;nbsp; We have prepared the base
   in the first project.&amp;nbsp; All of this will be extended during the next projects.&amp;nbsp;
   We have seen that we have the need for some extensions, but have chosen for the pragmatic
   approach (also because of the project deadline ;-) ).
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=00975973-1248-4cb5-965b-f3023e5ece5f" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,00975973-1248-4cb5-965b-f3023e5ece5f.aspx</comments>
      <category>.Net;Patterns</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=f020b28c-1156-4817-b753-0332d49d5317</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,f020b28c-1156-4817-b753-0332d49d5317.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,f020b28c-1156-4817-b753-0332d49d5317.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=f020b28c-1156-4817-b753-0332d49d5317</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <title>Build Server: Part 2 – CruiseControl.Net</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,f020b28c-1156-4817-b753-0332d49d5317.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Build+Server+Part+2++CruiseControlNet.aspx</link>
      <pubDate>Tue, 02 May 2006 19:34:55 GMT</pubDate>
      <description>&lt;p&gt;
   First of all I want to thank &lt;a href="http://www.realdn.net/msblog/UserView,user,krolsd.aspx"&gt;Diederik
   Krols&lt;/a&gt; for his help with a few problems I had.
&lt;/p&gt;
&lt;h1&gt;CruiseControl.Net
&lt;/h1&gt;
&lt;p&gt;
   In this chapter we will explain more CruiseControl.Net and CCTray.Net.
&lt;/p&gt;
&lt;h2&gt;Installation of CruiseControl.Net
&lt;/h2&gt;
&lt;p&gt;
   Download the latest version at the &lt;a href="http://ccnet.thoughtworks.com/"&gt;Thoughtworks
   website&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   Now run the downloaded file (CruiseControl.NET-1.1-Setup.exe) to install CruiseControl.Net.&amp;nbsp;
   Just follow the instruction on screen and leave all options as default.&amp;nbsp; At the
   end restart your server.
&lt;/p&gt;
&lt;p&gt;
   Here we have encountered a problem (only one time).&amp;nbsp; It seems that our virtual
   directory isn’t created during the installation phase.&amp;nbsp; The error we got was
   that the user and password wasn’t correct, but the installation continued.
&lt;/p&gt;
&lt;p&gt;
   This could be solved by manually adding the Virtual Directory.&amp;nbsp; To do so, follow
   the next steps:
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;
      Open IIS 
   &lt;li&gt;
      Create a new virtual directory 
      &lt;ol&gt;
         &lt;li&gt;
            Name : ccnet 
         &lt;li&gt;
            Directory : the standard installation dir (C:\Program Files\CruiseControl.NET\webdashboard) 
         &lt;li&gt;
            Add in the default documents also default.aspx.&lt;/li&gt;
      &lt;/ol&gt;
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   Next step is to start the ccNet service manually.&amp;nbsp; But keep in mind that when
   starting the service it will run under the local account.&amp;nbsp; This account doesn’t
   have network rights to connect to the SourceSafe DB.&amp;nbsp; So you must have an account
   with enough rights.&amp;nbsp; Because for test purpose we are installing everything on
   our local machine and we will use our own account for the service.&amp;nbsp; If installing
   on a server ask the security people for a correct account.
&lt;/p&gt;
&lt;p&gt;
   From now on you could access the web dashboard of CruiseControl.net:
&lt;/p&gt;
&lt;p&gt;
   Local host: &lt;a href="http://localhost/ccnet/"&gt;http://localhost/ccnet/&lt;/a&gt;
   &lt;br&gt;
   Access from other computers: &lt;a href="http://&lt;servername&gt;:&lt;portnumber&gt;/ccnet"&gt;http://&amp;lt;servername&amp;gt;:&amp;lt;portnumber&amp;gt;/ccnet&lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;Installation of CCtray
&lt;/h2&gt;
&lt;p&gt;
   CCTray is a small client application for the team members.&amp;nbsp; With this application,
   they can follow up the build progress and is visible in the windows tray.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   To install CCTray, you can go to the web dashboard; there you will find a link for
   downloading CCTray.&amp;nbsp; Download this file and run it for the installation.&amp;nbsp;
   Just follow the instructions on the screen.
&lt;/p&gt;
&lt;p&gt;
   The color of the icon changes depending on the status of the CuirseControl.Net server:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;img src="http://blog.svencipido.be/Blog/content/binary/cctray-icon-small-green.png" border=0&gt;&amp;nbsp;:
      The most recent build was successful 
   &lt;li&gt;
      &lt;img src="http://blog.svencipido.be/Blog/content/binary/cctray-icon-small-red.png" border=0&gt;&amp;nbsp;:
      The most recent build failed 
   &lt;li&gt;
      &lt;img src="http://blog.svencipido.be/Blog/content/binary/cctray-icon-small-grey.png" border=0&gt;&amp;nbsp;:
      The server is unavailable, or returned an error status 
   &lt;li&gt;
      &lt;img src="http://blog.svencipido.be/Blog/content/binary/cctray-icon-small-yellow.png" border=0&gt;&amp;nbsp;:
      The server is currently building the code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Right-clicking on a project displays a popup menu:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Force build Wakes the CruiseControl.NET server from its sleep and tells it to start
      building immediately. 
   &lt;li&gt;
      Display Web Page Opens a browser at the CruiseControl.NET build web page for this
      project. The web page may also be launched by double-clicking the project.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Tray Icons
&lt;/h3&gt;
&lt;p&gt;
   The following rules are applied, in this order, to determine the icon color:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      If at least one build is red, the icon is red 
   &lt;li&gt;
      If no builds are red but at least one is yellow, the icon is yellow 
   &lt;li&gt;
      If no build are red or yellow, but least one is grey, the icon is grey 
   &lt;li&gt;
      If all the builds are green, the icon is green&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Balloon notifications
&lt;/h3&gt;
&lt;p&gt;
   Balloon notifications use the standard Windows tray icon popup balloon whenever a
   build completes. Balloon notifications may be enabled/disabled.
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/balloon%20successfull%20build.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/balloon%20broken%20build.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/balloon%20fixed%20build.png" border=0&gt;
&lt;/p&gt;
&lt;h3&gt;Configuration
&lt;/h3&gt;
&lt;h4&gt;Advanced
&lt;/h4&gt;
&lt;p&gt;
   Two configuration settings can be adjusted only by editing the configuration file
   directly:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Balloon messages 
   &lt;li&gt;
      Icons&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   This is done in the cctray-settings.xml file.
&lt;/p&gt;
&lt;h4&gt;Projects
&lt;/h4&gt;
&lt;p&gt;
   After starting up CCTray doesn’t contain any projects.
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/cctray%20Empty.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   You have to fill in your own projects.&amp;nbsp; To this follow these steps:
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;
      Go to File - Settings 
      &lt;br&gt;
      &lt;img src="http://blog.svencipido.be/Blog/content/binary/cctray%20settings%20screen.png" border=0&gt; 
   &lt;li&gt;
      At the bottom you will find the Build Servers section.&amp;nbsp; Here you can add your
      build servers and projects.&amp;nbsp; Click on the add button. &lt;img src="http://blog.svencipido.be/Blog/content/binary/cctray%20add%20server%20empyt.png" border=0&gt; 
   &lt;li&gt;
      Fill in the server with port number (ex: Servername:21234) and click Add Server.&amp;nbsp;
      No you will see a list of projects on this server. &lt;img src="http://blog.svencipido.be/Blog/content/binary/cctray%20poject%20list.png" border=0&gt; 
   &lt;li&gt;
      Choose your project and click OK.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   Now you’re back in the setting screen of CCTray.&amp;nbsp; You will see that in the build
   server section, the selected project is visible.
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/CCTray%20settings%20with%20buildserver.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   Click on the OK button for leaving this screen.&amp;nbsp; You’re back on the main screen
   of CCTray.&amp;nbsp; And you see that the projects are also added here.
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/CCTray%20with%20project.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   So this is it for this part.&amp;nbsp; In the next part we will describe how to add your
   VS 2003 projects in CruiseControl.Net with a Continuous Integration Build configuration.&amp;nbsp;
   In part 4 we will talk about using NAnt for our projects.
&lt;/p&gt;
&lt;p&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana color=#003300 size=2&gt; 
   &lt;hr&gt;
   &lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana color=#003300 size=2&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana color=#003300 size=2&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   Overview Buildserver chapters on my blog : 
&lt;p&gt;
   &lt;a href="http://blog.svencipido.be/Blog/Build+Server++Part+1++Introduction.aspx"&gt;Chapter
   1 : Introduction&lt;/a&gt;
   &lt;br&gt;
   Chapter 2 : CruiseControl.Net&lt;br&gt;
   &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+3++Projects.aspx"&gt;Chapter
   3 : Projects&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+4+Ndash+Project+Structure.aspx"&gt;Chapter
   4 : Project Structure&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+5+Ndash+NAnt+And+All+Our+Buildscripts.aspx"&gt;Chapter
   5 : NAnt and all our buildscripts&lt;/a&gt;
&lt;/p&gt;
&gt;&gt;&gt;&gt;&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=f020b28c-1156-4817-b753-0332d49d5317" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,f020b28c-1156-4817-b753-0332d49d5317.aspx</comments>
      <category>.Net;Buildserver</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=dd991400-139e-4f2c-a977-4b94607276d8</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,dd991400-139e-4f2c-a977-4b94607276d8.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,dd991400-139e-4f2c-a977-4b94607276d8.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=dd991400-139e-4f2c-a977-4b94607276d8</wfw:commentRss>
      <slash:comments>7</slash:comments>
      <title>Bad Practice “Select *” </title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,dd991400-139e-4f2c-a977-4b94607276d8.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Bad+Practice+Select++.aspx</link>
      <pubDate>Tue, 02 May 2006 18:34:12 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;I had to explain to
   a junior developer why using select * is a bad practice. 
   &lt;br&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
   Well, I had a few reasons for it and after searching the net for more, here’s a list
   of the top 8 reasons: 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;ul type=disc&gt;
   &lt;ol type=1&gt;
      &lt;li class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"&gt;
         &lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;By selecting only the
         fields that you want you don't return any superfluous fields. This results in an immediate
         speed increase. Suppose we wish to create a drop down select box. To do this we really
         only need to the information from the first two fields (CustomerID and CustomerName).
         However, if we use SELECT * then we are pulling all the information for each customer
         from the database as we write each record, even if we don't need it (i.e. we are pulling
         data in the CustomerAddress and CustomerComments fields even though we don't need
         this information). By only selecting the fields we need we reduce the amount of data
         pulled from the database and thus speed up our application. 
         &lt;o:p&gt;&lt;/o:p&gt;
         &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
      &lt;/li&gt;
      &lt;li class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"&gt;
         &lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;At some point in time
         you'll want to look at using the Recordset Object's .getRows() method to convert a
         recordset into an array and close your recordset objects earlier. However you will
         not be able to do this effectively unless you know which fields correspond to which
         array elements (which requires you to enumerate the fields in the SELECT statement). 
         &lt;o:p&gt;&lt;/o:p&gt;
         &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
      &lt;/li&gt;
      &lt;li class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"&gt;
         &lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;At some point you will
         also look at using the Recordset Object's .getString() method which is even faster
         than the .getRows() method for returning recordsets to the screen. If you use SELECT
         * you will have no control over the order in which columns are displayed on the screen. 
         &lt;o:p&gt;&lt;/o:p&gt;
         &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
      &lt;/li&gt;
      &lt;li class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"&gt;
         &lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;If you have Access Memo
         type fields, or SQL Server Text type fields these need to be selected last in your
         SQL statement, otherwise you will start to run into the problem where these records
         either do not appear on the screen, or are truncated (see Microsoft's KB article:
         Q200124). 
         &lt;o:p&gt;&lt;/o:p&gt;
         &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
      &lt;/li&gt;
      &lt;li class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"&gt;
         &lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;SELECT * is lazy coding
         practice. It's probably best to start with good habits early. As well the old saying
         of "a stitch in time saves nine" is very true. Imagine having to trawl through a 1000
         line ASP page that you coded 6 months ago trying to find all the fields you used to
         edit a SELECT statement at the top of the page. Then imagine doing this for 1000 pages!
         Better to do it right the first time. 
         &lt;o:p&gt;&lt;/o:p&gt;
         &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
      &lt;/li&gt;
      &lt;li class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"&gt;
         &lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;This last point is not
         a fact, but merely supposition at this point in time. I've heard that if you do SELECT
         * the database needs to find out what fields are actually in the table before it can
         then select them all. By specifying the field names the database engine can use those
         names straight away rather than having to do an extra lookup. However there is very
         little evidence on the web to say one way or the other. 
         &lt;o:p&gt;&lt;/o:p&gt;
         &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
      &lt;/li&gt;
      &lt;li class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"&gt;
         &lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;You need to find errors
         as soon as possible.&amp;nbsp; So when a column is deleted, you will get the error directly
         and not somewhere later in your code. 
         &lt;o:p&gt;&lt;/o:p&gt;
         &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
      &lt;/li&gt;
      &lt;li class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"&gt;
         &lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;Interface like programming
         or program by contract.&amp;nbsp; Your columns are like the interface.&amp;nbsp; You define
         what can be used. 
         &lt;o:p&gt;&lt;/o:p&gt;
         &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
      &lt;/li&gt;
   &lt;/ol&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;font color=#000000&gt;A
   small example with some time figures can be found here : &lt;/font&gt;&lt;a title=blocked::http://www.tom-muck.com/blog/index.cfm?newsid=36 href="http://www.tom-muck.com/blog/index.cfm?newsid=36"&gt;&lt;span title=blocked::http://www.tom-muck.com/blog/index.cfm?newsid=36&gt;http://www.tom-muck.com/blog/index.cfm?newsid=36&lt;/span&gt;&lt;/a&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=dd991400-139e-4f2c-a977-4b94607276d8" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,dd991400-139e-4f2c-a977-4b94607276d8.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=31547de3-d370-46a1-9f6f-8c868af2bb3a</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,31547de3-d370-46a1-9f6f-8c868af2bb3a.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,31547de3-d370-46a1-9f6f-8c868af2bb3a.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=31547de3-d370-46a1-9f6f-8c868af2bb3a</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h1>Introduction
   </h1>
        <p>
      At this moment I have installed the first part of a build server for the customer
      I’m working at the moment.  We are using VS.Net 2003.
   </p>
        <p>
      We have installed a Continuous Integration Build server.  The first part exists
      only of following steps:
   </p>
        <ul>
          <li>
         Get latest version of SourceSafe 
      </li>
          <li>
         Build de solution 
      </li>
          <li>
         If necessary, create the IIS Virtual Directory</li>
        </ul>
        <p>
      Somewhere in April, I’m going to add several tools to the build process:
   </p>
        <ul>
          <li>
         nDepend 
      </li>
          <li>
         nUnit 
      </li>
          <li>
         FxCop 
      </li>
          <li>
         Simian 
      </li>
          <li>
         …</li>
        </ul>
        <p>
      As for the build server itself, we use NAnt.  For our source control system we
      use Microsoft’s Visual Source Safe.<br />
      So stay tuned, as I will try to write down all my experience and how to set up a build
      server.  It will be in several parts and sometimes a file must be changed again.
   </p>
        <p>
      At the moment we have following versions:
   </p>
        <ul>
          <li>
         Microsoft Visual Studio .Net 2003 
      </li>
          <li>
         Microsoft Visual Source Safe : 6.0d 
      </li>
          <li>
         NAnt : 0.85 RC3 
      </li>
          <li>
         NAnt Contrib : 0.85 RC3 
      </li>
          <li>
         Cruise Control.Net : 1.1 
      </li>
          <li>
         CCTray : 1.1</li>
        </ul>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <font face="Verdana" color="#003300" size="2">
            </font>
          </span>
        </p>
        <hr />
        <p>
        </p>
        <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
          <font face="Verdana" color="#003300" size="2">
            <p>
      Overview Buildserver chapters on my blog : 
   </p>
            <p>
      Chapter 1 : Introduction<br /><a href="http://blog.svencipido.be/Blog/Build+Server+Part+2++CruiseControlNet.aspx">Chapter
      2 : CruiseControl.Net</a><br /><a href="http://blog.svencipido.be/Blog/Build+Server+Part+3++Projects.aspx">Chapter
      3 : Projects</a><br /><a href="http://blog.svencipido.be/Blog/Build+Server+Part+4+Ndash+Project+Structure.aspx">Chapter
      4 : Project Structure</a><br /><a href="http://blog.svencipido.be/Blog/Build+Server+Part+5+Ndash+NAnt+And+All+Our+Buildscripts.aspx">Chapter
      5 : NAnt and all our buildscripts</a></p>
          </font>
        </span>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=31547de3-d370-46a1-9f6f-8c868af2bb3a" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Build server - Part 1 : Introduction</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,31547de3-d370-46a1-9f6f-8c868af2bb3a.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Build+Server++Part+1++Introduction.aspx</link>
      <pubDate>Thu, 30 Mar 2006 20:23:09 GMT</pubDate>
      <description>&lt;h1&gt;Introduction
&lt;/h1&gt;
&lt;p&gt;
   At this moment I have installed the first part of a build server for the customer
   I’m working at the moment.&amp;nbsp; We are using VS.Net 2003.
&lt;/p&gt;
&lt;p&gt;
   We have installed a Continuous Integration Build server.&amp;nbsp; The first part exists
   only of following steps:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Get latest version of SourceSafe 
   &lt;li&gt;
      Build de solution 
   &lt;li&gt;
      If necessary, create the IIS Virtual Directory&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Somewhere in April, I’m going to add several tools to the build process:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      nDepend 
   &lt;li&gt;
      nUnit 
   &lt;li&gt;
      FxCop 
   &lt;li&gt;
      Simian 
   &lt;li&gt;
      …&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   As for the build server itself, we use NAnt.&amp;nbsp; For our source control system we
   use Microsoft’s Visual Source Safe.&lt;br&gt;
   So stay tuned, as I will try to write down all my experience and how to set up a build
   server.&amp;nbsp; It will be in several parts and sometimes a file must be changed again.
&lt;/p&gt;
&lt;p&gt;
   At the moment we have following versions:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Microsoft Visual Studio .Net 2003 
   &lt;li&gt;
      Microsoft Visual Source Safe : 6.0d 
   &lt;li&gt;
      NAnt : 0.85 RC3 
   &lt;li&gt;
      NAnt Contrib : 0.85 RC3 
   &lt;li&gt;
      Cruise Control.Net : 1.1 
   &lt;li&gt;
      CCTray : 1.1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana color=#003300 size=2&gt;
&lt;/p&gt;
&lt;hr&gt;
&gt;&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana color=#003300 size=2&gt; 
&lt;p&gt;
   Overview Buildserver chapters on my blog : 
&lt;p&gt;
   Chapter 1 : Introduction&lt;br&gt;
   &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+2++CruiseControlNet.aspx"&gt;Chapter
   2 : CruiseControl.Net&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+3++Projects.aspx"&gt;Chapter
   3 : Projects&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+4+Ndash+Project+Structure.aspx"&gt;Chapter
   4 : Project Structure&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="http://blog.svencipido.be/Blog/Build+Server+Part+5+Ndash+NAnt+And+All+Our+Buildscripts.aspx"&gt;Chapter
   5 : NAnt and all our buildscripts&lt;/a&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=31547de3-d370-46a1-9f6f-8c868af2bb3a" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,31547de3-d370-46a1-9f6f-8c868af2bb3a.aspx</comments>
      <category>.Net;Buildserver</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=967d685e-7aab-45ed-b9f6-3c75b454aad6</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,967d685e-7aab-45ed-b9f6-3c75b454aad6.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,967d685e-7aab-45ed-b9f6-3c75b454aad6.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=967d685e-7aab-45ed-b9f6-3c75b454aad6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">We have encountered a problem when regenerating
   our dataset (or even rebuilden the project/solution) This was the situation 
   <ul><li>
         Project is in SourceSafe 
      </li><li>
         We checked out our dataset file 
      </li><li>
         Following files are included: 
      </li><ul><li>
            Dataset.xsd 
         </li><li>
            Dataset.vb 
         </li><li>
            Dataset.xsx 
         </li></ul><li>
         Make changes to the dataset 
      </li><li>
         Run custom tool 
      </li><li>
         Now we have following files</li><ul><li>
            Dataset.xsd 
         </li><li>
            Dataset1.vb 
         </li><li>
            Dataset.xsx 
         </li></ul></ul>
   As you can see our VB file has another name.When viewing the source code the class
   name is correct.This is because the vb-file isn't checked out (a bug in Visual Studio
   .Net 2003?) and you can't checkout the file anymore because for Visual Studio it's
   already checked out. To solve this, follow the next steps 
   <ul><li>
         Delete the vb-file from your solution 
      </li><li>
         Save the solution 
      </li><li>
         Close the solution 
      </li><li>
         Go to explorer en locate your files 
      </li><li>
         Delete here also the vb-file.You will get a warning about the read-only state. 
      </li><li>
         Go to the project file 
      </li><li>
         Search for your dataset 
      </li><li>
         Delete the line "LastGenOutput = "DataSet1.vb" 
      </li><li>
         Reopen your solution 
      </li><li>
         Run again the custom tool 
      </li></ul><p>
      After this the situation will be back normal, so these files are included: 
   </p><ul><li>
         Dataset.xsd 
      </li><li>
         Dataset.vb 
      </li><li>
         Dataset.xsx 
      </li></ul><img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=967d685e-7aab-45ed-b9f6-3c75b454aad6" /><br /><hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Problem when regenerating your dataset.</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,967d685e-7aab-45ed-b9f6-3c75b454aad6.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Problem+When+Regenerating+Your+Dataset.aspx</link>
      <pubDate>Mon, 20 Feb 2006 07:04:58 GMT</pubDate>
      <description>We have encountered a problem when regenerating our dataset (or even rebuilden the project/solution) This was the situation 
&lt;ul&gt;
   &lt;li&gt;
      Project is in SourceSafe 
   &lt;/li&gt;
   &lt;li&gt;
      We checked out our dataset file 
   &lt;/li&gt;
   &lt;li&gt;
      Following files are included: 
   &lt;/li&gt;
   &lt;ul&gt;
      &lt;li&gt;
         Dataset.xsd 
      &lt;/li&gt;
      &lt;li&gt;
         Dataset.vb 
      &lt;/li&gt;
      &lt;li&gt;
         Dataset.xsx 
      &lt;/li&gt;
   &lt;/ul&gt;
   &lt;li&gt;
      Make changes to the dataset 
   &lt;/li&gt;
   &lt;li&gt;
      Run custom tool 
   &lt;/li&gt;
   &lt;li&gt;
      Now we have following files&lt;/li&gt;
   &lt;ul&gt;
      &lt;li&gt;
         Dataset.xsd 
      &lt;/li&gt;
      &lt;li&gt;
         Dataset1.vb 
      &lt;/li&gt;
      &lt;li&gt;
         Dataset.xsx 
      &lt;/li&gt;
   &lt;/ul&gt;
&lt;/ul&gt;
As you can see our VB file has another name.When viewing the source code the class
name is correct.This is because the vb-file isn't checked out (a bug in Visual Studio
.Net 2003?) and you can't checkout the file anymore because for Visual Studio it's
already checked out. To solve this, follow the next steps 
&lt;ul&gt;
   &lt;li&gt;
      Delete the vb-file from your solution 
   &lt;/li&gt;
   &lt;li&gt;
      Save the solution 
   &lt;/li&gt;
   &lt;li&gt;
      Close the solution 
   &lt;/li&gt;
   &lt;li&gt;
      Go to explorer en locate your files 
   &lt;/li&gt;
   &lt;li&gt;
      Delete here also the vb-file.You will get a warning about the read-only state. 
   &lt;/li&gt;
   &lt;li&gt;
      Go to the project file 
   &lt;/li&gt;
   &lt;li&gt;
      Search for your dataset 
   &lt;/li&gt;
   &lt;li&gt;
      Delete the line "LastGenOutput = "DataSet1.vb" 
   &lt;/li&gt;
   &lt;li&gt;
      Reopen your solution 
   &lt;/li&gt;
   &lt;li&gt;
      Run again the custom tool 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   After this the situation will be back normal, so these files are included: 
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Dataset.xsd 
   &lt;/li&gt;
   &lt;li&gt;
      Dataset.vb 
   &lt;/li&gt;
   &lt;li&gt;
      Dataset.xsx 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=967d685e-7aab-45ed-b9f6-3c75b454aad6" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,967d685e-7aab-45ed-b9f6-3c75b454aad6.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=05e9abf0-0951-4ed5-8094-ce584f4e3455</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,05e9abf0-0951-4ed5-8094-ce584f4e3455.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,05e9abf0-0951-4ed5-8094-ce584f4e3455.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=05e9abf0-0951-4ed5-8094-ce584f4e3455</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Just found out (See Post of <a href="http://www.realdn.net/msblog/PermaLink,guid,448a5f26-e6ee-4431-a9c2-dd09f52cef95.aspx">Diederik
      Krols</a>): The great free Paint replacement tool Paint.Net has released a new version. 
   </p>
        <p>
      Go to the official site of <a href="http://www.eecs.wsu.edu/paint.net/">Paint.Net</a>.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=05e9abf0-0951-4ed5-8094-ce584f4e3455" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Paint.Net v 2.5</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,05e9abf0-0951-4ed5-8094-ce584f4e3455.aspx</guid>
      <link>http://blog.svencipido.be/Blog/PaintNet+V+25.aspx</link>
      <pubDate>Wed, 07 Dec 2005 07:40:46 GMT</pubDate>
      <description>&lt;p&gt;
   Just found out (See Post of &lt;a href="http://www.realdn.net/msblog/PermaLink,guid,448a5f26-e6ee-4431-a9c2-dd09f52cef95.aspx"&gt;Diederik
   Krols&lt;/a&gt;): The great free Paint replacement tool Paint.Net has released a new version.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   Go to the official site of &lt;a href="http://www.eecs.wsu.edu/paint.net/"&gt;Paint.Net&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=05e9abf0-0951-4ed5-8094-ce584f4e3455" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,05e9abf0-0951-4ed5-8094-ce584f4e3455.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=6a9b3dda-8a3b-4574-8d97-1a99d687dbaa</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,6a9b3dda-8a3b-4574-8d97-1a99d687dbaa.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,6a9b3dda-8a3b-4574-8d97-1a99d687dbaa.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6a9b3dda-8a3b-4574-8d97-1a99d687dbaa</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Last Thursday (10 November 2005), I went to the Belgium Launch party of Visual Studio
      .Net 2005, SQL Server 2005 and BizTalk Server 2006.  The place to be was Court-St-Etienne.
   </p>
        <p>
      There where a few speakers :<br />
      · Keynote by S. Somasegar, Corporate Vice President, Microsoft Corporation<br />
      · Session 1 : Clemens Vasters, Chief Technology Officer, Newtelligence AG<br />
      · Session 2 : Astrid Hackenberg Trainer and advisor SQL Server, Class-A
   </p>
        <p>
      Mr Somasegar did the kick-off the Belux Launch of SQL Server 2005, Visual Studio 2005
      and BizTalk Server 2006
   </p>
        <p>
      Session 1 gives us an insight in the new capabilities of Visual Studio 2005. 
      Session 2 presents us the new world of SQL Server 2005.
   </p>
        <p>
      In between the sessions there where some great shows, to keep everybody ready. 
      Afterwards we had a walking dinner party.  And we closed the day with a great
      dance event.  I left the party around 12 o’clock in the night.  And still
      a few people (10-20) where partying.  
   </p>
        <p>
      On the Launch site of Microsoft, you can find some pictures.  <a href="http://www.microsoft.com/belux/nl/events/ready/pictures.aspx?width=1280&amp;height=1024">Go
      and see them.</a></p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=6a9b3dda-8a3b-4574-8d97-1a99d687dbaa" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Ready !  The Launch Party</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,6a9b3dda-8a3b-4574-8d97-1a99d687dbaa.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Ready+++The+Launch+Party.aspx</link>
      <pubDate>Mon, 14 Nov 2005 07:22:56 GMT</pubDate>
      <description>&lt;p&gt;
   Last Thursday (10 November 2005), I went to the Belgium Launch party of Visual Studio
   .Net 2005, SQL Server 2005 and BizTalk Server 2006.&amp;nbsp; The place to be was Court-St-Etienne.
&lt;/p&gt;
&lt;p&gt;
   There where a few speakers :&lt;br&gt;
   ·&amp;nbsp;Keynote by S. Somasegar, Corporate Vice President, Microsoft Corporation&lt;br&gt;
   ·&amp;nbsp;Session 1 : Clemens Vasters, Chief Technology Officer, Newtelligence AG&lt;br&gt;
   ·&amp;nbsp;Session 2 : Astrid Hackenberg Trainer and advisor SQL Server, Class-A
&lt;/p&gt;
&lt;p&gt;
   Mr Somasegar did the kick-off the Belux Launch of SQL Server 2005, Visual Studio 2005
   and BizTalk Server 2006
&lt;/p&gt;
&lt;p&gt;
   Session 1 gives us an insight in the new capabilities of Visual Studio 2005.&amp;nbsp;
   Session 2 presents us the new world of SQL Server 2005.
&lt;/p&gt;
&lt;p&gt;
   In between the sessions there&amp;nbsp;where some great shows, to keep everybody ready.&amp;nbsp;
   Afterwards we had a walking dinner party.&amp;nbsp; And we closed the day with a great
   dance event.&amp;nbsp; I left the party around 12 o’clock in the night.&amp;nbsp; And still
   a few people (10-20) where partying.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   On the Launch site of Microsoft, you can find some pictures.&amp;nbsp; &lt;a href="http://www.microsoft.com/belux/nl/events/ready/pictures.aspx?width=1280&amp;amp;height=1024"&gt;Go
   and see them.&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=6a9b3dda-8a3b-4574-8d97-1a99d687dbaa" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,6a9b3dda-8a3b-4574-8d97-1a99d687dbaa.aspx</comments>
      <category>.Net;Common;SQL Server</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=c86c6514-7854-409d-b71f-47065eb3e28a</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,c86c6514-7854-409d-b71f-47065eb3e28a.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,c86c6514-7854-409d-b71f-47065eb3e28a.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=c86c6514-7854-409d-b71f-47065eb3e28a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      In the MSDN Belux Flash &amp; Events - Volume 9, Number 22, I found following "nice
      to have" tools:
   </p>
        <p>
          <strong>The Internet Explorer Developer Toolbar</strong>.  A must have for web
      developers.  This toolbar provides you several features like:
   </p>
        <ul>
          <li>
         Exploring the DOM</li>
          <li>
         Viewing HTML object details</li>
          <li>
         Validating HTML</li>
          <li>
         ....</li>
        </ul>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;displaylang=en</a>
        </p>
        <p>
          <strong>Snippy - Visual Studio Code Snippet Editor</strong>.  A code editor for
      Visual Studio 2005.  Snippy can be used to add new snippets or to modify previous
      created snippets.
   </p>
        <p>
          <a href="http://www.gotdotnet.com/codegallery/codegallery.aspx?id=b0813ae7-466a-43c2-b2ad-f87e4ee6bc39">http://www.gotdotnet.com/codegallery/codegallery.aspx?id=b0813ae7-466a-43c2-b2ad-f87e4ee6bc39</a>
        </p>
        <p>
       
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=c86c6514-7854-409d-b71f-47065eb3e28a" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>"Nice to Have" tools</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,c86c6514-7854-409d-b71f-47065eb3e28a.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Nice+To+Have+Tools.aspx</link>
      <pubDate>Mon, 14 Nov 2005 07:07:10 GMT</pubDate>
      <description>&lt;p&gt;
   In the MSDN Belux Flash &amp;amp; Events - Volume 9, Number 22, I found following "nice
   to have" tools:
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;The Internet Explorer Developer Toolbar&lt;/strong&gt;.&amp;nbsp; A must have for web
   developers.&amp;nbsp; This toolbar provides you several features like:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Exploring the DOM&lt;/li&gt;
   &lt;li&gt;
      Viewing HTML object details&lt;/li&gt;
   &lt;li&gt;
      Validating HTML&lt;/li&gt;
   &lt;li&gt;
      ....&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;amp;displaylang=en&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;Snippy - Visual Studio Code Snippet Editor&lt;/strong&gt;.&amp;nbsp; A code editor for
   Visual Studio 2005.&amp;nbsp; Snippy can be used to add new snippets or to modify previous
   created snippets.
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.gotdotnet.com/codegallery/codegallery.aspx?id=b0813ae7-466a-43c2-b2ad-f87e4ee6bc39"&gt;http://www.gotdotnet.com/codegallery/codegallery.aspx?id=b0813ae7-466a-43c2-b2ad-f87e4ee6bc39&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=c86c6514-7854-409d-b71f-47065eb3e28a" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,c86c6514-7854-409d-b71f-47065eb3e28a.aspx</comments>
      <category>.Net;Common;News</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=4147943f-431d-4830-9736-0fdcf673a1ef</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,4147943f-431d-4830-9736-0fdcf673a1ef.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,4147943f-431d-4830-9736-0fdcf673a1ef.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=4147943f-431d-4830-9736-0fdcf673a1ef</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Today and tomorrow I'm following the master classes for Visual Studio Team System
      @ the headquarters of Microsoft Belgium in Diegem.
   </p>
        <p>
      Today we first got an overview and then we learn about the team projects and processes,
      how to manage a successful project and the application design with Team System. 
   </p>
        <p>
      This was the first time I worked by myself with Team System, although I already had
      seen a few sessions.  Just had to play more with it, but at this moment this
      seems a great tool.  I hope I can find some project templates to use the Scrum
      methodology in Team System, otherwise we would have a lot of work to create our own
      templates (or modify an existing one).  
   </p>
        <p>
      Tomorrow we will learn about Software Configuration Management, Tools fro writing
      Quality code, Enterprise instrumentation an testing and finally about Process Customization. 
      So it will be again very interesting.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=4147943f-431d-4830-9736-0fdcf673a1ef" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Master classes Visual Studio Team System</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,4147943f-431d-4830-9736-0fdcf673a1ef.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Master+Classes+Visual+Studio+Team+System.aspx</link>
      <pubDate>Mon, 24 Oct 2005 17:48:11 GMT</pubDate>
      <description>&lt;p&gt;
   Today and tomorrow I'm following the master classes for Visual Studio Team System
   @ the headquarters of Microsoft Belgium in Diegem.
&lt;/p&gt;
&lt;p&gt;
   Today we first got an overview and then we learn about the team projects and processes,
   how to manage a successful project and the application design with Team System.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   This was the first time I worked by myself with Team System, although I already had
   seen a few sessions.&amp;nbsp; Just had to play more with it, but at this moment this
   seems a great tool.&amp;nbsp; I hope I can find some project templates to use the Scrum
   methodology in Team System, otherwise we would have a lot of work to create our own
   templates (or modify an existing one).&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   Tomorrow we will learn about Software Configuration Management, Tools fro writing
   Quality code, Enterprise instrumentation an testing and finally about Process Customization.&amp;nbsp;
   So it will be again very interesting.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=4147943f-431d-4830-9736-0fdcf673a1ef" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,4147943f-431d-4830-9736-0fdcf673a1ef.aspx</comments>
      <category>.Net;Architecture</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=035953c7-78c7-4d2a-bc41-9a3b8158bcd5</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,035953c7-78c7-4d2a-bc41-9a3b8158bcd5.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,035953c7-78c7-4d2a-bc41-9a3b8158bcd5.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=035953c7-78c7-4d2a-bc41-9a3b8158bcd5</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/mainheader_aspnetontour.jpg" border="0" />
        </p>
        <p>
      Yep, I know.  It's already announced for a while and by several other bloggers. 
      But OK.  Here is my announcement.
   </p>
        <p>
      Get a one day event of the latest version of ASP.Net.  More info can be found
      @ the <a href="http://www.microsoft.com/belux/nl/msdn/events/default.mspx">MSDN Belux
      site</a>.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=035953c7-78c7-4d2a-bc41-9a3b8158bcd5" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>ASP.Net 2.0 on tour</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,035953c7-78c7-4d2a-bc41-9a3b8158bcd5.aspx</guid>
      <link>http://blog.svencipido.be/Blog/ASPNet+20+On+Tour.aspx</link>
      <pubDate>Wed, 16 Feb 2005 10:00:32 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/mainheader_aspnetontour.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   Yep, I know.&amp;nbsp; It's already announced for a while and by several other bloggers.&amp;nbsp;
   But OK.&amp;nbsp; Here is my announcement.
&lt;/p&gt;
&lt;p&gt;
   Get a one day event of the latest version of ASP.Net.&amp;nbsp; More info can be found
   @ the &lt;a href="http://www.microsoft.com/belux/nl/msdn/events/default.mspx"&gt;MSDN Belux
   site&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=035953c7-78c7-4d2a-bc41-9a3b8158bcd5" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,035953c7-78c7-4d2a-bc41-9a3b8158bcd5.aspx</comments>
      <category>.Net;Common;News</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=7b3ac076-4c14-4c35-a999-917e286ca88f</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,7b3ac076-4c14-4c35-a999-917e286ca88f.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,7b3ac076-4c14-4c35-a999-917e286ca88f.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=7b3ac076-4c14-4c35-a999-917e286ca88f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Today I'm for two days @ U2U.  I'm following the course MS2030A "Creating Reporting
      Solutions Using Microsoft SQL Server 2000 Reporting Services".  Our teacher is
      Nico Jacobs.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=7b3ac076-4c14-4c35-a999-917e286ca88f" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Two days @ U2U</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,7b3ac076-4c14-4c35-a999-917e286ca88f.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Two+Days++U2U.aspx</link>
      <pubDate>Thu, 10 Feb 2005 08:14:53 GMT</pubDate>
      <description>&lt;p&gt;
   Today I'm for two days @ U2U.&amp;nbsp; I'm following the course MS2030A "Creating Reporting
   Solutions Using Microsoft SQL Server 2000 Reporting Services".&amp;nbsp; Our teacher is
   Nico Jacobs.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=7b3ac076-4c14-4c35-a999-917e286ca88f" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,7b3ac076-4c14-4c35-a999-917e286ca88f.aspx</comments>
      <category>.Net;Common;Personal</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=4fde935d-a281-4e24-9bd2-135f431afd45</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,4fde935d-a281-4e24-9bd2-135f431afd45.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,4fde935d-a281-4e24-9bd2-135f431afd45.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=4fde935d-a281-4e24-9bd2-135f431afd45</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Another interresting webcast (Thanks <a href="http://blogs.msdn.com/rudi_larno/">Rudi</a>)
      for HIS.  If you develop applications who uses a connection with the AS/400,
      then watch this session.  In here you will learn more about Microsoft and 3rd
      party solutions for adding the functionality.
   </p>
        <p>
      More info <a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032265916&amp;Culture=en-US">here</a>.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=4fde935d-a281-4e24-9bd2-135f431afd45" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>MSDN Webcast : .NET Interoperability with the AS/400 data center (Level 200)</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,4fde935d-a281-4e24-9bd2-135f431afd45.aspx</guid>
      <link>http://blog.svencipido.be/Blog/MSDN+Webcast++NET+Interoperability+With+The+AS400+Data+Center+Level+200.aspx</link>
      <pubDate>Fri, 04 Feb 2005 17:49:53 GMT</pubDate>
      <description>&lt;p&gt;
   Another interresting webcast (Thanks &lt;a href="http://blogs.msdn.com/rudi_larno/"&gt;Rudi&lt;/a&gt;)
   for HIS.&amp;nbsp; If you develop applications who uses a connection with the AS/400,
   then watch this session.&amp;nbsp; In here you will learn more about Microsoft and 3rd
   party solutions for adding the functionality.
&lt;/p&gt;
&lt;p&gt;
   More info &lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032265916&amp;amp;Culture=en-US"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=4fde935d-a281-4e24-9bd2-135f431afd45" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,4fde935d-a281-4e24-9bd2-135f431afd45.aspx</comments>
      <category>.Net;HIS</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=e120b261-d5f0-426f-94bd-75a4f4720024</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,e120b261-d5f0-426f-94bd-75a4f4720024.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,e120b261-d5f0-426f-94bd-75a4f4720024.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e120b261-d5f0-426f-94bd-75a4f4720024</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      OK, As promised in the previous part, I will give you the solution we used in our
      project to upload files.
   </p>
        <p>
      Because, there's also a MS Access client, we have decide to upload our files to a
      network drive.  The MS Access programmers told us that they couldn't
      handle the large fields.  Now we had another problem.  Standard we don't
      have any authorization to write files on a network drive.  We could write only
      files on our own server.  So looking for a solution for this, I came accross
      Impersonation.  It seems that we can take over the identity of another user during
      the run of our upload page.  You can find all the info <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemsecurityprincipalwindowsimpersonationcontextclasstopic.asp">here</a>.
   </p>
        <p>
      Now we can open the upload page, and take the identity of a Functional Account, upload
      our file to the shared dir on the network, close the page and taken back the ASP worker
      identity.
   </p>
        <p>
      A bit of code :
   </p>
        <p>
          <em>
            <font face="Courier New">WindowsPrincipal p = (WindowsPrincipal)HttpContext.Current.User;<br />
      WindowsIdentity id = (WindowsIdentity)p.Identity;<br /><br />
      Response.Output.Write("&lt;h2&gt;Process running as {0}&lt;/h2&gt;", WindowsIdentity.GetCurrent().Name);<br /><br />
      // impersonate temporarily<br />
      WindowsImpersonationContext wic = id.Impersonate();<br />
      try {<br />
        // do some work while impersonating the client<br />
        Response.Output.Write("&lt;h2&gt;Now impersonating {0}&lt;/h2&gt;",WindowsIdentity.GetCurrent().Name);<br />
      }<br />
      finally {<br />
        // restore our old security context<br />
          wic.Undo();<br />
      }<br />
      Response.Output.Write("&lt;h2&gt;Once again running as {0}&lt;/h2&gt;",WindowsIdentity.GetCurrent().Name);<br /></font>
          </em>
          <br />
        </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=e120b261-d5f0-426f-94bd-75a4f4720024" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>File uploading in ASP.Net : Our project solution</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,e120b261-d5f0-426f-94bd-75a4f4720024.aspx</guid>
      <link>http://blog.svencipido.be/Blog/File+Uploading+In+ASPNet++Our+Project+Solution.aspx</link>
      <pubDate>Thu, 20 Jan 2005 09:06:51 GMT</pubDate>
      <description>&lt;p&gt;
   OK, As promised in the previous part, I will give you the solution we used in our
   project to upload files.
&lt;/p&gt;
&lt;p&gt;
   Because, there's also a MS Access client, we have decide to upload our files to a
   network drive.&amp;nbsp; The MS Access&amp;nbsp;programmers told us that they&amp;nbsp;couldn't
   handle the large fields.&amp;nbsp; Now we had another problem.&amp;nbsp; Standard we don't
   have any authorization to write files on a network drive.&amp;nbsp; We could write only
   files on our own server.&amp;nbsp; So looking for a solution for this, I came accross
   Impersonation.&amp;nbsp; It seems that we can take over the identity of another user during
   the run of our upload page.&amp;nbsp; You can find all the info &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemsecurityprincipalwindowsimpersonationcontextclasstopic.asp"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   Now we can open the upload page, and take the identity of a Functional Account, upload
   our file to the shared dir on the network, close the page and taken back the ASP worker
   identity.
&lt;/p&gt;
&lt;p&gt;
   A bit of code :
&lt;/p&gt;
&lt;p&gt;
   &lt;em&gt;&lt;font face="Courier New"&gt;WindowsPrincipal p =&amp;nbsp;(WindowsPrincipal)HttpContext.Current.User;&lt;br&gt;
   WindowsIdentity id = (WindowsIdentity)p.Identity;&lt;br&gt;
   &lt;br&gt;
   Response.Output.Write("&amp;lt;h2&amp;gt;Process running as {0}&amp;lt;/h2&amp;gt;", WindowsIdentity.GetCurrent().Name);&lt;br&gt;
   &lt;br&gt;
   // impersonate temporarily&lt;br&gt;
   WindowsImpersonationContext wic = id.Impersonate();&lt;br&gt;
   try {&lt;br&gt;
   &amp;nbsp; // do some work while impersonating the client&lt;br&gt;
   &amp;nbsp; Response.Output.Write("&amp;lt;h2&amp;gt;Now impersonating {0}&amp;lt;/h2&amp;gt;",WindowsIdentity.GetCurrent().Name);&lt;br&gt;
   }&lt;br&gt;
   finally {&lt;br&gt;
   &amp;nbsp; // restore our old security context&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; wic.Undo();&lt;br&gt;
   }&lt;br&gt;
   Response.Output.Write("&amp;lt;h2&amp;gt;Once again running as {0}&amp;lt;/h2&amp;gt;",WindowsIdentity.GetCurrent().Name);&lt;br&gt;
   &lt;/font&gt;&lt;/em&gt;
   &lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=e120b261-d5f0-426f-94bd-75a4f4720024" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,e120b261-d5f0-426f-94bd-75a4f4720024.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=2c0e19af-e2cc-49b9-a27d-e98b631beceb</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,2c0e19af-e2cc-49b9-a27d-e98b631beceb.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,2c0e19af-e2cc-49b9-a27d-e98b631beceb.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=2c0e19af-e2cc-49b9-a27d-e98b631beceb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Several new webcast are coming out this month and next month.  There are also
      webcasts for HIS 2004.  Here is some more info :
   </p>
        <p>
          <strong>TechNet Webcast: HIS Bi-directional Transaction and Data Inter-op Between
      Windows and IBM Mainframe Systems (Level 200)</strong>
        </p>
        <p>
      Thursday, February 03, 2005 - 11:30 AM - 1:00 PM Pacific Time
   </p>
        <p>
      Stan Murawski, Technical Mainframe Evangelist, Microsoft Corporation
   </p>
        <p>
      This webcast demonstrates the peer level inter-operation capabilities provided by
      Microsoft Host Integration Server (HIS) 2004, where a program on either system can
      use the other as a database or transaction server. Programs running on either side
      can call programs on the other, within the context of a transaction. Either system
      can be a database server to the other. Join this webcast to find out all about it.
   </p>
        <p>
          <a href="http://go.microsoft.com/fwlink/?LinkId=39961">http://go.microsoft.com/fwlink/?LinkId=39961</a>
        </p>
        <p>
          <strong>TechNet Webcast: Security Integration between Windows and IBM Mainframes (Level
      200)</strong>
        </p>
        <p>
      Thursday, February 10, 2005 - 11:00 AM - 12:30 PM Pacific Time
   </p>
        <p>
      Stan Murawski, Technical Mainframe Evangelist, Microsoft
   </p>
        <p>
      This webcast introduces the mainframe professional to security on the Windows Server
      System. Join this webcast to learn how to integrate security   including
      end-user single sign-on between Windows and IBM OS/390 and zSeries Operating Systems.
   </p>
        <p>
          <a href="http://go.microsoft.com/fwlink/?LinkId=39965">http://go.microsoft.com/fwlink/?LinkId=39965</a>
        </p>
        <p>
      Thanks to <a href="http://www.microsoft.com">Microsoft</a> for the info.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=2c0e19af-e2cc-49b9-a27d-e98b631beceb" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>TechNet Webcast: HIS 2004</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,2c0e19af-e2cc-49b9-a27d-e98b631beceb.aspx</guid>
      <link>http://blog.svencipido.be/Blog/TechNet+Webcast+HIS+2004.aspx</link>
      <pubDate>Thu, 20 Jan 2005 07:18:04 GMT</pubDate>
      <description>&lt;p&gt;
   Several new webcast are coming out this month and next month.&amp;nbsp; There are also
   webcasts for HIS 2004.&amp;nbsp; Here is some more info :
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;TechNet Webcast: HIS Bi-directional Transaction and Data Inter-op Between
   Windows and IBM Mainframe Systems (Level 200)&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
   Thursday, February 03, 2005 - 11:30 AM - 1:00 PM Pacific Time
&lt;/p&gt;
&lt;p&gt;
   Stan Murawski, Technical Mainframe Evangelist, Microsoft Corporation
&lt;/p&gt;
&lt;p&gt;
   This webcast demonstrates the peer level inter-operation capabilities provided by
   Microsoft Host Integration Server (HIS) 2004, where a program on either system can
   use the other as a database or transaction server. Programs running on either side
   can call programs on the other, within the context of a transaction. Either system
   can be a database server to the other. Join this webcast to find out all about it.
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://go.microsoft.com/fwlink/?LinkId=39961"&gt;http://go.microsoft.com/fwlink/?LinkId=39961&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;TechNet Webcast: Security Integration between Windows and IBM Mainframes (Level
   200)&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
   Thursday, February 10, 2005 - 11:00 AM - 12:30 PM Pacific Time
&lt;/p&gt;
&lt;p&gt;
   Stan Murawski, Technical Mainframe Evangelist, Microsoft
&lt;/p&gt;
&lt;p&gt;
   This webcast introduces the mainframe professional to security on the Windows Server
   System. Join this webcast to learn how to integrate security&amp;nbsp;&amp;nbsp; including
   end-user single sign-on between Windows and IBM OS/390 and zSeries Operating Systems.
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://go.microsoft.com/fwlink/?LinkId=39965"&gt;http://go.microsoft.com/fwlink/?LinkId=39965&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   Thanks to &lt;a href="http://www.microsoft.com"&gt;Microsoft&lt;/a&gt; for the info.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=2c0e19af-e2cc-49b9-a27d-e98b631beceb" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,2c0e19af-e2cc-49b9-a27d-e98b631beceb.aspx</comments>
      <category>.Net;HIS</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=0a48d85f-c9f9-4b94-8e88-5cade687a3e8</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,0a48d85f-c9f9-4b94-8e88-5cade687a3e8.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,0a48d85f-c9f9-4b94-8e88-5cade687a3e8.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=0a48d85f-c9f9-4b94-8e88-5cade687a3e8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      When you want to have tabs on your ASP.Net page, you don't have a standard webcontrol
      in Visual Studio .Net. But Microsoft offers a solution in the MSDN. In the MSDN you
      can find a topic about <a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/webcontrols/overview/overview.asp">Internet
      Explorer Webcontrols</a>. These selection controls exists of : 
   </p>
        <ul>
          <li>
         Treeview 
      </li>
          <li>
         Toolbar 
      </li>
          <li>
         Tabstrip and Multipage 
      </li>
        </ul>
        <p>
      You can download these controls <a href="http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/samples/internet/welcome.asp">here</a>. 
   </p>
        <h4>The tabstrip
   </h4>
        <p>
      The tabstrip can be used for a tabbed layout/menu on your ASP.Net page. In combination
      with the multipage, we got a powerfull control which can be used to render your pageview
      whenever a tab is selected. We can show the content of a page, without navigation
      to another page.
   </p>
        <p>
      The tabstrip implements server- and client-side objects, therefor the tabstrip offers
      two modes of authoring.
   </p>
        <ul>
          <li>
         Tabstrip server-side controls : Tabstrip interfaces can be implemented using the elements
         and objects exposed by the Tabstrip server-side controls. 
      </li>
          <li>
         Tabstrip behavior : Tabstrip interfaces can also be written in HTML using the Tabstrip
         behavior.</li>
        </ul>
        <pre>In both cases the same set of elements is used, but due the differences in the architecture the models are a bit different. The best is, when the browser is not known, to use server side controls. When you know that IE 5.5 or later will be used, you better use the Tabstrip behavior. The advantge is that there will be a fatser donwload, because server-side processing is avoided.</pre>
        <h4>Tabstrip objects
   </h4>
        <p>
      The Tabstrip has 3 objects :
   </p>
        <p>
          <table id="Table1" cellspacing="1" cellpadding="1" border="0">
            <tbody>
              <tr>
                <td width="139" bgcolor="gainsboro">
                  <p align="center">
                    <strong>
                      <font size="2">Client Behavior</font>
                    </strong>
                  </p>
                </td>
                <td width="109" bgcolor="gainsboro">
                  <p align="center">
                    <strong>
                      <font size="2">ASP.NET</font>
                    </strong>
                  </p>
                </td>
                <td bgcolor="gainsboro">
                  <p align="center">
                    <strong>
                      <font size="2">Description</font>
                    </strong>
                  </p>
                </td>
              </tr>
              <tr>
                <td width="139">
                  <font size="2">TabStrip</font>
                </td>
                <td width="109">
                  <font size="2">TabStrip</font>
                </td>
                <td>
                  <font size="2">A container element for other TabStrip elements</font>
                </td>
              </tr>
              <tr>
                <td width="139">
                  <font size="2">Tab</font>
                </td>
                <td width="109">
                  <font size="2">Tab</font>
                </td>
                <td>
                  <font size="2">Defines a tab element within a TabStrip control</font>
                </td>
              </tr>
              <tr>
                <td width="139">
                  <font size="2">TabSeparator</font>
                </td>
                <td width="109">
                  <font size="2">TabSeparator</font>
                </td>
                <td>
                  <font size="2">Defines a separator element, which is placed between two adjacent Tab
                  control</font>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <h4>Customization 
   </h4>
        <p>
      The tabstrip offers a few features :
   </p>
        <ul>
          <li>
         Text based tabs : Is automatiscly available. you focus only on the text content of
         the tab. You can use CSS. 
      </li>
          <li>
         Picture-based tabs : you want the control (full or partial) over the tab, or you want
         to add graphical items to your tab. 
      </li>
          <li>
         Orientation : You can decide to use vertical or horizontal tabs.</li>
        </ul>
        <p>
      Also for formatting there are some features :
   </p>
        <ul>
          <li>
         Default : This state is active when the tab is not selected and the no mouse is going
         over the tab 
      </li>
          <li>
         Selected : This state is active when a tab is selected 
      </li>
          <li>
         Hover : This state is used when the mouse is moving over the tab</li>
        </ul>
        <h4>Multipage or not
   </h4>
        <p>
      You can use multipages on your tabs. This control is also available in the internet
      web controls.
   </p>
        <h5>With multipage
   </h5>
        <p>
      This is most used possibility. You define your tabstrip and your items for each tabstrip
      using the multipage control.
   </p>
        <h5>Without multipage
   </h5>
        <p>
      When using this method, you need to use the SelectedIndex property of the tabstrip
      so you could naviagte to other Web pages. 
   </p>
        <h4>Example
   </h4>
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/tabstrip-example.JPG" border="0" />
        </p>
        <p>
          <table id="Table2" cellspacing="1" cellpadding="1" border="1">
            <tbody>
              <tr>
                <td bgcolor="gainsboro">
                  <p>
                    <font size="1">&lt;mytab:TabStrip id="tsHoriz" runat="server" Style="FONT-WEIGHT:bold"
                     TabDefaultStyle="border:solid 1px black;background:#dddddd; padding-left:5px;padding-right:5px;"
                     TabHoverStyle="color:red" TabSelectedStyle="border:solid 1px black;border-bottom:none;
                     background:white;padding-left:5px;padding-right:5px;" SepDefaultStyle="border-bottom:solid
                     1px #000000;" TargetID="mpHoriz"&gt; <br />
                         &lt;mytab:Tab Text="Info" /&gt; 
                     <br />
                         &lt;mytab:TabSeparator /&gt; 
                     <br />
                         &lt;mytab:Tab Text="Address" /&gt; 
                     <br />
                         &lt;mytab:TabSeparator /&gt; 
                     <br />
                         &lt;mytab:Tab Text="Hobby's" /&gt; 
                     <br />
                         &lt;mytab:TabSeparator /&gt; 
                     <br />
                     &lt;/mytab:TabStrip&gt; </font>
                  </p>
                  <p>
                    <font size="1">&lt;mytab:MultiPage id="mpHoriz" runat="server" Style="BORDER-RIGHT:#000000
                     1px solid; PADDING-RIGHT:5px; BORDER-TOP:medium none; PADDING-LEFT:5px; PADDING-BOTTOM:5px;
                     BORDER-LEFT:#000000 1px solid; PADDING-TOP:5px; BORDER-BOTTOM:#000000 1px solid" Height="150"&gt; 
                     <br />
                         &lt;mytab:PageView&gt; <br />
                             &lt;table&gt; <br />
                                 &lt;tr&gt; <br />
                                    
                     &lt;td&gt;Name &lt;/td&gt; <br />
                                    
                     &lt;td&gt;&lt;asp:TextBox id="Textbox1" runat="server"&gt;&lt;/asp:TextBox&gt; &lt;/td&gt; <br />
                                 &lt;/tr&gt; <br />
                                 &lt;tr&gt; <br />
                                    
                     &lt;td&gt;Prename &lt;/td&gt; <br />
                                    
                     &lt;td&gt; &lt;asp:TextBox id="Textbox2" runat="server"&gt;&lt;/asp:TextBox&gt; &lt;/td&gt; <br />
                                 &lt;/tr&gt; <br />
                             &lt;/table&gt; <br />
                         &lt;/mytab:PageView&gt; <br />
                         &lt;mytab:PageView&gt; <br />
                             &lt;table&gt; <br />
                                 &lt;tr&gt; <br />
                                    
                     &lt;td&gt;Street + Nr &lt;/td&gt; <br />
                                    
                     &lt;td&gt; &lt;asp:TextBox id="Textbox3" runat="server"&gt;&lt;/asp:TextBox&gt; &lt;/td&gt; <br />
                                 &lt;/tr&gt; <br />
                                 &lt;tr&gt; <br />
                                    
                     &lt;td&gt;Postcode &lt;/td&gt; <br />
                                    
                     &lt;td&gt; &lt;asp:TextBox id="Textbox4" runat="server"&gt;&lt;/asp:TextBox&gt; &lt;/td&gt; <br />
                                 &lt;/tr&gt; <br />
                                 &lt;tr&gt; <br />
                                    
                     &lt;td&gt;City &lt;/td&gt; <br />
                                    
                     &lt;td&gt; &lt;asp:TextBox id="Textbox5" runat="server"&gt;&lt;/asp:TextBox&gt; &lt;/td&gt; <br />
                                 &lt;/tr&gt; <br />
                             &lt;/table&gt; <br />
                         &lt;/mytab:PageView&gt; <br />
                         &lt;mytab:PageView&gt; <br />
                             &lt;table&gt; <br />
                                 &lt;tr&gt; <br />
                                    
                     &lt;td&gt;Hobby's &lt;/td&gt; <br />
                                    
                     &lt;td&gt; &lt;asp:TextBox id="Hobby1" runat="server"&gt;&lt;/asp:TextBox&gt; &lt;/td&gt; <br />
                                 &lt;/tr&gt; <br />
                                 &lt;tr&gt; <br />
                                    
                     &lt;td&gt; &lt;/td&gt; <br />
                                    
                     &lt;td&gt; &lt;asp:TextBox id="Hobby2" runat="server"&gt;&lt;/asp:TextBox&gt; &lt;/td&gt; <br />
                                 &lt;/tr&gt; <br />
                                 &lt;tr&gt; <br />
                                        
                     &lt;td&gt; &lt;/td&gt; <br />
                                        
                     &lt;td&gt; &lt;asp:TextBox id="Hobby3" runat="server"&gt;&lt;/asp:TextBox&gt; &lt;/td&gt; <br />
                                 &lt;/tr&gt; <br />
                                 &lt;tr&gt; <br />
                                        
                     &lt;td&gt; &lt;/td&gt; <br />
                                        
                     &lt;td&gt; &lt;asp:TextBox id="Hobby4" runat="server"&gt;&lt;/asp:TextBox&gt; &lt;/td&gt; <br />
                                 &lt;/tr&gt; <br />
                             &lt;/table&gt; <br />
                         &lt;/mytab:PageView&gt; 
                     <br />
                     &lt;/mytab:MultiPage&gt;</font>
                  </p>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
      Personnaly I use the tabstrip with Multipage. In this multipage I put my own usercontrols.
      The reason is, to modify you tabstrip content is easier when using user controls,
      than putting the content directly on the multipage. With the last way of programming
      you must change everything thourgh code, because you can't reach teh content in design
      view.
   </p>
        <p>
          <strong>One note : These controls are not currently supported by Microsoft !!</strong>
        </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=0a48d85f-c9f9-4b94-8e88-5cade687a3e8" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Internet Explorer Webcontrols</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,0a48d85f-c9f9-4b94-8e88-5cade687a3e8.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Internet+Explorer+Webcontrols.aspx</link>
      <pubDate>Thu, 13 Jan 2005 19:39:07 GMT</pubDate>
      <description>&lt;p&gt;
   When you want to have tabs on your ASP.Net page, you don't have a standard webcontrol
   in Visual Studio .Net. But Microsoft offers a solution in the MSDN. In the MSDN you
   can find a topic about &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/webcontrols/overview/overview.asp"&gt;Internet
   Explorer Webcontrols&lt;/a&gt;. These selection controls exists of : 
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Treeview 
   &lt;li&gt;
      Toolbar 
   &lt;li&gt;
      Tabstrip and Multipage 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   You can download these controls &lt;a href="http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/samples/internet/welcome.asp"&gt;here&lt;/a&gt;. 
&lt;/p&gt;
&lt;h4&gt;The tabstrip
&lt;/h4&gt;
&lt;p&gt;
   The tabstrip can be used for a tabbed layout/menu on your ASP.Net page. In combination
   with the multipage, we got a powerfull control which can be used to render your pageview
   whenever a tab is selected. We can show the content of a page, without navigation
   to another page.
&lt;/p&gt;
&lt;p&gt;
   The tabstrip implements server- and client-side objects, therefor the tabstrip offers
   two modes of authoring.
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Tabstrip server-side controls : Tabstrip interfaces can be implemented using the elements
      and objects exposed by the Tabstrip server-side controls. 
   &lt;li&gt;
      Tabstrip behavior : Tabstrip interfaces can also be written in HTML using the Tabstrip
      behavior.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;In both cases the same set of elements is used, but due the differences in the architecture the models are a bit different. The best is, when the browser is not known, to use server side controls. When you know that IE 5.5 or later will be used, you better use the Tabstrip behavior. The advantge is that there will be a fatser donwload, because server-side processing is avoided.&lt;/pre&gt;
&lt;h4&gt;Tabstrip objects
&lt;/h4&gt;
&lt;p&gt;
   The Tabstrip has 3 objects :
&lt;/p&gt;
&lt;p&gt;
   &lt;table id=Table1 cellspacing=1 cellpadding=1 border=0&gt;
      &lt;tbody&gt;
         &lt;tr&gt;
            &lt;td width=139 bgcolor=gainsboro&gt;
               &lt;p align=center&gt;
                  &lt;strong&gt;&lt;font size=2&gt;Client Behavior&lt;/font&gt;&lt;/strong&gt;
               &lt;/p&gt;
            &lt;/td&gt;
            &lt;td width=109 bgcolor=gainsboro&gt;
               &lt;p align=center&gt;
                  &lt;strong&gt;&lt;font size=2&gt;ASP.NET&lt;/font&gt;&lt;/strong&gt;
               &lt;/p&gt;
            &lt;/td&gt;
            &lt;td bgcolor=gainsboro&gt;
               &lt;p align=center&gt;
                  &lt;strong&gt;&lt;font size=2&gt;Description&lt;/font&gt;&lt;/strong&gt;
               &lt;/p&gt;
            &lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr&gt;
            &lt;td width=139&gt;
               &lt;font size=2&gt;TabStrip&lt;/font&gt;&lt;/td&gt;
            &lt;td width=109&gt;
               &lt;font size=2&gt;TabStrip&lt;/font&gt;&lt;/td&gt;
            &lt;td&gt;
               &lt;font size=2&gt;A container element for other TabStrip elements&lt;/font&gt;&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr&gt;
            &lt;td width=139&gt;
               &lt;font size=2&gt;Tab&lt;/font&gt;&lt;/td&gt;
            &lt;td width=109&gt;
               &lt;font size=2&gt;Tab&lt;/font&gt;&lt;/td&gt;
            &lt;td&gt;
               &lt;font size=2&gt;Defines a tab element within a TabStrip control&lt;/font&gt;&lt;/td&gt;
         &lt;/tr&gt;
         &lt;tr&gt;
            &lt;td width=139&gt;
               &lt;font size=2&gt;TabSeparator&lt;/font&gt;&lt;/td&gt;
            &lt;td width=109&gt;
               &lt;font size=2&gt;TabSeparator&lt;/font&gt;&lt;/td&gt;
            &lt;td&gt;
               &lt;font size=2&gt;Defines a separator element, which is placed between two adjacent Tab
               control&lt;/font&gt;&lt;/td&gt;
         &lt;/tr&gt;
      &lt;/tbody&gt;
   &lt;/table&gt;
&lt;/p&gt;
&lt;h4&gt;Customization 
&lt;/h4&gt;
&lt;p&gt;
   The tabstrip offers a few features :
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Text based tabs : Is automatiscly available. you focus only on the text content of
      the tab. You can use CSS. 
   &lt;li&gt;
      Picture-based tabs : you want the control (full or partial) over the tab, or you want
      to add graphical items to your tab. 
   &lt;li&gt;
      Orientation : You can decide to use vertical or horizontal tabs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Also for formatting there are some features :
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Default : This state is active when the tab is not selected and the no mouse is going
      over the tab 
   &lt;li&gt;
      Selected : This state is active when a tab is selected 
   &lt;li&gt;
      Hover : This state is used when the mouse is moving over the tab&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Multipage or not
&lt;/h4&gt;
&lt;p&gt;
   You can use multipages on your tabs. This control is also available in the internet
   web controls.
&lt;/p&gt;
&lt;h5&gt;With multipage
&lt;/h5&gt;
&lt;p&gt;
   This is most used possibility. You define your tabstrip and your items for each tabstrip
   using the multipage control.
&lt;/p&gt;
&lt;h5&gt;Without multipage
&lt;/h5&gt;
&lt;p&gt;
   When using this method, you need to use the SelectedIndex property of the tabstrip
   so you could naviagte to other Web pages. 
&lt;/p&gt;
&lt;h4&gt;Example
&lt;/h4&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/tabstrip-example.JPG" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;table id=Table2 cellspacing=1 cellpadding=1 border=1&gt;
      &lt;tbody&gt;
         &lt;tr&gt;
            &lt;td bgcolor=gainsboro&gt;
               &lt;p&gt;
                  &lt;font size=1&gt;&amp;lt;mytab:TabStrip id="tsHoriz" runat="server" Style="FONT-WEIGHT:bold"
                  TabDefaultStyle="border:solid 1px black;background:#dddddd; padding-left:5px;padding-right:5px;"
                  TabHoverStyle="color:red" TabSelectedStyle="border:solid 1px black;border-bottom:none;
                  background:white;padding-left:5px;padding-right:5px;" SepDefaultStyle="border-bottom:solid
                  1px #000000;" TargetID="mpHoriz"&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp; &amp;nbsp; &amp;lt;mytab:Tab Text="Info" /&amp;gt; 
                  &lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mytab:TabSeparator /&amp;gt; 
                  &lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mytab:Tab Text="Address" /&amp;gt; 
                  &lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mytab:TabSeparator /&amp;gt; 
                  &lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mytab:Tab Text="Hobby's" /&amp;gt; 
                  &lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mytab:TabSeparator /&amp;gt; 
                  &lt;br&gt;
                  &amp;lt;/mytab:TabStrip&amp;gt; &lt;/font&gt;
               &lt;/p&gt;
               &lt;p&gt;
                  &lt;font size=1&gt;&amp;lt;mytab:MultiPage id="mpHoriz" runat="server" Style="BORDER-RIGHT:#000000
                  1px solid; PADDING-RIGHT:5px; BORDER-TOP:medium none; PADDING-LEFT:5px; PADDING-BOTTOM:5px;
                  BORDER-LEFT:#000000 1px solid; PADDING-TOP:5px; BORDER-BOTTOM:#000000 1px solid" Height="150"&amp;gt; 
                  &lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mytab:PageView&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt;Name &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt;&amp;lt;asp:TextBox id="Textbox1" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt; &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt;Prename &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt; &amp;lt;asp:TextBox id="Textbox2" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt; &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/table&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mytab:PageView&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mytab:PageView&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt;Street + Nr &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt; &amp;lt;asp:TextBox id="Textbox3" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt; &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt;Postcode &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt; &amp;lt;asp:TextBox id="Textbox4" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt; &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt;City &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt; &amp;lt;asp:TextBox id="Textbox5" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt; &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/table&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mytab:PageView&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mytab:PageView&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt;Hobby's &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt; &amp;lt;asp:TextBox id="Hobby1" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt; &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt; &amp;lt;asp:TextBox id="Hobby2" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt; &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt; &amp;lt;asp:TextBox id="Hobby3" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt; &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
                  &amp;lt;td&amp;gt; &amp;lt;asp:TextBox id="Hobby4" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt; &amp;lt;/td&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/table&amp;gt;&amp;nbsp;&lt;br&gt;
                  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mytab:PageView&amp;gt; 
                  &lt;br&gt;
                  &amp;lt;/mytab:MultiPage&amp;gt;&lt;/font&gt; 
               &lt;/p&gt;
            &lt;/td&gt;
         &lt;/tr&gt;
      &lt;/tbody&gt;
   &lt;/table&gt;
&lt;p&gt;
   Personnaly I use the tabstrip with Multipage. In this multipage I put my own usercontrols.
   The reason is, to modify you tabstrip content is easier when using user controls,
   than putting the content directly on the multipage. With the last way of programming
   you must change everything thourgh code, because you can't reach teh content in design
   view.
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;One note : These controls are not currently supported by Microsoft !!&lt;/strong&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=0a48d85f-c9f9-4b94-8e88-5cade687a3e8" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,0a48d85f-c9f9-4b94-8e88-5cade687a3e8.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=fdaebb83-6feb-427c-a091-8bd7f05360aa</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,fdaebb83-6feb-427c-a091-8bd7f05360aa.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,fdaebb83-6feb-427c-a091-8bd7f05360aa.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=fdaebb83-6feb-427c-a091-8bd7f05360aa</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      For my current project the user can select a file for uploading to a network drive. 
      First of all, the network drive is outside the web server.  So this could give
      us troubles with security.  The reason for this is that there is an MSAccess
      application which doing the same.  And if possible we must provide a solution
      with the most little reprogramming in the MSAccess application.
   </p>
        <p>
      The customer asked us to create a pilot with several possibilities.
   </p>
        <p>
      So the first thing we did was creating just an upload component, which will save the
      file in a directory on the web server.  This is very easy.  Just put the
      HTMLInput control on your site (Remark: This is a standard HTML control).  
   </p>
        <p>
      &lt;input type="file" id="MyFile" runat="server" NAME="MyFile" /&gt;
   </p>
        <p>
      In the click event you can use the FileName property of HTMLInput control.
   </p>
        <p>
      string strFileName = MyFile.PostedFile.FileName;<br />
      strFileName = System.IO.Path.GetFileName(strFileName);
   </p>
        <p>
          <br />
      Now you can use the save method:
   </p>
        <p>
      MyFile.PostedFile.SaveAs(Server.MapPath("./") + strFileName);
   </p>
        <p>
      And done.
   </p>
        <p>
      For more info see also at the MSDN article <a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;323246">How
      To Upload a File to a Web Server in ASP.NET by Using Visual C# .NET</a>.
   </p>
        <p>
      You can use this principle also for multiple file upload:<br />
      We put also a listbox on the screen, where the selected files are visible for the
      user.  When pressing the upload button, the system will upload all files one
      by one.<br />
      Be aware : What really happens is that when choosing a file with the HTMLInput control,
      and we press the button to add this file to our list of files, we have a roundtrip
      to the server.  Also the file is already uploaded to a temporary directory. 
      You see this very well in following situation:
   </p>
        <p>
       - Take two large files (10 MB or so)<br />
       - Select the first and press add to list<br />
       - The systems will add this file in our list, but this takes some time<br />
       - Select the second file and press add to list<br />
       - The systems will also add this file in our list, but this takes some time<br />
       - Now press the upload button, and the system is done immediately.
   </p>
        <p>
      See later for bigger files, because there's a limitation.
   </p>
        <p>
          <br />
      Because we use an Oracle DB, we looked for another solution: Blob fields.<br />
      These fields are form the type "base64Binary", and can contains anything (textfiles,
      images, word documents, ...).
   </p>
        <p>
      To save your data in a blob field, you must use streaming.  The same for reading
      the blobfield.
   </p>
        <p>
      FileStream fs = new FileStream(@uploadFile, FileMode.OpenOrCreate, FileAccess.Read);<br />
      byte[] MyData= new byte[fs.Length];<br />
      fs.Read(MyData, 0, System.Convert.ToInt32(fs.Length));
   </p>
        <p>
      fs.Close();
   </p>
        <p>
      Now you can write MyData in your table field.
   </p>
        <p>
      The same way for reading :
   </p>
        <p>
      byte[] MyData= new byte[0];
   </p>
        <p>
      &lt;Here you put the tablefield content in MyData.
   </p>
        <p>
      int ArraySize = new int();<br />
      ArraySize = MyData.GetUpperBound(0);
   </p>
        <p>
      FileStream fs = new FileStream(@"C:\temp\" + fName.Text.ToString(), FileMode.OpenOrCreate,
      FileAccess.Write);<br />
      fs.Write(MyData, 0,ArraySize);<br />
      fs.Close();
   </p>
        <p>
      All this is perfectly described at the MSDN article <a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;309158">How
      To Read and Write BLOB Data by Using ADO.NET with Visual C# .NET</a> (although this
      with using SQLServer).
   </p>
        <p>
      Uploading larger files<br />
      Except when using the Blob fields, we have by default a limitation to upload files
      not bigger then 4,096 kilobytes.  When you want to upload bigger files you have
      to change the maxRequestLength parameter of the httpRuntime section in the web.config
      file.
   </p>
        <p>
      When you want to change this for all your applications, you can modify the Machine.config
      (Located in the \System Root\Microsoft.NET\Framework\Version Number\CONFIG directory). 
      Be sure not to set this parameter too low.  This because when the file is bigger,
      IE will display cannot find server or DNS" error message.  You cannot use a custom
      error page.  While looking for this, I came across an article on <a href="http://www.developer.com">developer.com</a> which
      provide a solution so you could give a custom error message.  You can find the
      article <a href="http://www.developer.com/db/article.php/3426051">here</a>.
   </p>
        <p>
      As sson as I know what solution we will implement to save the file on a netwrok drive,
      I will update this article.<br /></p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=fdaebb83-6feb-427c-a091-8bd7f05360aa" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>File uploading in ASP.Net</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,fdaebb83-6feb-427c-a091-8bd7f05360aa.aspx</guid>
      <link>http://blog.svencipido.be/Blog/File+Uploading+In+ASPNet.aspx</link>
      <pubDate>Tue, 21 Dec 2004 14:02:55 GMT</pubDate>
      <description>&lt;p&gt;
   For my current project the user can select a file for uploading to a network drive.&amp;nbsp;
   First of all, the network drive is outside the web server.&amp;nbsp; So this could give
   us troubles with security.&amp;nbsp; The reason for this is that there is an MSAccess
   application which doing the same.&amp;nbsp; And if possible we must provide a solution
   with the most little reprogramming in the MSAccess application.
&lt;/p&gt;
&lt;p&gt;
   The customer asked us to create a pilot with several possibilities.
&lt;/p&gt;
&lt;p&gt;
   So the first thing we did was creating just an upload component, which will save the
   file in a directory on the web server.&amp;nbsp; This is very easy.&amp;nbsp; Just put the
   HTMLInput control on your site (Remark: This is a standard HTML control).&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   &amp;lt;input type="file" id="MyFile" runat="server" NAME="MyFile" /&amp;gt;
&lt;/p&gt;
&lt;p&gt;
   In the click event you can use the FileName property of HTMLInput control.
&lt;/p&gt;
&lt;p&gt;
   string strFileName = MyFile.PostedFile.FileName;&lt;br&gt;
   strFileName = System.IO.Path.GetFileName(strFileName);
&lt;/p&gt;
&lt;p&gt;
   &lt;br&gt;
   Now you can use the save method:
&lt;/p&gt;
&lt;p&gt;
   MyFile.PostedFile.SaveAs(Server.MapPath("./") + strFileName);
&lt;/p&gt;
&lt;p&gt;
   And done.
&lt;/p&gt;
&lt;p&gt;
   For more info see also at the MSDN article &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;323246"&gt;How
   To Upload a File to a Web Server in ASP.NET by Using Visual C# .NET&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   You can use this principle also for multiple file upload:&lt;br&gt;
   We put also a listbox on the screen, where the selected files are visible for the
   user.&amp;nbsp; When pressing the upload button, the system will upload all files one
   by one.&lt;br&gt;
   Be aware : What really happens is that when choosing a file with the HTMLInput control,
   and we press the button to add this file to our list of files, we have a roundtrip
   to the server.&amp;nbsp; Also the file is already uploaded to a temporary directory.&amp;nbsp;
   You see this very well in following situation:
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;- Take two large files (10 MB or so)&lt;br&gt;
   &amp;nbsp;- Select the first and press add to list&lt;br&gt;
   &amp;nbsp;- The systems will add this file in our list, but this takes some time&lt;br&gt;
   &amp;nbsp;- Select the second file and press add to list&lt;br&gt;
   &amp;nbsp;- The systems will also add this file in our list, but this takes some time&lt;br&gt;
   &amp;nbsp;- Now press the upload button, and the system is done immediately.
&lt;/p&gt;
&lt;p&gt;
   See later for bigger files, because there's a limitation.
&lt;/p&gt;
&lt;p&gt;
   &lt;br&gt;
   Because we use an Oracle DB, we looked for another solution: Blob fields.&lt;br&gt;
   These fields are form the type "base64Binary", and can contains anything (textfiles,
   images, word documents, ...).
&lt;/p&gt;
&lt;p&gt;
   To save your data in a blob field, you must use streaming.&amp;nbsp; The same for reading
   the blobfield.
&lt;/p&gt;
&lt;p&gt;
   FileStream fs = new FileStream(@uploadFile, FileMode.OpenOrCreate, FileAccess.Read);&lt;br&gt;
   byte[] MyData= new byte[fs.Length];&lt;br&gt;
   fs.Read(MyData, 0, System.Convert.ToInt32(fs.Length));
&lt;/p&gt;
&lt;p&gt;
   fs.Close();
&lt;/p&gt;
&lt;p&gt;
   Now you can write MyData in your table field.
&lt;/p&gt;
&lt;p&gt;
   The same way for reading :
&lt;/p&gt;
&lt;p&gt;
   byte[] MyData= new byte[0];
&lt;/p&gt;
&lt;p&gt;
   &amp;lt;Here you put the tablefield content in MyData.
&lt;/p&gt;
&lt;p&gt;
   int ArraySize = new int();&lt;br&gt;
   ArraySize = MyData.GetUpperBound(0);
&lt;/p&gt;
&lt;p&gt;
   FileStream fs = new FileStream(@"C:\temp\" + fName.Text.ToString(), FileMode.OpenOrCreate,
   FileAccess.Write);&lt;br&gt;
   fs.Write(MyData, 0,ArraySize);&lt;br&gt;
   fs.Close();
&lt;/p&gt;
&lt;p&gt;
   All this is perfectly described at the MSDN article &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;309158"&gt;How
   To Read and Write BLOB Data by Using ADO.NET with Visual C# .NET&lt;/a&gt; (although this
   with using SQLServer).
&lt;/p&gt;
&lt;p&gt;
   Uploading larger files&lt;br&gt;
   Except when using the Blob fields, we have by default a limitation to upload files
   not bigger then 4,096 kilobytes.&amp;nbsp; When you want to upload bigger files you have
   to change the maxRequestLength parameter of the httpRuntime section in the web.config
   file.
&lt;/p&gt;
&lt;p&gt;
   When you want to change this for all your applications, you can modify the Machine.config
   (Located in the \System Root\Microsoft.NET\Framework\Version Number\CONFIG directory).&amp;nbsp;
   Be sure not to set this parameter too low.&amp;nbsp; This because when the file is bigger,
   IE will display cannot find server or DNS" error message.&amp;nbsp; You cannot use a custom
   error page.&amp;nbsp; While looking for this, I came across an article on &lt;a href="http://www.developer.com"&gt;developer.com&lt;/a&gt; which
   provide a solution so you could give a custom error message.&amp;nbsp; You can find the
   article &lt;a href="http://www.developer.com/db/article.php/3426051"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   As sson as I know what solution we will implement to save the file on a netwrok drive,
   I will update this article.&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=fdaebb83-6feb-427c-a091-8bd7f05360aa" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,fdaebb83-6feb-427c-a091-8bd7f05360aa.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=c5212c49-76be-425b-9014-cb027b1863fe</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,c5212c49-76be-425b-9014-cb027b1863fe.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,c5212c49-76be-425b-9014-cb027b1863fe.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=c5212c49-76be-425b-9014-cb027b1863fe</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      I just came across the following problem : A colleague of me has created a server
      control.  After dropping this control on my ASP.Net page, following line of code
      is added to the generated code section :
   </p>
        <p>
      protected &lt;assembly&gt; &lt;controlname On form&gt;;
   </p>
        <p>
      When compiling we got following error :
   </p>
        <p>
      "page.aspx.cs(19): Type of '&lt;control&gt;' is not CLS-compliant"
   </p>
        <p>
      My colleague doesn't receive this message.  At first, just to have a quick, working
      solution, we put following line above every line :
   </p>
        <p>
      [CLSCompliant(false)]
   </p>
        <p>
      In this case, my project compiles and I could put it on the test server.  A few
      days later, I had some time to look deeper into this problem.
   </p>
        <p>
      It seems that to make an assembly CLS Compliant, your 3-letter mnemonics must be Pascal
      case (Only 2 characters are all uppercase).  Also several checks are done :
   </p>
        <ul>
          <li>
         Class and member names cannot differ only by case. For example, you can't have one 
         property named Counter and another named counter. This is important for cross-language
         compatibility since VB .NET isn't case sensitive.</li>
          <li>
         Overloaded class methods cannot differ only by out or ref parameter designations.</li>
          <li>
         Publicly exposed members cannot start with an underscore ( _ ).</li>
          <li>
         Operators can't be overloaded</li>
          <li>
         Unsigned types can't be part of the public interface of a class</li>
        </ul>
        <p>
          <br />
      The reason why my colleague doesn't need the CLS compliant = false in his code, is
      because he has the code of the server control in his project.
   </p>
        <p>
      To solve my problem : He just need to add set the attribute [assembly: CLSCompliant(true)].  
   </p>
        <p>
      When this is done, and I have the new DLL, I can delete the line to set the CLS Compliant
      false.  So an easy solution.  Also if this attribute isn't set, It's possible
      that the control can't be used within any .Net language.
   </p>
        <p>
      Remark : When using VB.Net, you are lucky because VB.Net doesn't check for  the
      CLS Compliance.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=c5212c49-76be-425b-9014-cb027b1863fe" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Building error : Type of control Not CLSCompliant</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,c5212c49-76be-425b-9014-cb027b1863fe.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Building+Error++Type+Of+Control+Not+CLSCompliant.aspx</link>
      <pubDate>Tue, 07 Dec 2004 12:23:19 GMT</pubDate>
      <description>&lt;p&gt;
   I just came across the following problem : A colleague of me has created a server
   control.&amp;nbsp; After dropping this control on my ASP.Net page, following line of code
   is added to the generated code section :
&lt;/p&gt;
&lt;p&gt;
   protected &amp;lt;assembly&amp;gt; &amp;lt;controlname On form&amp;gt;;
&lt;/p&gt;
&lt;p&gt;
   When compiling we got following error :
&lt;/p&gt;
&lt;p&gt;
   "page.aspx.cs(19): Type of '&amp;lt;control&amp;gt;' is not CLS-compliant"
&lt;/p&gt;
&lt;p&gt;
   My colleague doesn't receive this message.&amp;nbsp; At first, just to have a quick, working
   solution, we put following line above every line :
&lt;/p&gt;
&lt;p&gt;
   [CLSCompliant(false)]
&lt;/p&gt;
&lt;p&gt;
   In this case, my project compiles and I could put it on the test server.&amp;nbsp; A few
   days later, I had some time to look deeper into this problem.
&lt;/p&gt;
&lt;p&gt;
   It seems that to make an assembly CLS Compliant, your 3-letter mnemonics must be Pascal
   case (Only 2 characters are all uppercase).&amp;nbsp; Also several checks are done :
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Class and member names cannot differ only by case. For example, you can't have one&amp;nbsp;
      property named Counter and another named counter. This is important for cross-language
      compatibility since VB .NET isn't case sensitive.&lt;/li&gt;
   &lt;li&gt;
      Overloaded class methods cannot differ only by out or ref parameter designations.&lt;/li&gt;
   &lt;li&gt;
      Publicly exposed members cannot start with an underscore ( _ ).&lt;/li&gt;
   &lt;li&gt;
      Operators can't be overloaded&lt;/li&gt;
   &lt;li&gt;
      Unsigned types can't be part of the public interface of a class&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;br&gt;
   The reason why my colleague doesn't need the CLS compliant = false in his code, is
   because he has the code of the server control in his project.
&lt;/p&gt;
&lt;p&gt;
   To solve my problem : He just need to add set the attribute [assembly: CLSCompliant(true)].&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   When this is done, and I have the new DLL, I can delete the line to set the CLS Compliant
   false.&amp;nbsp; So an easy solution.&amp;nbsp; Also if this attribute isn't set, It's possible
   that the control can't be used within any .Net language.
&lt;/p&gt;
&lt;p&gt;
   Remark : When using VB.Net, you are lucky because VB.Net doesn't check for&amp;nbsp; the
   CLS Compliance.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=c5212c49-76be-425b-9014-cb027b1863fe" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,c5212c49-76be-425b-9014-cb027b1863fe.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=1655ace7-da09-4393-9676-c501e9972319</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,1655ace7-da09-4393-9676-c501e9972319.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,1655ace7-da09-4393-9676-c501e9972319.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=1655ace7-da09-4393-9676-c501e9972319</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      After my entry about the <a href="http://blog.svencipido.be/Blog/PermaLink,guid,571ac443-207b-45e2-9730-74c5d397a749.aspx">conversion
      tools from C# to vb.net</a>, I just found a tool from Tangible Software Solutions
      to <a href="http://www.instantcsharp.com">convert vb.net to c#.</a></p>
        <p>
      I don't have tried this tool at the moment, but you can donwload a demo.  You
      can buy a full version.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=1655ace7-da09-4393-9676-c501e9972319" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Convert vb.net to C#</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,1655ace7-da09-4393-9676-c501e9972319.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Convert+Vbnet+To+C.aspx</link>
      <pubDate>Tue, 16 Nov 2004 14:13:23 GMT</pubDate>
      <description>&lt;p&gt;
   After my entry about the &lt;a href="http://blog.svencipido.be/Blog/PermaLink,guid,571ac443-207b-45e2-9730-74c5d397a749.aspx"&gt;conversion
   tools from C# to vb.net&lt;/a&gt;, I just found a tool from Tangible Software Solutions
   to &lt;a href="http://www.instantcsharp.com"&gt;convert vb.net to c#.&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   I don't have tried this tool at the moment, but you can donwload a demo.&amp;nbsp; You
   can buy a full version.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=1655ace7-da09-4393-9676-c501e9972319" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,1655ace7-da09-4393-9676-c501e9972319.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=9a5ecc95-dae5-4478-af02-6a3593931d83</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,9a5ecc95-dae5-4478-af02-6a3593931d83.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,9a5ecc95-dae5-4478-af02-6a3593931d83.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9a5ecc95-dae5-4478-af02-6a3593931d83</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      At this moment I'm busy with an ASP.Net application in C#, for a customer. We came
      across the problem that we need to save the Dataset information on the client side,
      because otherwise we always need a round trip to the server and that's something we
      don't want tot do. The data need to be saved contains maximum around 20 records. State
      management will do this for us. 
   </p>
        <p>
      State management involves storing temporary information that is important to the current
      users. It only applies to web applications that need to keep track of users, authorization
      and page flow. 
   </p>
        <p>
      State management information is information that is only needed temporarily to enable
      the system’s functionality. It is not ‘permanent data’ as with e.g.
      databases. State management be divided into three components: 
   </p>
        <ul>
          <li>
         Information about the current session for a single user 
      </li>
          <li>
         Information about the web application for all users\ 
      </li>
          <li>
         Information about page flow and page data Several options are possible. 
      </li>
        </ul>
        <p>
      We will write them down with the advantages/disadventages. 
   </p>
        <h3>Sessions info 
   </h3>
        <h4>Quick guidelines
   </h4>
        <ul>
          <li>
         Restrict ViewState information to non-sensitive data that is needed on one page only 
      </li>
          <li>
         When using the Session object, preferably use objects that are serializable as these
         objects can be migrated to other session state variants 
      </li>
          <li>
         Use InProc session state for simple web applications 
      </li>
          <li>
         When possible, use session state with server affinity for a web farm 
      </li>
          <li>
         Use server session state or database session state for web farms where server affinity
         is not possible 
      </li>
        </ul>
        <h4>ViewState 
   </h4>
        <p>
      ViewState is a system where data is encoded and sent along as HTML towards the client
      and subsequently returned with the next request. The information is visible as encoded
      text in the web page’s source. ViewState is supported by .Net server controls
      and can be custom-implemented. ViewState operates fully stateless, eliminating the
      need to store data on the web server. Since extra information is sent to the client
      and back to the server, possible performance issues may arise. 
   </p>
        <p>
          <strong>
            <u>Pro: </u>
          </strong>
        </p>
        <ul>
          <li>
         No server resources are used · Fully stateless, so easily scalable 
      </li>
          <li>
         Easy implementation 
      </li>
        </ul>
        <p>
          <strong>
            <u>Contra:</u>
          </strong>
        </p>
        <ul>
          <li>
         Large amounts of data transport between client and server may cause performance issues 
      </li>
          <li>
         Problems may arise regarding security because sensitive information is passed on 
      </li>
          <li>
         ViewState cannot be used to enable information interchange between pages 
      </li>
        </ul>
        <h4>InProc Session State 
   </h4>
        <p>
      InProc session state is a system where session data is kept in a Session object. This
      object is managed in the server’s memory. 
   </p>
        <p>
          <strong>
            <u>Pro:</u>
          </strong>
        </p>
        <ul>
          <li>
         Easy implementation 
      </li>
          <li>
         Expandable towards other session state variants (in principle) 
      </li>
          <li>
         The Session object is available throughout application 
      </li>
        </ul>
        <p>
          <strong>
            <u>Contra </u>
          </strong>
        </p>
        <ul>
          <li>
         Session data takes up server resources 
      </li>
          <li>
         Not readily scalable to multiple machines 
      </li>
        </ul>
        <h4>Session state with server Affinity 
   </h4>
        <p>
      Session state with server affinity involves keeping data in a Session object. This
      object is managed in the server’s memory. The server affinity will cause a subsequent
      request to be routed to always the same server, solving the problem of scalability. 
   </p>
        <p>
          <strong>
            <u>Pro:</u>
          </strong>
        </p>
        <ul>
          <li>
         Easy implementation from the developer’s point of view (no extra effort needed)\ 
      </li>
          <li>
         The Session object can be used for multiple machines 
      </li>
          <li>
         The Session object is available throughout the application 
      </li>
        </ul>
        <p>
          <strong>
            <u>Contra:</u>
          </strong>
        </p>
        <ul>
          <li>
         External configuration of the server environment is needed 
      </li>
          <li>
         Session data takes up server resources 
      </li>
        </ul>
        <h4>Session State Server 
   </h4>
        <p>
      A session state server is a system that keeps data in the memory of a specially installed
      server. This server is accessible for all other servers within a web farm. Actions
      may be performed on the Session object from within the web application, implicitly
      making use of the state server. 
   </p>
        <p>
          <strong>
            <u>Pro:</u>
          </strong>
        </p>
        <ul>
          <li>
         Easy implementation from the developer’s point of view 
      </li>
          <li>
         Scalable to multiple machines 
      </li>
          <li>
         Configurable through configuration files 
      </li>
        </ul>
        <p>
          <strong>
            <u>Contra:</u>
          </strong>
        </p>
        <ul>
          <li>
         Data must be serializable 
      </li>
          <li>
         Requires a specially equipped machine 
      </li>
          <li>
         Performance is lower compared with a standard session object 
      </li>
        </ul>
        <h4>Database Session State 
   </h4>
        <p>
      Database session state involves keeping data as serialized data in a dedicated SQL
      Server database. 
   </p>
        <p>
          <strong>
            <u>Pro:</u>
          </strong>
        </p>
        <ul>
          <li>
         Easy implementation from the developer’s point of view  
      </li>
          <li>
         Scalable to multiple machines  
      </li>
          <li>
         Configurable through configuration files 
      </li>
        </ul>
        <p>
          <strong>
            <u>Contra:</u>
          </strong>
        </p>
        <ul>
          <li>
         Data must be serializable  
      </li>
          <li>
         Only possible in combination with SQL Server  
      </li>
          <li>
         Performance is lower compared with a standard session object 
      </li>
        </ul>
        <h3>Application info 
   </h3>
        <h4>Quick guidelines 
   </h4>
        <p>
      Application information is general data intended for all users. No session data or
      data that is to be shared between pages is involved. 
   </p>
        <ul>
          <li>
         When working with application state, use infrequently changed serializable data as
         much as possible 
      </li>
          <li>
         When possible, use caching as this eventually frees resources 
      </li>
          <li>
         Use the Application object when data is to be continually present 
      </li>
          <li>
         Never use static variables for application state 
      </li>
        </ul>
        <h4>The Application Object 
   </h4>
        <p>
      For each web application, there are situations where you want to share information
      with all of its users. Application state is a system where such data is maintained
      within an Application object. This object is kept in the server’s memory. 
   </p>
        <p>
          <strong>
            <u>Pro:</u>
          </strong>
        </p>
        <ul>
          <li>
         Easy implementation 
      </li>
          <li>
         Application state variables are accessible throughout the application to all users 
      </li>
        </ul>
        <p>
          <strong>
            <u>Contra: </u>
          </strong>
        </p>
        <ul>
          <li>
         Data is not persistent. Application data is lost in case of a fatal hardware or software
         failure 
      </li>
          <li>
         Application data takes up server resources 
      </li>
          <li>
         There is no guarantee that application state data is unique within a web garden or
         web farm environment, since this data is not shared · Within a multi-threaded
         environment, locking is to be implemented to prevent deadlocks and access violations 
      </li>
        </ul>
        <h4>Static Variables 
   </h4>
        <p>
      Within a web server, static variables are available to all web pages. These variables
      can be easily approached by all code. 
   </p>
        <p>
          <strong>
            <u>Pro: </u>
          </strong>
        </p>
        <ul>
          <li>
         All Application object advantages apply here as well 
      </li>
        </ul>
        <p>
          <strong>
            <u>Contra: </u>
          </strong>
        </p>
        <ul>
          <li>
         No guarantee that data is still present when calling upon it 
      </li>
          <li>
         Potential issues with the ASP.Net standard multi-threading system 
      </li>
          <li>
         Frequent re-starting of the application may cause problems in the application’s
         development phase 
      </li>
        </ul>
        <h4>The Cache Object 
   </h4>
        <p>
      ASP.Net supports the Cache object, where information may be stored that is needed
      for a certain amount of time. 
   </p>
        <p>
          <strong>
            <u>Pro: </u>
          </strong>
        </p>
        <ul>
          <li>
         Data may be cleared after a certain amount of inactivity 
      </li>
        </ul>
        <p>
          <strong>
            <u>Contra: </u>
          </strong>
        </p>
        <ul>
          <li>
         It may be possible that data has to be re-fetched as this object has automatic management 
      </li>
        </ul>
        <h3>Inter-page state 
   </h3>
        <h4>Quick guidelines 
   </h4>
        <p>
      In a web application the situation frequently arises that data that is entered or
      present on a given page is to be passed onto another. This phenomenon is different
      from session state because this data is only needed in memory at the moment of page
      transfer. 
   </p>
        <ul>
          <li>
         Use the Server.Transfer method and HTTPContext to transfer state between pages 
      </li>
          <li>
         Use query strings for simple data that does not have to be secure 
      </li>
          <li>
         Use a single, compound page for a ‘wizard’-like solution 
      </li>
          <li>
         Use session state when all other options are out 
      </li>
          <li>
         Avoid using cookies to store inter-page state 
      </li>
        </ul>
        <h4>Compound Pages using ViewState 
   </h4>
        <p>
      A compound page is a single page that has been divided into several sections. This
      page may function as a ‘wizard’, where different sections of a page are
      shown piece by piece. This way, the information of the ‘previous page’
      (in reality, the previous section of the same page) is available through ViewState. 
   </p>
        <p>
          <strong>
            <u>Pro: </u>
          </strong>
        </p>
        <ul>
          <li>
         Ease of use 
      </li>
        </ul>
        <p>
          <strong>
            <u>Contra: </u>
          </strong>
        </p>
        <ul>
          <li>
         Only suitable for wizard-like applications 
      </li>
          <li>
         Lower performance because all sections are loaded, even when they are not visible 
      </li>
        </ul>
        <h4>Session State 
   </h4>
        <p>
      The Session object may also be used to transfer state between pages. When re-posting
      the page, new information may be placed in the Session object and control may be released
      to another page (by means of the Response.Redirect or Server.Transfer methods). On
      loading, the target page may obtain the information from the Session object. 
   </p>
        <p>
          <strong>
            <u>Pro: </u>
          </strong>
        </p>
        <ul>
          <li>
         Ease of use 
      </li>
        </ul>
        <p>
          <strong>
            <u>Contra: </u>
          </strong>
        </p>
        <ul>
          <li>
         There is no guarantee that the desired information is present in the Session object.
         Validation is necessary to check this 
      </li>
          <li>
         The information is not type-safe  
      </li>
          <li>
         During the time-out period, the data remains available, unnecessarily taking up server
         resources  
      </li>
          <li>
         A Response.Redict results in an extra round trip 
      </li>
        </ul>
        <h4>Query String 
   </h4>
        <p>
      This is a method in which arguments are passed on to the target page by adding text
      to the URL. 
   </p>
        <p>
          <strong>
            <u>Pro: </u>
          </strong>
        </p>
        <ul>
          <li>
         Easy implementation  
      </li>
          <li>
         No server resources are required 
      </li>
        </ul>
        <p>
          <strong>
            <u>Contra: </u>
          </strong>
        </p>
        <ul>
          <li>
         The amount of data that may be passed on is limited 
      </li>
          <li>
         The data is visible in the browser and can be modified by the user. This may cause
         security issues 
      </li>
          <li>
         Provokes the use of client-side scripting · Only works with HTTP Get requests 
      </li>
        </ul>
        <h4>Using server.transfer and httpcontext 
   </h4>
        <p>
      This technique involves a page performing a HTTP Post request to itself and redirecting
      this request to another page through the server by means of the Server.Transfer method.
      At this new page, the old one is still visible through Context.Handler. Moreover,
      arguments may be passed on using the Items collection of HttpContext.Current. 
   </p>
        <p>
          <strong>
            <u>Pro: </u>
          </strong>
        </p>
        <ul>
          <li>
         Makes type-safe passing-on of arguments possible 
      </li>
          <li>
         Not dependent on server or client state 
      </li>
          <li>
         No redirect to the client necessary 
      </li>
        </ul>
        <p>
          <strong>
            <u>Contra: </u>
          </strong>
        </p>
        <ul>
          <li>
         Complex implementation 
      </li>
          <li>
         The URL shown in the browser does not match the page shown in its window 
      </li>
        </ul>
        <h4>Cookies 
   </h4>
        <p>
      Cookies allow for storing small amounts of information at the client. No data is passed
      on between pages, but information is centrally available to all pages. This makes
      information sharing between pages possible. 
   </p>
        <p>
          <strong>
            <u>Pro: </u>
          </strong>
        </p>
        <ul>
          <li>
         No server resources needed 
      </li>
          <li>
         Easy implementation  
      </li>
          <li>
         Configurable expiration  
      </li>
          <li>
         Also suitable for fixed HTML that contains no server functionality 
      </li>
        </ul>
        <p>
          <strong>
            <u>Contra: </u>
          </strong>
        </p>
        <ul>
          <li>
         The amount of data is restricted to a maximum of 8192 bytes (8 kilobytes) per cookie 
      </li>
          <li>
         Data is visible to and modifiable by the client, making it a security risk 
      </li>
          <li>
         A client may refuse or delete cookies 
      </li>
          <li>
         Fixed HTML without server functionality will need client-side scripting to be able
         to read cookies</li>
        </ul>
        <p>
      We have choosen for the Cache object. 
   </p>
        <h3>References 
   </h3>
        <p>
      - <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbconChoosingServerStateOption.asp">Visual
      Basic and Visual C# ConceptsState Management Recommendations</a><br />
      - <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/CachingArch.asp?frame=true">Caching
      Architecture Guide for .Net Framework Applications</a></p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=9a5ecc95-dae5-4478-af02-6a3593931d83" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>State Management</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,9a5ecc95-dae5-4478-af02-6a3593931d83.aspx</guid>
      <link>http://blog.svencipido.be/Blog/State+Management.aspx</link>
      <pubDate>Fri, 15 Oct 2004 13:41:57 GMT</pubDate>
      <description>&lt;p&gt;
   At this moment I'm busy with an ASP.Net application in C#, for a customer. We came
   across the problem that we need to save the Dataset information on the client side,
   because otherwise we always need a round trip to the server and that's something we
   don't want tot do. The data need to be saved contains maximum around 20 records. State
   management will do this for us. 
&lt;/p&gt;
&lt;p&gt;
   State management involves storing temporary information that is important to the current
   users. It only applies to web applications that need to keep track of users, authorization
   and page flow. 
&lt;/p&gt;
&lt;p&gt;
   State management information is information that is only needed temporarily to enable
   the system&amp;#8217;s functionality. It is not &amp;#8216;permanent data&amp;#8217; as with e.g.
   databases. State management be divided into three components: 
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Information about the current session for a single user 
   &lt;li&gt;
      Information about the web application for all users\ 
   &lt;li&gt;
      Information about page flow and page data Several options are possible. 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   We will write them down with the advantages/disadventages. 
&lt;/p&gt;
&lt;h3&gt;Sessions info 
&lt;/h3&gt;
&lt;h4&gt;Quick guidelines
&lt;/h4&gt;
&lt;ul&gt;
   &lt;li&gt;
      Restrict ViewState information to non-sensitive data that is needed on one page only 
   &lt;li&gt;
      When using the Session object, preferably use objects that are serializable as these
      objects can be migrated to other session state variants 
   &lt;li&gt;
      Use InProc session state for simple web applications 
   &lt;li&gt;
      When possible, use session state with server affinity for a web farm 
   &lt;li&gt;
      Use server session state or database session state for web farms where server affinity
      is not possible 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;ViewState 
&lt;/h4&gt;
&lt;p&gt;
   ViewState is a system where data is encoded and sent along as HTML towards the client
   and subsequently returned with the next request. The information is visible as encoded
   text in the web page&amp;#8217;s source. ViewState is supported by .Net server controls
   and can be custom-implemented. ViewState operates fully stateless, eliminating the
   need to store data on the web server. Since extra information is sent to the client
   and back to the server, possible performance issues may arise. 
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Pro: &lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      No server resources are used &amp;#183; Fully stateless, so easily scalable 
   &lt;li&gt;
      Easy implementation 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Contra:&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Large amounts of data transport between client and server may cause performance issues 
   &lt;li&gt;
      Problems may arise regarding security because sensitive information is passed on 
   &lt;li&gt;
      ViewState cannot be used to enable information interchange between pages 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;InProc Session State 
&lt;/h4&gt;
&lt;p&gt;
   InProc session state is a system where session data is kept in a Session object. This
   object is managed in the server&amp;#8217;s memory. 
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Pro:&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Easy implementation 
   &lt;li&gt;
      Expandable towards other session state variants (in principle) 
   &lt;li&gt;
      The Session object is available throughout application 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Contra&amp;nbsp;&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Session data takes up server resources 
   &lt;li&gt;
      Not readily scalable to multiple machines 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Session state with server Affinity 
&lt;/h4&gt;
&lt;p&gt;
   Session state with server affinity involves keeping data in a Session object. This
   object is managed in the server&amp;#8217;s memory. The server affinity will cause a subsequent
   request to be routed to always the same server, solving the problem of scalability. 
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Pro:&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Easy implementation from the developer&amp;#8217;s point of view (no extra effort needed)\ 
   &lt;li&gt;
      The Session object can be used for multiple machines 
   &lt;li&gt;
      The Session object is available throughout the application 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Contra:&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      External configuration of the server environment is needed 
   &lt;li&gt;
      Session data takes up server resources 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Session State Server 
&lt;/h4&gt;
&lt;p&gt;
   A session state server is a system that keeps data in the memory of a specially installed
   server. This server is accessible for all other servers within a web farm. Actions
   may be performed on the Session object from within the web application, implicitly
   making use of the state server. 
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Pro:&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Easy implementation from the developer&amp;#8217;s point of view 
   &lt;li&gt;
      Scalable to multiple machines 
   &lt;li&gt;
      Configurable through configuration files 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Contra:&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Data must be serializable 
   &lt;li&gt;
      Requires a specially equipped machine 
   &lt;li&gt;
      Performance is lower compared with a standard session object 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Database Session State 
&lt;/h4&gt;
&lt;p&gt;
   Database session state involves keeping data as serialized data in a dedicated SQL
   Server database. 
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Pro:&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Easy implementation from the developer&amp;#8217;s point of view&amp;nbsp; 
   &lt;li&gt;
      Scalable to multiple machines&amp;nbsp; 
   &lt;li&gt;
      Configurable through configuration files 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Contra:&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Data must be serializable&amp;nbsp; 
   &lt;li&gt;
      Only possible in combination with SQL Server&amp;nbsp; 
   &lt;li&gt;
      Performance is lower compared with a standard session object 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Application info 
&lt;/h3&gt;
&lt;h4&gt;Quick guidelines 
&lt;/h4&gt;
&lt;p&gt;
   Application information is general data intended for all users. No session data or
   data that is to be shared between pages is involved. 
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      When working with application state, use infrequently changed serializable data as
      much as possible 
   &lt;li&gt;
      When possible, use caching as this eventually frees resources 
   &lt;li&gt;
      Use the Application object when data is to be continually present 
   &lt;li&gt;
      Never use static variables for application state 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;The Application Object 
&lt;/h4&gt;
&lt;p&gt;
   For each web application, there are situations where you want to share information
   with all of its users. Application state is a system where such data is maintained
   within an Application object. This object is kept in the server&amp;#8217;s memory. 
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Pro:&lt;/u&gt;&lt;/strong&gt; 
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Easy implementation 
   &lt;li&gt;
      Application state variables are accessible throughout the application to all users 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Contra: &lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Data is not persistent. Application data is lost in case of a fatal hardware or software
      failure 
   &lt;li&gt;
      Application data takes up server resources 
   &lt;li&gt;
      There is no guarantee that application state data is unique within a web garden or
      web farm environment, since this data is not shared &amp;#183; Within a multi-threaded
      environment, locking is to be implemented to prevent deadlocks and access violations 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Static Variables 
&lt;/h4&gt;
&lt;p&gt;
   Within a web server, static variables are available to all web pages. These variables
   can be easily approached by all code. 
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Pro: &lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      All Application object advantages apply here as well 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Contra: &lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      No guarantee that data is still present when calling upon it 
   &lt;li&gt;
      Potential issues with the ASP.Net standard multi-threading system 
   &lt;li&gt;
      Frequent re-starting of the application may cause problems in the application&amp;#8217;s
      development phase 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;The Cache Object 
&lt;/h4&gt;
&lt;p&gt;
   ASP.Net supports the Cache object, where information may be stored that is needed
   for a certain amount of time. 
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Pro:&amp;nbsp;&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Data may be cleared after a certain amount of inactivity 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Contra: &lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      It may be possible that data has to be re-fetched as this object has automatic management 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Inter-page state 
&lt;/h3&gt;
&lt;h4&gt;Quick guidelines 
&lt;/h4&gt;
&lt;p&gt;
   In a web application the situation frequently arises that data that is entered or
   present on a given page is to be passed onto another. This phenomenon is different
   from session state because this data is only needed in memory at the moment of page
   transfer. 
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Use the Server.Transfer method and HTTPContext to transfer state between pages 
   &lt;li&gt;
      Use query strings for simple data that does not have to be secure 
   &lt;li&gt;
      Use a single, compound page for a &amp;#8216;wizard&amp;#8217;-like solution 
   &lt;li&gt;
      Use session state when all other options are out 
   &lt;li&gt;
      Avoid using cookies to store inter-page state 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Compound Pages using ViewState 
&lt;/h4&gt;
&lt;p&gt;
   A compound page is a single page that has been divided into several sections. This
   page may function as a &amp;#8216;wizard&amp;#8217;, where different sections of a page are
   shown piece by piece. This way, the information of the &amp;#8216;previous page&amp;#8217;
   (in reality, the previous section of the same page) is available through ViewState. 
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Pro:&amp;nbsp;&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Ease of use 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Contra:&amp;nbsp;&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Only suitable for wizard-like applications 
   &lt;li&gt;
      Lower performance because all sections are loaded, even when they are not visible 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Session State 
&lt;/h4&gt;
&lt;p&gt;
   The Session object may also be used to transfer state between pages. When re-posting
   the page, new information may be placed in the Session object and control may be released
   to another page (by means of the Response.Redirect or Server.Transfer methods). On
   loading, the target page may obtain the information from the Session object. 
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Pro:&amp;nbsp;&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Ease of use 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Contra: &lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      There is no guarantee that the desired information is present in the Session object.
      Validation is necessary to check this 
   &lt;li&gt;
      The information is not type-safe&amp;nbsp; 
   &lt;li&gt;
      During the time-out period, the data remains available, unnecessarily taking up server
      resources&amp;nbsp; 
   &lt;li&gt;
      A Response.Redict results in an extra round trip 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Query String 
&lt;/h4&gt;
&lt;p&gt;
   This is a method in which arguments are passed on to the target page by adding text
   to the URL. 
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Pro:&amp;nbsp;&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Easy implementation&amp;nbsp; 
   &lt;li&gt;
      No server resources are required 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Contra:&amp;nbsp;&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      The amount of data that may be passed on is limited 
   &lt;li&gt;
      The data is visible in the browser and can be modified by the user. This may cause
      security issues 
   &lt;li&gt;
      Provokes the use of client-side scripting &amp;#183; Only works with HTTP Get requests 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Using server.transfer and httpcontext 
&lt;/h4&gt;
&lt;p&gt;
   This technique involves a page performing a HTTP Post request to itself and redirecting
   this request to another page through the server by means of the Server.Transfer method.
   At this new page, the old one is still visible through Context.Handler. Moreover,
   arguments may be passed on using the Items collection of HttpContext.Current. 
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Pro:&amp;nbsp;&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Makes type-safe passing-on of arguments possible 
   &lt;li&gt;
      Not dependent on server or client state 
   &lt;li&gt;
      No redirect to the client necessary 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Contra:&amp;nbsp;&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Complex implementation 
   &lt;li&gt;
      The URL shown in the browser does not match the page shown in its window 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Cookies 
&lt;/h4&gt;
&lt;p&gt;
   Cookies allow for storing small amounts of information at the client. No data is passed
   on between pages, but information is centrally available to all pages. This makes
   information sharing between pages possible. 
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Pro:&amp;nbsp;&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      No server resources needed 
   &lt;li&gt;
      Easy implementation&amp;nbsp; 
   &lt;li&gt;
      Configurable expiration&amp;nbsp; 
   &lt;li&gt;
      Also suitable for fixed HTML that contains no server functionality 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;u&gt;Contra:&amp;nbsp;&lt;/u&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      The amount of data is restricted to a maximum of 8192 bytes (8 kilobytes) per cookie 
   &lt;li&gt;
      Data is visible to and modifiable by the client, making it a security risk 
   &lt;li&gt;
      A client may refuse or delete cookies 
   &lt;li&gt;
      Fixed HTML without server functionality will need client-side scripting to be able
      to read cookies&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   We have choosen for the Cache object.&amp;nbsp;
&lt;/p&gt;
&lt;h3&gt;References 
&lt;/h3&gt;
&lt;p&gt;
   - &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbconChoosingServerStateOption.asp"&gt;Visual
   Basic and Visual C# ConceptsState Management Recommendations&lt;/a&gt; 
   &lt;br&gt;
   - &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/CachingArch.asp?frame=true"&gt;Caching
   Architecture Guide for .Net Framework Applications&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=9a5ecc95-dae5-4478-af02-6a3593931d83" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,9a5ecc95-dae5-4478-af02-6a3593931d83.aspx</comments>
      <category>.Net;Architecture</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=0e0ce76f-8fb6-4139-919b-fa4adc0be36b</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,0e0ce76f-8fb6-4139-919b-fa4adc0be36b.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,0e0ce76f-8fb6-4139-919b-fa4adc0be36b.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=0e0ce76f-8fb6-4139-919b-fa4adc0be36b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      At this moment I'm busy with the second part of my DAAB description, to implement
      the Oracle driver.  But now a short overview about the Model View Controller.
   </p>
        <h5>What's the problem ?
   </h5>
        <p>
      How do you modularize the user interface of a Web application so that you can easily
      modify the individual parts?
   </p>
        <p>
      Other items :
   </p>
        <ul>
          <li>
         User Interface changes more than business logic 
      </li>
          <li>
         Display info in several ways 
      </li>
          <li>
         User Interface consists of 2 parts : Presentation and update 
      </li>
          <li>
         User Interface depends on the device, than the business logic 
      </li>
          <li>
         Developing the User Interface or the Business Logic takes 2 different skills</li>
        </ul>
        <h5>The solution :
   </h5>
        <p>
      The Model View Controller (MVC) pattern.  This pattern separates the presentation
      and the actions based on user inputs in 3 separate classes :
   </p>
        <ul>
          <li>
         Model : Managing of data, responding to information requests, responds to instructions 
      </li>
          <li>
         View : Manages the information displaying 
      </li>
          <li>
         Controller : interprets the mouse and keyboard inputs, and informed the model/view</li>
        </ul>
        <p>
       
   </p>
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/mvc_class_structure.gif" border="0" />
        </p>
        <p>
       
   </p>
        <p>
      Good to know is that both the view and the controller depends on the model. 
      But not visa versa.  
   </p>
        <p>
      There are several variations of the MVC :
   </p>
        <ul>
          <li>
         Passive model 
      </li>
          <li>
         Active model</li>
        </ul>
        <h5>The Passive Model :
   </h5>
        <p>
      This model is employed when one controller manipulates the model exclusively. 
      The controller modifies the model and then informs the view that the model has been
      changed.  Now the view knows that he must refresh himself.
   </p>
        <p>
       
   </p>
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/mvc_passive_model.gif" border="0" />
        </p>
        <h5>The Active Model :
   </h5>
        <p>
      This model is used when the model changes states without the controller's involvement.
   </p>
        <p>
       
   </p>
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/mvc_active_model.gif" border="0" />
        </p>
        <p>
      Microsoft did a good way with their example <em><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/ImpMVCinASP.asp">"Implementing
      Model-View-Controller in ASP.NET"</a></em>.  This pattern is the fundation for
      further, more specialized patterns like <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/DesPageController.asp">Page
      Controller</a> and <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/DesFrontController.asp">Front
      Controller</a>.
   </p>
        <p>
      The example starts with everything in one page and finally gives the good solution
      on how to build the MVC in ASP.Net. But... Yes your read it good.  I have my
      thoughts with this example.
   </p>
        <p>
      When reading about the MVC, I came to the conclusion that the solution of Microsoft
      isn't really a translation of what they said in the theory about MVC.  SO when
      searching on the internet, I came across the blog of <a href="http://dotnetweblogs.com/mnissen">Mads
      Nissen</a>, who did in 2003 a nice translation from the theoretical part to the practical
      part.  Read this <a href="http://weblogs.asp.net/mnissen/archive/2003/03/21/4142.aspx">article</a> and
      go to the <a href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=66aaf577-1f1c-40f6-a1b4-2b513cfb0d2e">GotDotNet
      community</a> to download the example.
   </p>
        <p>
      More info can be found : 
   </p>
        <ul>
          <li>
            <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/DesMVC.asp">MSDN</a>
          </li>
          <li>
            <a href="http://www.enode.com/x/markup/tutorial/mvc.html">eNode</a>
          </li>
          <li>
            <a href="http://whatis.techtarget.com/definition/0,,sid9_gci214607,00.html">Whatis?Com</a>
          </li>
        </ul>
        <p>
       
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=0e0ce76f-8fb6-4139-919b-fa4adc0be36b" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Implementing Model-View-Controller in ASP.NET</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,0e0ce76f-8fb6-4139-919b-fa4adc0be36b.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Implementing+ModelViewController+In+ASPNET.aspx</link>
      <pubDate>Tue, 05 Oct 2004 06:11:06 GMT</pubDate>
      <description>&lt;p&gt;
   At this moment I'm busy with the second part of my DAAB description, to implement
   the Oracle driver.&amp;nbsp; But now a short overview about the Model View Controller.
&lt;/p&gt;
&lt;h5&gt;What's the problem ?
&lt;/h5&gt;
&lt;p&gt;
   How do you modularize the user interface of a Web application so that you can easily
   modify the individual parts?
&lt;/p&gt;
&lt;p&gt;
   Other items :
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      User Interface changes more than business logic 
   &lt;li&gt;
      Display info in several ways 
   &lt;li&gt;
      User Interface consists of 2 parts : Presentation and update 
   &lt;li&gt;
      User Interface depends on the device, than the business logic 
   &lt;li&gt;
      Developing the User Interface or the Business Logic takes 2 different skills&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;The solution :
&lt;/h5&gt;
&lt;p&gt;
   The Model View Controller (MVC) pattern.&amp;nbsp; This pattern separates the presentation
   and the actions based on user inputs in 3 separate classes :
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Model : Managing of data, responding to information requests, responds to instructions 
   &lt;li&gt;
      View : Manages the information displaying 
   &lt;li&gt;
      Controller : interprets the mouse and keyboard inputs, and informed the model/view&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/mvc_class_structure.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   Good to know is that both the view and the controller depends on the model.&amp;nbsp;
   But not visa versa.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   There are several variations of the MVC :
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Passive model 
   &lt;li&gt;
      Active model&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;The Passive Model :
&lt;/h5&gt;
&lt;p&gt;
   This model is employed when one controller manipulates the model exclusively.&amp;nbsp;
   The controller modifies the model and then informs the view that the model has been
   changed.&amp;nbsp; Now the view knows that he must refresh himself.
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/mvc_passive_model.gif" border=0&gt;
&lt;/p&gt;
&lt;h5&gt;The Active Model :
&lt;/h5&gt;
&lt;p&gt;
   This model is used when the model changes states without the controller's involvement.
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/mvc_active_model.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   Microsoft did a good way with their example &lt;em&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/ImpMVCinASP.asp"&gt;"Implementing
   Model-View-Controller in ASP.NET"&lt;/a&gt;&lt;/em&gt;.&amp;nbsp; This pattern is the fundation for
   further, more specialized patterns like &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/DesPageController.asp"&gt;Page
   Controller&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/DesFrontController.asp"&gt;Front
   Controller&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   The example starts with everything in one page and finally gives the good solution
   on how to build the MVC in ASP.Net. But... Yes your read it good.&amp;nbsp; I have my
   thoughts with this example.
&lt;/p&gt;
&lt;p&gt;
   When reading about the MVC, I came to the conclusion that the solution of Microsoft
   isn't really a translation of what they said in the theory about MVC.&amp;nbsp; SO when
   searching on the internet, I came across the blog of &lt;a href="http://dotnetweblogs.com/mnissen"&gt;Mads
   Nissen&lt;/a&gt;, who did in 2003 a nice translation from the theoretical part to the practical
   part.&amp;nbsp; Read this &lt;a href="http://weblogs.asp.net/mnissen/archive/2003/03/21/4142.aspx"&gt;article&lt;/a&gt;&amp;nbsp;and
   go to the &lt;a href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=66aaf577-1f1c-40f6-a1b4-2b513cfb0d2e"&gt;GotDotNet
   community&lt;/a&gt;&amp;nbsp;to download the example.
&lt;/p&gt;
&lt;p&gt;
   More info can be found : 
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/DesMVC.asp"&gt;MSDN&lt;/a&gt; 
   &lt;li&gt;
      &lt;a href="http://www.enode.com/x/markup/tutorial/mvc.html"&gt;eNode&lt;/a&gt; 
   &lt;li&gt;
      &lt;a href="http://whatis.techtarget.com/definition/0,,sid9_gci214607,00.html"&gt;Whatis?Com&lt;/a&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=0e0ce76f-8fb6-4139-919b-fa4adc0be36b" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,0e0ce76f-8fb6-4139-919b-fa4adc0be36b.aspx</comments>
      <category>.Net;Patterns</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=e8c50389-dceb-4044-a8c7-39e4ce541b48</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,e8c50389-dceb-4044-a8c7-39e4ce541b48.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,e8c50389-dceb-4044-a8c7-39e4ce541b48.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e8c50389-dceb-4044-a8c7-39e4ce541b48</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Since last week Host Integration Server 2004 is available. What is HIS.  HIS
      will integrate IBM Host applications and data sources with new solutions developed
      using .Net.
   </p>
        <p>
      Get more info <a href="http://www.microsoft.com/hiserver/">here</a>.
   </p>
        <p dir="ltr" style="MARGIN-RIGHT: 0px">
          <em>&lt;Commercial Talk&gt;<br />
                When you have a project in
      your company (Belgium and The Netherlands), you can<br />
                always contact the <a href="http://www.ordina-euregio.com/">company
      I work for</a>.<br />
                We already have succefully
      implemented HIS 2004 for customers.<br />
      &lt;/Commercial Talk&gt;</em>
        </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=e8c50389-dceb-4044-a8c7-39e4ce541b48" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>HIS 2004</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,e8c50389-dceb-4044-a8c7-39e4ce541b48.aspx</guid>
      <link>http://blog.svencipido.be/Blog/HIS+2004.aspx</link>
      <pubDate>Tue, 28 Sep 2004 06:00:31 GMT</pubDate>
      <description>&lt;p&gt;
   Since last week Host Integration Server 2004 is available. What is HIS.&amp;nbsp; HIS
   will integrate IBM Host applications and data sources with new solutions developed
   using .Net.
&lt;/p&gt;
&lt;p&gt;
   Get more info &lt;a href="http://www.microsoft.com/hiserver/"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p dir=ltr style="MARGIN-RIGHT: 0px"&gt;
   &lt;em&gt;&amp;lt;Commercial Talk&amp;gt;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; When you have a project in
   your company (Belgium and The Netherlands), you can&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; always contact the &lt;a href="http://www.ordina-euregio.com/"&gt;company
   I work for&lt;/a&gt;.&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; We already have succefully
   implemented HIS 2004 for customers.&lt;br&gt;
   &amp;lt;/Commercial Talk&amp;gt;&lt;/em&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=e8c50389-dceb-4044-a8c7-39e4ce541b48" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,e8c50389-dceb-4044-a8c7-39e4ce541b48.aspx</comments>
      <category>.Net;HIS;News</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=180318db-8e20-42cf-b3ca-fd9efbb44104</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,180318db-8e20-42cf-b3ca-fd9efbb44104.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,180318db-8e20-42cf-b3ca-fd9efbb44104.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=180318db-8e20-42cf-b3ca-fd9efbb44104</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Here is the first part of the Application Code Blocks.  In this part, we will
      give you a theoretical overview of the Data Access Application Block (DAAB) (Based
      of what I found for reading on the sites in the resources paragraph).  After
      this examination, we will add a second part, where we will change the DAAB for use
      with the Oracle DB.  After this, we will put a short overview of real life experience
      with our modified DAAB.
   </p>
        <h5>What is DAAB?
   </h5>
        <p>
      The Database Access Application Block is a .Net component that has optimized code
      on board to access your database.  Till version 2, this is only for a SQL database. 
      The component returns SqlDataReader, Dataset and XmlReader objects.
   </p>
        <h5>Download, what's included and user requirements?
   </h5>
        <p>
      You can download DAAB from the <a href="http://download.microsoft.com/download/VisualStudioNET/daabref/RTM/NT5/EN-US/DataAccessApplicationBlock.msi">download
      center of Microsoft</a></p>
        <p>
      After you download and installed the component, you will find a new menu under "<em>start
      --&gt; programs</em>”: <em>Microsoft Application Blocks for .NET</em>. 
      Under this menu you will find:
   </p>
        <ul>
          <li>
         The VS.Net project files 
      </li>
          <li>
         The documentation</li>
        </ul>
        <p>
      Be sure that you have following requirements when running the DAAB version 2:
   </p>
        <ul>
          <li>
         Win 2000 / Win XP / Win 2003 
      </li>
          <li>
         .Net Framework SDK 1.1 
      </li>
          <li>
         VS.net 2003 
      </li>
          <li>
         SQL Server 7.0 or later</li>
        </ul>
        <h5>Why using DAAB?
   </h5>
        <p>
      You have the traditional Data Access to applications (including web).  That Data
      Access can be from different sources:
   </p>
        <ul>
          <li>
         Traditional RDBMS (MS SQL, Oracle, ...) 
      </li>
          <li>
         Custom Data Store (XML file, flat file, ...)</li>
        </ul>
        <p>
      Using this, often leads to redundant, repeated code, which can be written by experienced
      developers in their sleep.  In this case the code repetition increase the change
      for a bug in the code.  And it cost time.  We can say that a typical Data
      Access can be split up in several parts:
   </p>
        <ul>
          <li>
         Specify the query 
      </li>
          <li>
         Create connection object 
      </li>
          <li>
         Create command object 
      </li>
          <li>
         Add parameters if necessary 
      </li>
          <li>
         For a DataReader use ExecuteReader()<br />
         For DataSets or DataTables use a DataAdapter and its Fill() method 
      </li>
          <li>
         Bind the control to the DataReader/DataSet/DataTable 
      </li>
          <li>
         Close DataReader, Connection</li>
        </ul>
        <p>
      The solution is encapsulation or better-called wrapped classes.  Most of you
      will use a framework or has written their own wrapper.  Our wrapper could have
      step 1 till 5 included.<br />
      Another solution is to use the DAAB.
   </p>
        <p>
      Graphical overview:
   </p>
        <h5>
          <img style="WIDTH: 469px; HEIGHT: 271px" height="309" src="http://blog.svencipido.be/Blog/content/binary/daab1.JPG" width="639" border="0" />
          <br />
      Basic procedure:
   </h5>
        <ul>
          <li>
         Download the application block from the <a href="http://download.microsoft.com/download/VisualStudioNET/daabref/RTM/NT5/EN-US/DataAccessApplicationBlock.msi">MSDN
         site</a>  
      </li>
          <li>
         Navigate in your 'start menu --&gt; program files' to "Microsoft Application Blocks
         for .Net", select "data access" and select the language of your choice. 
      </li>
          <li>
         The Application Block Project will open.  Build this project. 
      </li>
          <li>
         Once you got the assembly, do following in your project: 
      </li>
          <li>
         Add reference to "Microsoft.ApplicationBlocks.data.dll" 
      </li>
          <li>
         Add Using (C#) or Imports (VB.Net) for the "Microsoft.ApplicationBlocks.data.dll","System.Data"
         and "System.Data.SQLClient"</li>
        </ul>
        <p>
      Be aware: If creating an ASP.Net project you has to do following steps:
   </p>
        <ul>
          <li>
         Copy the DAAB Assembly to your web application's "/Bin" dir 
      </li>
          <li>
         In the ASP.net web page where you need DAAB add : &lt;%@ Import Namespace=“Microsoft.ApplicationBlocks.Data”
         %&gt;</li>
        </ul>
        <h5>Extensive Use of DAAB:
   </h5>
        <p>
      After installing and implementing the DAAB, you got the SqlHelper and SqlHelperParameterCache
      available in your application.  
   </p>
        <p>
      The SQLHelper class provides us static methods, while SqlHelperParameterCache is used
      to improve performance.  
   </p>
        <h5>The SQLHelper class:
   </h5>
        <p>
      The SQLHelper provides us with 13 methods we can use (for a complete list, see the
      MSDN DAAB section - <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp">SqlHelper
      Class Implementation Details</a>).  Each method has it's set of overloads. 
      This gives the developer all the flexibility how they want to access the data and
      how they want to pass the connection string, transaction and parameters.
   </p>
        <p>
      We will show an example.
   </p>
        <h6>The Execute reader:
   </h6>
        <p>
      Normally you would write this kind of code :
   </p>
        <p>
          <font face="Courier New">SqlConnection myConnection = new SqlConnection(connString);</font>
        </p>
        <p>
          <font face="Courier New">const string strSQL = "SELECT CustomerID, CustomerName FROM
      Customers ORDER BY CustomerName";<br />
         <br />
      SqlCommand myCommand = new SqlCommand(strSQL, myConnection);</font>
        </p>
        <p>
          <font face="Courier New">myConnection.Open();<br />
      SqlDataReader reader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);</font>
        </p>
        <p>
      When using DAAB, we could reduce the code to this:
   </p>
        <p>
          <font face="Courier New">const string strSQL = "SELECT CustomerID, CustomerName FROM
      Customers ORDER BY CustomerName";</font>
        </p>
        <p>
          <font face="Courier New">SqlDataReader reader = SqlHelper.ExecuteReader(connString,
      CommandType.Text, strSQL);</font>
        </p>
        <p>
      Know that the every method has it's own set of overloaded method. For example: the
      ExecuteReader has also a method where you could pass an already open connection,... 
      Also you have other related methods, like:
   </p>
        <ul>
          <li>
         Executing non-returning queries (Update/insert/...) 
      </li>
          <li>
         Executing scalar-returning queries 
      </li>
          <li>
         ...</li>
        </ul>
        <p>
      These related methods, have also the overloaded options as the ExecuteReader().
   </p>
        <h5>Parameterize:
   </h5>
        <p>
      We can use parameters with the DAAB.  DAAB accepts two kinds of parameters:
   </p>
        <ul>
          <li>
         Explicit sqlparameter Instances<br />
           example: 
         <br /><font face="Courier New">    dgOrders.DataSource = SqlHelper.ExecuteDataset(connString,
         CommandType.Text, strSQL, new SqlParameter("@CustomerID", value));</font></li>
          <li>
         Implicit parameter values<br />
           example: 
         <br />
                <font face="Courier New">dgProducts.DataSource
         = SqlHelper.ExecuteDataset(connString,"getOrders", value);</font></li>
        </ul>
        <p>
      The explicit method can be used with SQL Query as with Stored Procedures.  The
      implicit method works only with Stored Procedures.
   </p>
        <p>
      In the previous examples we only had one parameter.  What if you have more parameters?
      Well in this case you just include a comma-delimited list of parameter values: 
   </p>
        <ul>
          <li>
            <font face="Courier New">dgProducts.DataSource = SqlHelper.ExecuteDataset(connString,   
         CommandType.Text, query, new  SqlParameter("@ParamName1", value1), new SqlParameter("@ParamName2",
         value2), …, new SqlParameter("@ParamNameN", valueN));</font>
          </li>
          <li>
            <font face="Courier New">dgProducts.DataSource = SqlHelper.ExecuteDataset(connString,
         "getProducts", Value1, value2, …, valueN);</font>
          </li>
        </ul>
        <p>
      When using implicit parameters we have a performance issue.  DAAB has to do 2
      steps:
   </p>
        <ul>
          <li>
         Use the DeriveParameters method (SqlCommandBuilder class) to determine the parameters 
      </li>
          <li>
         Iterated through the parameter array to assign the values to the discovered parameter
         list.</li>
        </ul>
        <p>
      To solve this problem, Microsoft has added the SqlHelperParameterCache class.
   </p>
        <h5>The SqlHelperParameterCache Class:
   </h5>
        <p>
      This class caches the SP parameter list.  The class contains 3 public methods
      to manage parameters.  These methods are :
   </p>
        <ul>
          <li>
         Cache parameters: CacheParameterSet 
      </li>
          <li>
         Retrieve cached parameters: GetCachedParameters 
      </li>
          <li>
         Retrieve the correct parameters for a Stored Procedure: GetSpParameterSet</li>
        </ul>
        <p>
      Internally, the Application block creates a hash table when storing your parameters. 
      The key of this hashtable is a simple string concatenating of the connectionstring
      and the command text.  When reading the parameters we will get the name, direction
      (In- of Output), the datatype and so on.
   </p>
        <p>
      When using a Stored Procedure, we can use the 3rd method.  This method will connect
      to the DB, looking for the SP and retrieve all the information about the parameters
      for this SP.
   </p>
        <h5>Future :
   </h5>
        <p>
      Microsoft is working on the next version.  On the date of this writing it is
      version 3.  This version is available for test at the <a href="http://www.gotdotnet.com/workspaces/workspace.aspx?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431">GotDotNet
      Community</a>. This version provides the concept of an abstract provider, whereas
      version 1 &amp; 2 using a concrete provider (SQLClient).  Version 3 will have
      3 build-in providers : 
   </p>
        <ul>
          <li>
         SQLServer 
      </li>
          <li>
         OleDb 
      </li>
          <li>
         ODBC</li>
        </ul>
        <p>
      So it will be possible to use for instance an Oracle DB, or even (if you really, really
      wants MS Access).
   </p>
        <p>
      See you at the next part.  In here we will talk about modifying the DAAB so it
      can be used with an Oracle DB.  In part 3, we will also describe our life
      experience of the DAAB.
   </p>
        <h5>Resources:
   </h5>
        <p>
      MSDN: 
      <br /><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp</a><br /><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daag.asp">.Net
      Data Access Architecture Guide</a><br />
      4GuysFromRolla: <a href="http://aspnet.4guysfromrolla.com/articles/070203-1.aspx">http://aspnet.4guysfromrolla.com/articles/070203-1.aspx</a><br />
      GotDotNet: <a href="http://www.gotdotnet.com/workspaces/workspace.aspx?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431">http://www.gotdotnet.com/workspaces/workspace.aspx?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431</a><br />
      Microsoft Download : 
      <br /><a href="http://download.microsoft.com/download/VisualStudioNET/daabref/RTM/NT5/EN-US/DataAccessApplicationBlock.msi">http://download.microsoft.com/download/VisualStudioNET/daabref/RTM/NT5/EN-US/DataAccessApplicationBlock.msi</a></p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=180318db-8e20-42cf-b3ca-fd9efbb44104" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Application Code Blocks Part 1: The Data Access Application Block</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,180318db-8e20-42cf-b3ca-fd9efbb44104.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Application+Code+Blocks+Part+1+The+Data+Access+Application+Block.aspx</link>
      <pubDate>Thu, 23 Sep 2004 06:24:34 GMT</pubDate>
      <description>&lt;p&gt;
   Here is the first part of the Application Code Blocks.&amp;nbsp; In this part, we will
   give you a theoretical overview of the Data Access Application Block (DAAB) (Based
   of what I found for reading on the sites in the resources paragraph).&amp;nbsp; After
   this examination, we will add a second part, where we will change the DAAB for use
   with the Oracle DB.&amp;nbsp; After this, we will put a short overview of real life experience
   with our modified DAAB.
&lt;/p&gt;
&lt;h5&gt;What is DAAB?
&lt;/h5&gt;
&lt;p&gt;
   The Database Access Application Block is a .Net component that has optimized code
   on board to access your database.&amp;nbsp; Till version 2, this is only for a SQL database.&amp;nbsp;
   The component returns SqlDataReader, Dataset and XmlReader objects.
&lt;/p&gt;
&lt;h5&gt;Download, what's included and user requirements?
&lt;/h5&gt;
&lt;p&gt;
   You can download DAAB from the &lt;a href="http://download.microsoft.com/download/VisualStudioNET/daabref/RTM/NT5/EN-US/DataAccessApplicationBlock.msi"&gt;download
   center of Microsoft&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   After you download and installed the component, you will find a new menu under "&lt;em&gt;start
   --&amp;gt; programs&lt;/em&gt;&amp;#8221;: &lt;em&gt;Microsoft Application Blocks for .NET&lt;/em&gt;.&amp;nbsp;
   Under this menu you will find:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      The VS.Net project files 
   &lt;li&gt;
      The documentation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Be sure that you have following requirements when running the DAAB version 2:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Win 2000 / Win XP / Win 2003 
   &lt;li&gt;
      .Net Framework SDK 1.1 
   &lt;li&gt;
      VS.net 2003 
   &lt;li&gt;
      SQL Server 7.0 or later&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;Why using DAAB?
&lt;/h5&gt;
&lt;p&gt;
   You have the traditional Data Access to applications (including web).&amp;nbsp; That Data
   Access can be from different sources:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Traditional RDBMS (MS SQL, Oracle, ...) 
   &lt;li&gt;
      Custom Data Store (XML file, flat file, ...)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Using this, often leads to redundant, repeated code, which can be written by experienced
   developers in their sleep.&amp;nbsp; In this case the code repetition increase the change
   for a bug in the code.&amp;nbsp; And it cost time.&amp;nbsp; We can say that a typical Data
   Access can be split up in several parts:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Specify the query 
   &lt;li&gt;
      Create connection object 
   &lt;li&gt;
      Create command object 
   &lt;li&gt;
      Add parameters if necessary 
   &lt;li&gt;
      For a DataReader use ExecuteReader()&lt;br&gt;
      For DataSets or DataTables use a DataAdapter and its Fill() method 
   &lt;li&gt;
      Bind the control to the DataReader/DataSet/DataTable 
   &lt;li&gt;
      Close DataReader, Connection&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   The solution is encapsulation or better-called wrapped classes.&amp;nbsp; Most of you
   will use a framework or has written their own wrapper.&amp;nbsp; Our wrapper could have
   step 1 till 5 included.&lt;br&gt;
   Another solution is to use the DAAB.
&lt;/p&gt;
&lt;p&gt;
   Graphical overview:
&lt;/p&gt;
&lt;h5&gt;&lt;img style="WIDTH: 469px; HEIGHT: 271px" height=309 src="http://blog.svencipido.be/Blog/content/binary/daab1.JPG" width=639 border=0&gt;
   &lt;br&gt;
   Basic procedure:
&lt;/h5&gt;
&lt;ul&gt;
   &lt;li&gt;
      Download the application block from the &lt;a href="http://download.microsoft.com/download/VisualStudioNET/daabref/RTM/NT5/EN-US/DataAccessApplicationBlock.msi"&gt;MSDN
      site&lt;/a&gt;&amp;nbsp; 
   &lt;li&gt;
      Navigate in your 'start menu --&amp;gt; program files' to "Microsoft Application Blocks
      for .Net", select "data access" and select the language of your choice. 
   &lt;li&gt;
      The Application Block Project will open.&amp;nbsp; Build this project. 
   &lt;li&gt;
      Once you got the assembly, do following in your project: 
   &lt;li&gt;
      Add reference to "Microsoft.ApplicationBlocks.data.dll" 
   &lt;li&gt;
      Add Using (C#) or Imports (VB.Net) for the "Microsoft.ApplicationBlocks.data.dll","System.Data"
      and "System.Data.SQLClient"&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Be aware: If creating an ASP.Net project you has to do following steps:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Copy the DAAB Assembly to your web application's "/Bin" dir 
   &lt;li&gt;
      In the ASP.net web page where you need DAAB add : &amp;lt;%@ Import Namespace=&amp;#8220;Microsoft.ApplicationBlocks.Data&amp;#8221;
      %&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;Extensive Use of DAAB:
&lt;/h5&gt;
&lt;p&gt;
   After installing and implementing the DAAB, you got the SqlHelper and SqlHelperParameterCache
   available in your application.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   The SQLHelper class provides us static methods, while SqlHelperParameterCache is used
   to improve performance.&amp;nbsp; 
&lt;/p&gt;
&lt;h5&gt;The SQLHelper class:
&lt;/h5&gt;
&lt;p&gt;
   The SQLHelper provides us with 13 methods we can use (for a complete list, see the
   MSDN DAAB section - &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp"&gt;SqlHelper
   Class Implementation Details&lt;/a&gt;).&amp;nbsp; Each method has it's set of overloads.&amp;nbsp;
   This gives the developer all the flexibility how they want to access the data and
   how they want to pass the connection string, transaction and parameters.
&lt;/p&gt;
&lt;p&gt;
   We will show an example.
&lt;/p&gt;
&lt;h6&gt;The Execute reader:
&lt;/h6&gt;
&lt;p&gt;
   Normally you would write this kind of code :
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Courier New"&gt;SqlConnection myConnection = new SqlConnection(connString);&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Courier New"&gt;const string strSQL = "SELECT CustomerID, CustomerName FROM
   Customers ORDER BY CustomerName";&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
   SqlCommand myCommand = new SqlCommand(strSQL, myConnection);&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Courier New"&gt;myConnection.Open();&lt;br&gt;
   SqlDataReader reader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   When using DAAB, we could reduce the code to this:
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Courier New"&gt;const string strSQL = "SELECT CustomerID, CustomerName FROM
   Customers ORDER BY CustomerName";&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Courier New"&gt;SqlDataReader reader = SqlHelper.ExecuteReader(connString,
   CommandType.Text, strSQL);&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   Know that the every method has it's own set of overloaded method. For example: the
   ExecuteReader has also a method where you could pass an already open connection,...&amp;nbsp;
   Also you have other related methods, like:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Executing non-returning queries (Update/insert/...) 
   &lt;li&gt;
      Executing scalar-returning queries 
   &lt;li&gt;
      ...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   These related methods, have also the overloaded options as the ExecuteReader().
&lt;/p&gt;
&lt;h5&gt;Parameterize:
&lt;/h5&gt;
&lt;p&gt;
   We can use parameters with the DAAB.&amp;nbsp; DAAB accepts two kinds of parameters:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Explicit sqlparameter Instances&lt;br&gt;
      &amp;nbsp;&amp;nbsp;example: 
      &lt;br&gt;
      &lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dgOrders.DataSource = SqlHelper.ExecuteDataset(connString,
      CommandType.Text, strSQL, new SqlParameter("@CustomerID", value));&lt;/font&gt; 
   &lt;li&gt;
      Implicit parameter values&lt;br&gt;
      &amp;nbsp;&amp;nbsp;example: 
      &lt;br&gt;
      &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="Courier New"&gt;dgProducts.DataSource
      = SqlHelper.ExecuteDataset(connString,"getOrders", value);&lt;/font&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   The explicit method can be used with SQL Query as with Stored Procedures.&amp;nbsp; The
   implicit method works only with Stored Procedures.
&lt;/p&gt;
&lt;p&gt;
   In the previous examples we only had one parameter.&amp;nbsp; What if you have more parameters?
   Well in this case you just include a comma-delimited list of parameter values: 
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;font face="Courier New"&gt;dgProducts.DataSource = SqlHelper.ExecuteDataset(connString,&amp;nbsp;&amp;nbsp;&amp;nbsp;
      CommandType.Text, query, new&amp;nbsp; SqlParameter("@ParamName1", value1), new SqlParameter("@ParamName2",
      value2), &amp;#8230;, new SqlParameter("@ParamNameN", valueN));&lt;/font&gt; 
   &lt;li&gt;
      &lt;font face="Courier New"&gt;dgProducts.DataSource = SqlHelper.ExecuteDataset(connString,
      "getProducts", Value1, value2, &amp;#8230;, valueN);&lt;/font&gt; 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   When using implicit parameters we have a performance issue.&amp;nbsp; DAAB has to do 2
   steps:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Use the DeriveParameters method (SqlCommandBuilder class) to determine the parameters 
   &lt;li&gt;
      Iterated through the parameter array to assign the values to the discovered parameter
      list.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   To solve this problem, Microsoft has added the SqlHelperParameterCache class.
&lt;/p&gt;
&lt;h5&gt;The SqlHelperParameterCache Class:
&lt;/h5&gt;
&lt;p&gt;
   This class caches the SP parameter list.&amp;nbsp; The class contains 3 public methods
   to manage parameters.&amp;nbsp; These methods are :
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Cache parameters: CacheParameterSet 
   &lt;li&gt;
      Retrieve cached parameters: GetCachedParameters 
   &lt;li&gt;
      Retrieve the correct parameters for a Stored Procedure: GetSpParameterSet&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Internally, the Application block creates a hash table when storing your parameters.&amp;nbsp;
   The key of this hashtable is a simple string concatenating of the connectionstring
   and the command text.&amp;nbsp; When reading the parameters we will get the name, direction
   (In- of Output), the datatype and so on.
&lt;/p&gt;
&lt;p&gt;
   When using a Stored Procedure, we can use the 3rd method.&amp;nbsp; This method will connect
   to the DB, looking for the SP and retrieve all the information about the parameters
   for this SP.
&lt;/p&gt;
&lt;h5&gt;Future :
&lt;/h5&gt;
&lt;p&gt;
   Microsoft is working on the next version.&amp;nbsp; On the date of this writing it is
   version 3.&amp;nbsp; This version is available for test at the &lt;a href="http://www.gotdotnet.com/workspaces/workspace.aspx?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431"&gt;GotDotNet
   Community&lt;/a&gt;. This version provides the concept of an abstract provider, whereas
   version 1 &amp;amp; 2 using a concrete provider (SQLClient).&amp;nbsp; Version 3 will have
   3 build-in providers :&amp;nbsp;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      SQLServer 
   &lt;li&gt;
      OleDb 
   &lt;li&gt;
      ODBC&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   So it will be possible to use for instance an Oracle DB, or even (if you really, really
   wants MS Access).
&lt;/p&gt;
&lt;p&gt;
   See you at the next part.&amp;nbsp; In here we will talk about modifying the DAAB so it
   can be used with an Oracle DB.&amp;nbsp;&amp;nbsp;In part 3, we will also describe our life
   experience of the DAAB.
&lt;/p&gt;
&lt;h5&gt;Resources:
&lt;/h5&gt;
&lt;p&gt;
   MSDN: 
   &lt;br&gt;
   &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daag.asp"&gt;.Net
   Data Access Architecture Guide&lt;/a&gt;
   &lt;br&gt;
   4GuysFromRolla:&amp;nbsp;&lt;a href="http://aspnet.4guysfromrolla.com/articles/070203-1.aspx"&gt;http://aspnet.4guysfromrolla.com/articles/070203-1.aspx&lt;/a&gt;
   &lt;br&gt;
   GotDotNet:&amp;nbsp;&lt;a href="http://www.gotdotnet.com/workspaces/workspace.aspx?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431"&gt;http://www.gotdotnet.com/workspaces/workspace.aspx?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431&lt;/a&gt;
   &lt;br&gt;
   Microsoft Download : 
   &lt;br&gt;
   &lt;a href="http://download.microsoft.com/download/VisualStudioNET/daabref/RTM/NT5/EN-US/DataAccessApplicationBlock.msi"&gt;http://download.microsoft.com/download/VisualStudioNET/daabref/RTM/NT5/EN-US/DataAccessApplicationBlock.msi&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=180318db-8e20-42cf-b3ca-fd9efbb44104" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,180318db-8e20-42cf-b3ca-fd9efbb44104.aspx</comments>
      <category>.Net;Application Blocks</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=804d3df5-4e5e-4ba4-9352-12db8cf86c17</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,804d3df5-4e5e-4ba4-9352-12db8cf86c17.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,804d3df5-4e5e-4ba4-9352-12db8cf86c17.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=804d3df5-4e5e-4ba4-9352-12db8cf86c17</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Today is my last day @ U2U.  I'm following a course “Programming .Net Enterprise
      Applications with C#”.  We had following teachers :
   </p>
        <ul>
          <li>
         Gert Servranckx 
      </li>
          <li>
            <a href="http://blog.u2u.info/DottextWeb/peter/">Peter Himschoot</a>
          </li>
        </ul>
        <p>
      I took a few pictures with my Mobile Phone (So sorry for the low quality).  More
      to follow
   </p>
        <p>
       
   </p>
        <img src="http://blog.svencipido.be/Blog/content/binary/Picture(1).jpg" border="0" />
        <img src="http://blog.svencipido.be/Blog/content/binary/Picture(2).jpg" border="0" />
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=804d3df5-4e5e-4ba4-9352-12db8cf86c17" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>My week @U2U</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,804d3df5-4e5e-4ba4-9352-12db8cf86c17.aspx</guid>
      <link>http://blog.svencipido.be/Blog/My+Week+U2U.aspx</link>
      <pubDate>Fri, 17 Sep 2004 07:48:09 GMT</pubDate>
      <description>&lt;p&gt;
   Today is my last day @ U2U.&amp;nbsp; I'm following a course &amp;#8220;Programming .Net Enterprise
   Applications with C#&amp;#8221;.&amp;nbsp; We had following teachers :
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Gert Servranckx 
   &lt;li&gt;
      &lt;a href="http://blog.u2u.info/DottextWeb/peter/"&gt;Peter Himschoot&lt;/a&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   I took a few pictures with my Mobile Phone (So sorry for the low quality).&amp;nbsp; More
   to follow
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img src="http://blog.svencipido.be/Blog/content/binary/Picture(1).jpg" border=0&gt;&lt;img src="http://blog.svencipido.be/Blog/content/binary/Picture(2).jpg" border=0&gt;&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=804d3df5-4e5e-4ba4-9352-12db8cf86c17" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,804d3df5-4e5e-4ba4-9352-12db8cf86c17.aspx</comments>
      <category>.Net;Common;Personal</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=b817844c-3435-4653-9b04-d8b25583f823</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,b817844c-3435-4653-9b04-d8b25583f823.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,b817844c-3435-4653-9b04-d8b25583f823.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b817844c-3435-4653-9b04-d8b25583f823</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      I hope this will be the start of a useful serie about Application Code Blocks. 
      It will be my first time experience with these code blocks, and I hope a good starter
      guide for other developers.
   </p>
        <h5>So what are application code blocks?
   </h5>
        <p>
      These are C# (and VB.Net) classes, which can be downloaded from the Microsoft website
      and used in any .Net application.  Even ASP.Net applications.  These powerful
      tools will make your applications more efficient and maintainable.  Those application
      blocks contain classes, methods and interfaces, which can be used.  A big advantage
      is that those application blocks are very well documented at the Microsoft site.  
      <br />
      A big benefit of using the application code blocks is faster and more modular development
      of your .Net application.  You don't have to worry about exceptions, ... because
      it's all in the application code block, so you can focus on your business layer. 
      Other advantages are:
   </p>
        <ul>
          <li>
          Buffer between you and the .Net framework 
      </li>
          <li>
          Application Code blocks are distributed as VS.Net projects 
      </li>
          <li>
          Make changes and/or additions that suits your needs</li>
        </ul>
        <p>
      As a conclusion we can say that the application code blocks are great tools and they
      will add efficiency to our projects, because it will be easier to write our programs
      and to maintain them.  
   </p>
        <h5>My application code blocks pilot?
   </h5>
        <p>
      OK, I put the Application Blocks in a pilot project for myself.  I will use a
      few of those Blocks in the first place.  In total I have create 3 phases in whom
      I will describe a few of those blocks :
   </p>
        <ul>
          <li>
         Phase 1: Till October 1st 2004 
      </li>
          <li>
         Phase 2: Till December 31st 2004 
      </li>
          <li>
         Phase 3: Beginning of 2005</li>
        </ul>
        <p>
      Code blocks that are available at this moment and which I'm going to look at:
   </p>
        <ul>
          <li>
         Aggregation Application Block 
      </li>
          <li>
         Asynchronous Invocation Application Block 
      </li>
          <li>
         Authorization and Profile Application Block (Phase 1) 
      </li>
          <li>
         Caching Application Block 
      </li>
          <li>
         Configuration Management Application Block  (Phase 3) 
      </li>
          <li>
         Data Access Application Block (Phase 1 and 2) 
      </li>
          <li>
         Exception Management Application Block (Phase 2) 
      </li>
          <li>
         Enterprise Notification Reference Architecture for Exchange 2000 Server 
      </li>
          <li>
         Logging Application Block (Phase 3) 
      </li>
          <li>
         Microsoft Content Integration Pack for Content Management Server 2001 and SharePoint
         Portal Server 2001 
      </li>
          <li>
         Smart Client Offline Application Block 
      </li>
          <li>
         Updater Application Block 
      </li>
          <li>
         User Interface Process Application Block (Phase 3)</li>
        </ul>
        <p>
      More info can be found at the <a href="http://www.microsoft.com/resources/practices/code.mspx">patterns
      &amp; practices: Code MSDN page</a></p>
        <p>
      Also, check the Coming Soon Section (<a href="http://www.microsoft.com/resources/practices/comingsoon.mspx">Patterns
      &amp; practices: Coming Soon</a>): 
   </p>
        <ul>
          <li>
         Enterprise Library 
      </li>
          <li>
         Enterprise Development Reference Architecture - VS 2005 “Whidbey” version</li>
        </ul>
        <p>
      Also Available : <a href="http://workspaces.gotdotnet.com/pagtest">Beta release of
      the Testing .Net Application Blocks Guide</a>.  Very interresting for reading
      when you have integrated or customized an Application Block in your own application.
   </p>
        <p>
      Stay tuned for the part in this series, where I will examine the code blocks as we
      are going to use them.
   </p>
        <h5>Resources:
   </h5>
        <p>
      MSDN: <a href="http://www.microsoft.com/resources/practices/default.mspx">http://www.microsoft.com/resources/practices/default.mspx</a><br />
      4GuysFromRolla: <a href="http://aspnet.4guysfromrolla.com/articles/062503-1.aspx">http://aspnet.4guysfromrolla.com/articles/062503-1.aspx</a><br />
      GotDotNet : <a href="http://workspaces.gotdotnet.com/pagtest">http://workspaces.gotdotnet.com/pagtest</a></p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=b817844c-3435-4653-9b04-d8b25583f823" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Application Code Blocks Introduction</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,b817844c-3435-4653-9b04-d8b25583f823.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Application+Code+Blocks+Introduction.aspx</link>
      <pubDate>Thu, 02 Sep 2004 07:25:28 GMT</pubDate>
      <description>&lt;p&gt;
   I hope this will be the start of a useful serie about Application Code Blocks.&amp;nbsp;
   It will be my first time experience with these code blocks, and I hope a good starter
   guide for other developers.
&lt;/p&gt;
&lt;h5&gt;So what are application code blocks?
&lt;/h5&gt;
&lt;p&gt;
   These are C# (and VB.Net) classes, which can be downloaded from the Microsoft website
   and used in any .Net application.&amp;nbsp; Even ASP.Net applications.&amp;nbsp; These powerful
   tools will make your applications more efficient and maintainable.&amp;nbsp; Those application
   blocks contain classes, methods and interfaces, which can be used.&amp;nbsp; A big advantage
   is that those application blocks are very well documented at the Microsoft site.&amp;nbsp; 
   &lt;br&gt;
   A big benefit of using the application code blocks is faster and more modular development
   of your .Net application.&amp;nbsp; You don't have to worry about exceptions, ... because
   it's all in the application code block, so you can focus on your business layer.&amp;nbsp;
   Other advantages are:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &amp;nbsp;Buffer between you and the .Net framework 
   &lt;li&gt;
      &amp;nbsp;Application Code blocks are distributed as VS.Net projects 
   &lt;li&gt;
      &amp;nbsp;Make changes and/or additions that suits your needs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   As a conclusion we can say that the application code blocks are great tools and they
   will add efficiency to our projects, because it will be easier to write our programs
   and to maintain them.&amp;nbsp; 
&lt;/p&gt;
&lt;h5&gt;My application code blocks pilot?
&lt;/h5&gt;
&lt;p&gt;
   OK, I put the Application Blocks in a pilot project for myself.&amp;nbsp; I will use a
   few of those Blocks in the first place.&amp;nbsp; In total I have create 3 phases in whom
   I will describe a few of those blocks :
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Phase 1: Till October 1st 2004 
   &lt;li&gt;
      Phase 2: Till December 31st 2004 
   &lt;li&gt;
      Phase 3: Beginning of 2005&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Code blocks that are available at this moment and which I'm going to look at:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Aggregation Application Block 
   &lt;li&gt;
      Asynchronous Invocation Application Block 
   &lt;li&gt;
      Authorization and Profile Application Block (Phase 1) 
   &lt;li&gt;
      Caching Application Block 
   &lt;li&gt;
      Configuration Management Application Block&amp;nbsp; (Phase 3) 
   &lt;li&gt;
      Data Access Application Block (Phase 1 and 2) 
   &lt;li&gt;
      Exception Management Application Block (Phase 2) 
   &lt;li&gt;
      Enterprise Notification Reference Architecture for Exchange 2000 Server 
   &lt;li&gt;
      Logging Application Block (Phase 3) 
   &lt;li&gt;
      Microsoft Content Integration Pack for Content Management Server 2001 and SharePoint
      Portal Server 2001 
   &lt;li&gt;
      Smart Client Offline Application Block 
   &lt;li&gt;
      Updater Application Block 
   &lt;li&gt;
      User Interface Process Application Block (Phase 3)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   More info can be found at the &lt;a href="http://www.microsoft.com/resources/practices/code.mspx"&gt;patterns
   &amp;amp; practices: Code MSDN page&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   Also, check the Coming Soon Section (&lt;a href="http://www.microsoft.com/resources/practices/comingsoon.mspx"&gt;Patterns
   &amp;amp; practices: Coming Soon&lt;/a&gt;): 
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Enterprise Library 
   &lt;li&gt;
      Enterprise Development Reference Architecture - VS 2005 &amp;#8220;Whidbey&amp;#8221; version&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Also Available : &lt;a href="http://workspaces.gotdotnet.com/pagtest"&gt;Beta release of
   the Testing .Net Application Blocks Guide&lt;/a&gt;.&amp;nbsp; Very interresting for reading
   when you have integrated or customized an Application Block in your own application.
&lt;/p&gt;
&lt;p&gt;
   Stay tuned for the part in this series, where I will examine the code blocks as we
   are going to use them.
&lt;/p&gt;
&lt;h5&gt;Resources:
&lt;/h5&gt;
&lt;p&gt;
   MSDN: &lt;a href="http://www.microsoft.com/resources/practices/default.mspx"&gt;http://www.microsoft.com/resources/practices/default.mspx&lt;/a&gt;
   &lt;br&gt;
   4GuysFromRolla: &lt;a href="http://aspnet.4guysfromrolla.com/articles/062503-1.aspx"&gt;http://aspnet.4guysfromrolla.com/articles/062503-1.aspx&lt;/a&gt;
   &lt;br&gt;
   GotDotNet : &lt;a href="http://workspaces.gotdotnet.com/pagtest"&gt;http://workspaces.gotdotnet.com/pagtest&lt;/a&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=b817844c-3435-4653-9b04-d8b25583f823" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,b817844c-3435-4653-9b04-d8b25583f823.aspx</comments>
      <category>.Net;Application Blocks</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=9051c32c-2781-45f2-a5dd-fef1341d78b6</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,9051c32c-2781-45f2-a5dd-fef1341d78b6.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,9051c32c-2781-45f2-a5dd-fef1341d78b6.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9051c32c-2781-45f2-a5dd-fef1341d78b6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Through the MSDN blogs, I came to an article of <a href="http://blogs.msdn.com/somasegar/">Somaseger</a>. 
      It seems that he run's the developer division @ Microsoft.  The <a href="http://blogs.msdn.com/somasegar/archive/2004/08/01/204540.aspx">article</a> is
      about the future of .Net and contains some interesting facts. 
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=9051c32c-2781-45f2-a5dd-fef1341d78b6" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Interresting article about the future of VB.Net</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,9051c32c-2781-45f2-a5dd-fef1341d78b6.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Interresting+Article+About+The+Future+Of+VBNet.aspx</link>
      <pubDate>Mon, 09 Aug 2004 08:06:20 GMT</pubDate>
      <description>&lt;p&gt;
   Through the MSDN blogs, I came to an article of &lt;a href="http://blogs.msdn.com/somasegar/"&gt;Somaseger&lt;/a&gt;.&amp;nbsp;
   It seems that he run's the developer division @ Microsoft.&amp;nbsp; The &lt;a href="http://blogs.msdn.com/somasegar/archive/2004/08/01/204540.aspx"&gt;article&lt;/a&gt; is
   about the future of .Net and contains some interesting facts. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=9051c32c-2781-45f2-a5dd-fef1341d78b6" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,9051c32c-2781-45f2-a5dd-fef1341d78b6.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=5afa56c9-cbce-4695-b940-b15d1a15a303</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,5afa56c9-cbce-4695-b940-b15d1a15a303.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,5afa56c9-cbce-4695-b940-b15d1a15a303.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=5afa56c9-cbce-4695-b940-b15d1a15a303</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      In <a href="http://blogs.msdn.com/guntherb/">GuntherB's weblog</a>, I read that
      following service packs are availale in tech preview for download :
   </p>
        <ul>
          <li>
            <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=CF52CA95-F2CC-459F-87EE-C17D16E22F08&amp;displaylang=en">.Net
         framework 1.0 SP3 Tech preview</a>
          </li>
          <li>
            <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=12721880-CB9F-4481-9610-987DE96532E7&amp;displaylang=en">.Net
         framework 1.1 SP1 Tech preview</a>
          </li>
          <li>
            <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=DA1C20AD-35AE-4CEA-8451-730FCD603383&amp;displaylang=en">.Net
         framework 1.1 SP1 Tech preview for W2003</a>
          </li>
        </ul>
        <p>
      Details about this service packs can be read at his <a href="http://blogs.msdn.com/guntherb/archive/2004/07/02/171579.aspx">blog</a> or
      by clicking the specific SP link above.
   </p>
        <p>
      Feedbacks, comments or suggestions can be send to the <a href="http://communities.microsoft.com/newsgroups/default.asp?icp=techpreview&amp;slcid=us">MS
      .Net Product Groups</a>.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=5afa56c9-cbce-4695-b940-b15d1a15a303" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>.Net framework 1.0 SP3 and 1.1 SP1 Tech preview available</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,5afa56c9-cbce-4695-b940-b15d1a15a303.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Net+Framework+10+SP3+And+11+SP1+Tech+Preview+Available.aspx</link>
      <pubDate>Fri, 02 Jul 2004 08:05:22 GMT</pubDate>
      <description>&lt;p&gt;
   In&amp;nbsp;&lt;a href="http://blogs.msdn.com/guntherb/"&gt;GuntherB's weblog&lt;/a&gt;, I read that
   following service packs are availale in tech preview for download :
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=CF52CA95-F2CC-459F-87EE-C17D16E22F08&amp;amp;displaylang=en"&gt;.Net
      framework 1.0 SP3 Tech preview&lt;/a&gt;
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=12721880-CB9F-4481-9610-987DE96532E7&amp;amp;displaylang=en"&gt;.Net
      framework 1.1 SP1 Tech preview&lt;/a&gt;
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=DA1C20AD-35AE-4CEA-8451-730FCD603383&amp;amp;displaylang=en"&gt;.Net
      framework 1.1 SP1 Tech preview for W2003&lt;/a&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Details about this service packs can be read at his &lt;a href="http://blogs.msdn.com/guntherb/archive/2004/07/02/171579.aspx"&gt;blog&lt;/a&gt;&amp;nbsp;or
   by clicking the specific SP link above.
&lt;/p&gt;
&lt;p&gt;
   Feedbacks, comments or suggestions can be send to the &lt;a href="http://communities.microsoft.com/newsgroups/default.asp?icp=techpreview&amp;amp;slcid=us"&gt;MS
   .Net Product Groups&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=5afa56c9-cbce-4695-b940-b15d1a15a303" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,5afa56c9-cbce-4695-b940-b15d1a15a303.aspx</comments>
      <category>.Net;News</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=ec1fe337-acb3-436a-b3d1-57e967447132</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,ec1fe337-acb3-436a-b3d1-57e967447132.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,ec1fe337-acb3-436a-b3d1-57e967447132.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=ec1fe337-acb3-436a-b3d1-57e967447132</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Also available now is <a href="http://lab.msdn.microsoft.com/express/">SQL Server
      2005 Beta 1 Express Editions</a>.  The same as for the Express editions of VS
      2005, it's a lightweight version of SQL Server 2005.
   </p>
        <p>
      You can find more info here :
   </p>
        <ul>
          <li>
            <a href="http://lab.msdn.microsoft.com/express/">Microsoft Labs</a>
          </li>
          <li>
            <a href="http://sqljunkies.com/WebLog/brianr/archive/2004/06/28/3314.aspx">Brian A.
         Randell</a>
          </li>
          <li>
            <a href="http://blogs.msdn.com/vsdata/archive/2004/06/29/168529.aspx">VS Data team's
         Weblog</a>
          </li>
        </ul>
        <p>
          <em>Update : 
      <br />
      Check also the </em>
          <a href="http://blogs.msdn.com/express">
            <em>VSExpress blog</em>
          </a>
          <em>.</em>
        </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=ec1fe337-acb3-436a-b3d1-57e967447132" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>SQL Server 2005 Beta 1 Express version available</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,ec1fe337-acb3-436a-b3d1-57e967447132.aspx</guid>
      <link>http://blog.svencipido.be/Blog/SQL+Server+2005+Beta+1+Express+Version+Available.aspx</link>
      <pubDate>Tue, 29 Jun 2004 11:44:32 GMT</pubDate>
      <description>&lt;p&gt;
   Also available now is &lt;a href="http://lab.msdn.microsoft.com/express/"&gt;SQL Server
   2005 Beta 1 Express Editions&lt;/a&gt;.&amp;nbsp; The same as for the Express editions of VS
   2005, it's a lightweight version of SQL Server 2005.
&lt;/p&gt;
&lt;p&gt;
   You can find more info here :
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;a href="http://lab.msdn.microsoft.com/express/"&gt;Microsoft Labs&lt;/a&gt; 
   &lt;li&gt;
      &lt;a href="http://sqljunkies.com/WebLog/brianr/archive/2004/06/28/3314.aspx"&gt;Brian A.
      Randell&lt;/a&gt; 
   &lt;li&gt;
      &lt;a href="http://blogs.msdn.com/vsdata/archive/2004/06/29/168529.aspx"&gt;VS Data team's
      Weblog&lt;/a&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;em&gt;Update : 
   &lt;br&gt;
   Check also the &lt;/em&gt;&lt;a href="http://blogs.msdn.com/express"&gt;&lt;em&gt;VSExpress blog&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=ec1fe337-acb3-436a-b3d1-57e967447132" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,ec1fe337-acb3-436a-b3d1-57e967447132.aspx</comments>
      <category>.Net;News;SQL Server;Tech.Ed</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=1c5bfeb7-4d0b-4133-aa80-8251cd2edc0d</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,1c5bfeb7-4d0b-4133-aa80-8251cd2edc0d.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,1c5bfeb7-4d0b-4133-aa80-8251cd2edc0d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=1c5bfeb7-4d0b-4133-aa80-8251cd2edc0d</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/Visual%20Studio%202005%20Home%20Get%20the%20Visual%20Studio%202005%20Beta.jpg" border="0" />
        </p>
        <p>
      Finally the first beta of VS 2005 is available for <a href="http://lab.msdn.microsoft.com/VS2005/">download</a>.
   </p>
        <p>
      There are two version.  
   </p>
        <ol>
          <li>
         The full beta, available to MSDN Subsscribers 
      </li>
          <li>
         The express beta products, available for free public download</li>
        </ol>
        <p>
      According to the information I found, it seems that the express version is more for
      beginning hobbyists, people who get started with .Net programming, ...
   </p>
        <p>
          <em>Update<br />
      Be sure to check out the Channel 9 <a href="http://channel9.msdn.com/express/">Summer
      Of Express Contest</a>.  A lot of info can be found.  BTW you can win one
      of the 6 Xbox with XBox Live Subscription and the Halo2 game.<br /></em>
        </p>
        <a href="http://channel9.msdn.com/express/">
          <img src="http://blog.svencipido.be/Blog/content/binary/contesticon.gif" border="0" />
        </a>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=1c5bfeb7-4d0b-4133-aa80-8251cd2edc0d" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Visual Studio 2005 Beta 1 available for download</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,1c5bfeb7-4d0b-4133-aa80-8251cd2edc0d.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Visual+Studio+2005+Beta+1+Available+For+Download.aspx</link>
      <pubDate>Tue, 29 Jun 2004 08:20:03 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/Visual%20Studio%202005%20Home%20Get%20the%20Visual%20Studio%202005%20Beta.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   Finally the first beta of VS 2005 is available for &lt;a href="http://lab.msdn.microsoft.com/VS2005/"&gt;download&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   There are two version.&amp;nbsp; 
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;
      The full beta, available to MSDN Subsscribers 
   &lt;li&gt;
      The express beta products, available for free public download&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   According to the information I found, it seems that the express version is more for
   beginning hobbyists, people who get started with .Net programming, ...
&lt;/p&gt;
&lt;p&gt;
   &lt;em&gt;Update&lt;br&gt;
   Be sure to check out the Channel 9 &lt;a href="http://channel9.msdn.com/express/"&gt;Summer
   Of Express Contest&lt;/a&gt;.&amp;nbsp; A lot of info can be found.&amp;nbsp; BTW you can win one
   of the 6 Xbox with XBox Live Subscription and the Halo2 game.&lt;br&gt;
   &lt;/em&gt;
&lt;/p&gt;
&lt;a href="http://channel9.msdn.com/express/"&gt;&lt;img src="http://blog.svencipido.be/Blog/content/binary/contesticon.gif" border=0&gt;&lt;/a&gt;&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=1c5bfeb7-4d0b-4133-aa80-8251cd2edc0d" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,1c5bfeb7-4d0b-4133-aa80-8251cd2edc0d.aspx</comments>
      <category>.Net;News</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=ac785c28-6605-4fbb-8e31-683d1bf52b6c</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,ac785c28-6605-4fbb-8e31-683d1bf52b6c.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,ac785c28-6605-4fbb-8e31-683d1bf52b6c.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=ac785c28-6605-4fbb-8e31-683d1bf52b6c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Through <a href="http://www.vsdotnet.be/blogs/tommer/">Tom's Corner</a>, I came across <a href="http://www.panopticoncentral.net/">Paul
      Vick's blog</a>.  I'm, just like Tom a VB.net programmer (although still a junior
      ;-) ).  At our work we had several discussions about this.  I know C# has
      it's advantages and disadvantages, but it's the same for VB.Net.  I also know
      that in VS.Net 2005 VB.net has several features which will not be availlable in C#. 
      So look at the <a href="http://www.panopticoncentral.net/archive/2004/05/31/1100.aspx">interresting
      article</a> of Paul.
   </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=ac785c28-6605-4fbb-8e31-683d1bf52b6c" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>What's the native language for .Net</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,ac785c28-6605-4fbb-8e31-683d1bf52b6c.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Whats+The+Native+Language+For+Net.aspx</link>
      <pubDate>Wed, 02 Jun 2004 13:11:11 GMT</pubDate>
      <description>&lt;p&gt;
   Through &lt;a href="http://www.vsdotnet.be/blogs/tommer/"&gt;Tom's Corner&lt;/a&gt;, I came across &lt;a href="http://www.panopticoncentral.net/"&gt;Paul
   Vick's blog&lt;/a&gt;.&amp;nbsp; I'm, just like Tom a VB.net programmer (although still a junior
   ;-) ).&amp;nbsp; At our work we had several discussions about this.&amp;nbsp; I know C# has
   it's advantages and disadvantages, but it's the same for VB.Net.&amp;nbsp; I also know
   that in VS.Net 2005 VB.net has several features which will not be availlable in C#.&amp;nbsp;
   So look at the &lt;a href="http://www.panopticoncentral.net/archive/2004/05/31/1100.aspx"&gt;interresting
   article&lt;/a&gt; of Paul.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=ac785c28-6605-4fbb-8e31-683d1bf52b6c" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,ac785c28-6605-4fbb-8e31-683d1bf52b6c.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=f9c2d2b5-9ed9-49e8-be5b-2ce519239674</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,f9c2d2b5-9ed9-49e8-be5b-2ce519239674.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,f9c2d2b5-9ed9-49e8-be5b-2ce519239674.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=f9c2d2b5-9ed9-49e8-be5b-2ce519239674</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Under ASP normally we you use response.redirect("webform2.asp") to go to another page. 
      This could also be used in ASP.Net.  
   </p>
        <p>
      Well, Response.Redirect simply sends a message down to the browser, telling it to
      move to another page.  Server.Transfer is similar in that it sends the user to
      another page with a statement such as Server.Transfer("WebForm2.aspx"). However, the
      statement has a number of distinct advantages and disadvantages.
   </p>
        <ol>
          <li>
         Transferring to another page using server.transfer conserves server resources. 
         Instead of a redirect it changes the focus on the webserver and transfers the request. 
      </li>
          <li>
         server.transfer also works only on the sites running on the server.  You can't
         use server.transfer to send the user to an external site.  This can be done only
         by using response.redirect. 
      </li>
          <li>
         server.transfer maintains the original URL in the browser. 
      </li>
          <li>
         server.transfer has also an optional parameter " preserveForm ".  If you set
         this to True, using a statement such as Server.Transfer("WebForm2.aspx", True), the
         existing query string and any form variables will still be available to the page you
         are transferring to.  This means that you'd be able to retrieve the value of
         the original page TextBox control by referencing Request.Form("TextBox1").</li>
        </ol>
        <p>
      But be aware when using the preserveForm parameter : ASP.NET has a bug whereby, in
      certain situations, an error will occur when attempting to transfer the form and query
      string values. You'll find this documented at <a href="http://support.microsoft.com/default.aspx?id=kb;en-us;Q316920">http://support.microsoft.com/default.aspx?id=kb;en-us;Q316920</a></p>
        <p>
      The unofficial solution is to set the enableViewStateMac property to True on the page
      you'll be transferring to, then set it back to False. This records that you want a
      definitive False value for this property and resolves the bug.
   </p>
        <p>
          <em>Update :<br />
      I forgot to mention the original article.  So </em>
          <a href="http://www.developer.com/net/asp/article.php/3299641">
            <em>here</em>
          </a>
          <em> it
      is. (Sorry Karl)</em>
        </p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=f9c2d2b5-9ed9-49e8-be5b-2ce519239674" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>response.redirect versus server.transfer</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,f9c2d2b5-9ed9-49e8-be5b-2ce519239674.aspx</guid>
      <link>http://blog.svencipido.be/Blog/responseredirect+Versus+Servertransfer.aspx</link>
      <pubDate>Tue, 18 May 2004 13:16:29 GMT</pubDate>
      <description>&lt;p&gt;
   Under ASP normally we you use response.redirect("webform2.asp") to go to another page.&amp;nbsp;
   This could also be used in ASP.Net.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   Well, Response.Redirect simply sends a message down to the browser, telling it to
   move to another page.&amp;nbsp; Server.Transfer is similar in that it sends the user to
   another page with a statement such as Server.Transfer("WebForm2.aspx"). However, the
   statement has a number of distinct advantages and disadvantages.
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;
      Transferring to another page using server.transfer conserves server resources.&amp;nbsp;
      Instead of a redirect it changes the focus on the webserver and transfers the request. 
   &lt;li&gt;
      server.transfer also works only on the sites running on the server.&amp;nbsp; You can't
      use server.transfer to send the user to an external site.&amp;nbsp; This can be done only
      by using response.redirect. 
   &lt;li&gt;
      server.transfer maintains the original URL in the browser. 
   &lt;li&gt;
      server.transfer has also an optional parameter " preserveForm ".&amp;nbsp; If you set
      this to True, using a statement such as Server.Transfer("WebForm2.aspx", True), the
      existing query string and any form variables will still be available to the page you
      are transferring to.&amp;nbsp; This means that you'd be able to retrieve the value of
      the original page TextBox control by referencing Request.Form("TextBox1").&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   But be aware when using the preserveForm parameter : ASP.NET has a bug whereby, in
   certain situations, an error will occur when attempting to transfer the form and query
   string values. You'll find this documented at &lt;a href="http://support.microsoft.com/default.aspx?id=kb;en-us;Q316920"&gt;http://support.microsoft.com/default.aspx?id=kb;en-us;Q316920&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   The unofficial solution is to set the enableViewStateMac property to True on the page
   you'll be transferring to, then set it back to False. This records that you want a
   definitive False value for this property and resolves the bug.
&lt;/p&gt;
&lt;p&gt;
   &lt;em&gt;Update :&lt;br&gt;
   I forgot to mention the original article.&amp;nbsp; So &lt;/em&gt;&lt;a href="http://www.developer.com/net/asp/article.php/3299641"&gt;&lt;em&gt;here&lt;/em&gt;&lt;/a&gt;&lt;em&gt; it
   is. (Sorry Karl)&lt;/em&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=f9c2d2b5-9ed9-49e8-be5b-2ce519239674" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,f9c2d2b5-9ed9-49e8-be5b-2ce519239674.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=dd0bb1ce-5e73-44df-9085-fd56a755b01c</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,dd0bb1ce-5e73-44df-9085-fd56a755b01c.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,dd0bb1ce-5e73-44df-9085-fd56a755b01c.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=dd0bb1ce-5e73-44df-9085-fd56a755b01c</wfw:commentRss>
      <title>Tooltip</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,dd0bb1ce-5e73-44df-9085-fd56a755b01c.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Tooltip.aspx</link>
      <pubDate>Mon, 17 May 2004 13:02:33 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;I was looking for something
   that I could create to use a tooltip on a textbox.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Sometimes
   this can be very handy.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;I
   have a little project where I need this tool tip for extra information to the user.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;In .net this is easy
   because under the windows.forms namespace you got the tool tip object.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;The best way to add
   tooltips on your form is to create the tool tip object in your form_load event.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;These are the steps
   :&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Declare
         a new tooltip object&lt;o:p&gt;&lt;/o:p&gt;
         &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
      &lt;/div&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;In
         the form_load event set the tooltip for every control you want. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;You
         can set all properties here&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
      &lt;/div&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#0000ff size=1&gt; 
&lt;p&gt;
   Public
&lt;/font&gt;&lt;font size=1&gt; &lt;/font&gt;&lt;font color=#0000ff size=1&gt;Class&lt;/font&gt;&lt;font size=1&gt; Form1&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff size=1&gt;Inherits&lt;/font&gt;&lt;font size=1&gt; System.Windows.Forms.Form&gt;
&lt;p&gt;
&lt;/font&gt;&lt;font color=#0000ff size=1&gt;Private&lt;/font&gt;&lt;font size=1&gt; oTooltip &lt;/font&gt;&lt;font color=#0000ff size=1&gt;As&lt;/font&gt;&lt;font size=1&gt; &lt;/font&gt;&lt;font color=#0000ff size=1&gt;New&lt;/font&gt;&lt;font size=1&gt; ToolTip&lt;/font&gt;&gt;
&lt;font size=1&gt;&lt;font color=#0000ff size=1&gt; 
&lt;p&gt;
   Private
&lt;/font&gt;&lt;font size=1&gt; &lt;/font&gt;&lt;font color=#0000ff size=1&gt;Sub&lt;/font&gt;&lt;font size=1&gt; Form1_Load(&lt;/font&gt;&lt;font color=#0000ff size=1&gt;ByVal&lt;/font&gt;&lt;font size=1&gt; sender &lt;/font&gt;&lt;font color=#0000ff size=1&gt;As&lt;/font&gt;&lt;font size=1&gt; System.Object, &lt;/font&gt;&lt;font color=#0000ff size=1&gt;ByVal&lt;/font&gt;&lt;font size=1&gt; e &lt;/font&gt;&lt;font color=#0000ff size=1&gt;As&lt;/font&gt;&lt;font size=1&gt; System.EventArgs) &lt;/font&gt;&lt;font color=#0000ff size=1&gt;Handles&lt;/font&gt;&lt;font size=1&gt; &lt;/font&gt;&lt;font color=#0000ff size=1&gt;MyBase&lt;/font&gt;&lt;font size=1&gt;.Load&lt;br&gt;
oTooltip.SetToolTip(TextBox1, "Meerder adressen scheiden door ;")&lt;br&gt;
oTooltip.ShowAlways = &lt;/font&gt;&lt;font color=#0000ff size=1&gt;True&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff size=1&gt;End&lt;/font&gt;&lt;font size=1&gt; &lt;/font&gt;&lt;font color=#0000ff size=1&gt;Sub&lt;/font&gt;&gt;
&lt;p&gt;
   &lt;font color=#0000ff size=1&gt;End Class
&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&gt; 
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;You need also to remove
   those tool tips when closing your form.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;In
   the closing event you could use the remove_all method to delete your tool tips.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;font size=1&gt;oTooltip.RemoveAll()&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;font size=1&gt;&amp;nbsp;
&lt;/p&gt;
&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt; 
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   The tooltip has some nice properties :&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;AutoPopDelay
   : Sets the time that the tool tip remains visible.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ShowAlways
   : shows the tool tip even when the control isn't active
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
   &lt;em&gt;Update :&lt;br&gt;
   If you want to do it the easy way.&amp;nbsp; Just drop the tool tip control on your form.&amp;nbsp;
   When asking the properties of the other controls on your form, you will see that they
   have a new property 'ToolTip on ToolTip1'.&amp;nbsp; This can be used to show the tool
   tip text.&amp;nbsp; All the properties of the tool tip component can be set by using the
   properties of the tool tip component. (Thanks Raf)&lt;/em&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=dd0bb1ce-5e73-44df-9085-fd56a755b01c" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,dd0bb1ce-5e73-44df-9085-fd56a755b01c.aspx</comments>
      <category>.Net</category>
    </item>
    <item>
      <trackback:ping>http://blog.svencipido.be/Blog/Trackback.aspx?guid=350b90e0-64e1-464f-984e-44700a956b48</trackback:ping>
      <pingback:server>http://blog.svencipido.be/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.svencipido.be/Blog/PermaLink,guid,350b90e0-64e1-464f-984e-44700a956b48.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.svencipido.be/Blog/CommentView,guid,350b90e0-64e1-464f-984e-44700a956b48.aspx</wfw:comment>
      <wfw:commentRss>http://blog.svencipido.be/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=350b90e0-64e1-464f-984e-44700a956b48</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p>
          <img src="http://blog.svencipido.be/Blog/content/binary/beta1-anim.gif" border="0" />
        </p>
        <p>
      After years of pointing out the <a href="http://www.go-mono.com/">Mono project </a>as
      a beacon of hope to those who want to enjoy the benefits of ASP.NET without suffering
      Microsoft lock-in, I had honestly given up hope of ever seeing this open source effort
      bear practical fruit. Imagine my surprise last week when Beta 1 of the Mono Project
      was released! 
   </p>
        <p>
      Downloads are available for Windows and Mac OS X, as well as all popular Linux platforms. 
   </p>
        <p>
      For those who don't know, Mono is an open source project that aims to create cross-platform
      versions of: 
   </p>
        <ul>
          <li>
         a C# compiler 
      </li>
          <li>
         the Common Language Runtime (CLR) 
      </li>
          <li>
         most of the .NET Framework's class library, including ADO.NET and ASP.NET 
      </li>
        </ul>
        <p>
      Most notably for Web developers, ASP.NET (including both Web Forms and Web Services)
      is advertised as being fully functional with this release! 
   </p>
        <p>
      The Mono project, which is sponsored by Novell (who bought out Ximian last year),
      have two more beta releases planned before the final release of Mono 1.0 on or about
      June 30, 2004<br /></p>
        <img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=350b90e0-64e1-464f-984e-44700a956b48" />
        <br />
        <hr />
   My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</body>
      <title>Mono Beta 1 is out!</title>
      <guid>http://blog.svencipido.be/Blog/PermaLink,guid,350b90e0-64e1-464f-984e-44700a956b48.aspx</guid>
      <link>http://blog.svencipido.be/Blog/Mono+Beta+1+Is+Out.aspx</link>
      <pubDate>Wed, 12 May 2004 08:03:02 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://blog.svencipido.be/Blog/content/binary/beta1-anim.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   After years of pointing out the &lt;a href="http://www.go-mono.com/"&gt;Mono project &lt;/a&gt;as
   a beacon of hope to those who want to enjoy the benefits of ASP.NET without suffering
   Microsoft lock-in, I had honestly given up hope of ever seeing this open source effort
   bear practical fruit. Imagine my surprise last week when Beta 1 of the Mono Project
   was released! 
&lt;/p&gt;
&lt;p&gt;
   Downloads are available for Windows and Mac OS X, as well as all popular Linux platforms. 
&lt;/p&gt;
&lt;p&gt;
   For those who don't know, Mono is an open source project that aims to create cross-platform
   versions of: 
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      a C# compiler 
   &lt;/li&gt;
   &lt;li&gt;
      the Common Language Runtime (CLR) 
   &lt;/li&gt;
   &lt;li&gt;
      most of the .NET Framework's class library, including ADO.NET and ASP.NET 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Most notably for Web developers, ASP.NET (including both Web Forms and Web Services)
   is advertised as being fully functional with this release! 
&lt;/p&gt;
&lt;p&gt;
   The Mono project, which is sponsored by Novell (who bought out Ximian last year),
   have two more beta releases planned before the final release of Mono 1.0 on or about
   June 30, 2004&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.svencipido.be/Blog/aggbug.ashx?id=350b90e0-64e1-464f-984e-44700a956b48" /&gt;
&lt;br /&gt;
&lt;hr /&gt;My thoughts, shares,... with .Net and Microsoft - The blog of Sven Cipido</description>
      <comments>http://blog.svencipido.be/Blog/CommentView,guid,350b90e0-64e1-464f-984e-44700a956b48.aspx</comments>
      <category>.Net;News</category>
    </item>
  </channel>
</rss>