<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>Sleep Overrated - Scott Cowan</title>
  <link rel="alternate" type="text/html" href="http://www.sleepoverrated.com/" />
  <link rel="self" href="http://www.sleepoverrated.com/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2008-04-06T06:33:07.5625-04:00</updated>
  <author>
    <name>Scott Cowan</name>
  </author>
  <subtitle>I sleep so you don't have to</subtitle>
  <id>http://www.sleepoverrated.com/</id>
  <generator uri="http://www.dasblog.net" version="2.1.7239.744">DasBlog</generator>
  <entry>
    <title>[Guerilla Development] Setup Source Control in 60 seconds</title>
    <link rel="alternate" type="text/html" href="http://www.sleepoverrated.com/2008/04/06/GuerillaDevelopmentSetupSourceControlIn60Seconds.aspx" />
    <id>http://www.sleepoverrated.com/PermaLink,guid,571063f6-f264-411c-8c5d-99945dca36fe.aspx</id>
    <published>2008-04-06T06:33:07.5625-04:00</published>
    <updated>2008-04-06T06:33:07.5625-04:00</updated>
    <content type="html">Have you ever&amp;nbsp;had a job where they don&amp;rsquo;t&amp;nbsp;have source control? There may be some good excuses but you're still missing one of best tools you can have. Today I'll show you how to &lt;strong&gt;setup
source control in under a minute without a server.&lt;/strong&gt;
&lt;br /&gt;
&lt;br /&gt;
It can be daunting looking at Subversion when you think that you need to setup a server
with it but thats not the case. You can use TortoiseSVN to create a server-less repository. &lt;b&gt;I
don't recommend this setup&lt;/b&gt; but it gives a way to try out Subversion or a quick
way of setting up a source control system. The best thing about this is that &lt;b&gt;you
can copy the repository to a full subversion server&lt;/b&gt; when you have one. If you
like using subversion I recommend &lt;a href="http://www.visualsvn.com/server"&gt;Visual
SVN Server&lt;/a&gt; on windows.&lt;br /&gt;
&lt;h3&gt;Reasons to use this setup
&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
You want to try out subversion.&lt;/li&gt;
&lt;li&gt;
You want source control but don't have the time to set it up.&lt;/li&gt;
&lt;li&gt;
You do all your work disconnected.&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Reasons to use a server instead
&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
You will probably run into problems when two people are trying to checkin files at
the same time.&lt;/li&gt;
&lt;li&gt;
You want to remotely access the source control.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;How To Setup
&lt;/h3&gt;
&lt;p&gt;
Here's how you can use TortoiseSVN to create a repository without a server. 
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
1. Download and install &lt;a href="http://tortoisesvn.tigris.org/"&gt;TortoiseSVN &lt;/a&gt;
&lt;br /&gt;
2. Create a directory for all your repositories (I called mine c:\repositories)&lt;br /&gt;
3. Create a directory for this repository (I called mine sample)&lt;br /&gt;
4. Create your first repository (by going into the sample dir and right click)
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="" src="http://www.sleepoverrated.com/files/80403_2D01_small.jpg" border="0" /&gt;
&lt;/p&gt;
&lt;p&gt;
5. Use a FSFS file system (its just a recommendation)
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="80403-02" src="http://www.sleepoverrated.com/files/80403_2D02_small.jpg" border="0" /&gt;
&lt;/p&gt;
&lt;p&gt;
6. You should see some folders (conf,dav,db,hooks,locks)
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="80403-07" src="http://www.sleepoverrated.com/files/80403_2D07_small.jpg" border="0" /&gt;
&lt;/p&gt;
&lt;p&gt;
7. Create a network share folder (right click on c:\repositories)&lt;br /&gt;
&lt;img alt="80403-03" src="http://www.sleepoverrated.com/files/80403_2D03_small.jpg" border="0" /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
8. Make sure the share has write access
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="80403-04" src="http://www.sleepoverrated.com/files/80403_2D04_small.jpg" border="0" /&gt;
&lt;/p&gt;
&lt;p&gt;
9. Checkout the repository to another directory (right click on any dir)
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="80403-08" src="http://www.sleepoverrated.com/files/80403_2D08_small.jpg" border="0" /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
10. Fill in &amp;ldquo;Url of repository&amp;rdquo;&amp;nbsp; (the url to a network share&amp;nbsp;which
looks like this &lt;a href="file://computername/repos"&gt;file:////computername/repos&lt;/a&gt;)&lt;br /&gt;
11.&amp;nbsp;Fill in the checkout directory&amp;nbsp; (the dir doesn&amp;rsquo;t have to exist
yet it will ask if it should create it for you)
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="80403-05" src="http://www.sleepoverrated.com/files/80403_2D05_small.jpg" border="0" /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;h3&gt;Summary
&lt;/h3&gt;
&lt;p&gt;
You now know how to setup subversion on your local file system. TortoiseSVN commands
can be found in the right click context where you found the Checkout and Create Repository
here options, just make sure you are click in or on the folder you checked out. Here&amp;rsquo;s
some links that will help you get started.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.visualsvn.com/"&gt;VisualSVN for Visual Studio&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.mind.ilstu.edu/research/robots/iris4/developers/svntutorial/"&gt;TortoiseSVN
Tutorial&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;em&gt;Technorati tags &lt;/em&gt;&lt;a href="http://technorati.com/tag/subversion" rel="tag"&gt;&lt;em&gt;subversion&lt;/em&gt;&lt;/a&gt;&lt;em&gt; &lt;/em&gt;&lt;a href="http://technorati.com/tag/svn" rel="tag"&gt;&lt;em&gt;svn&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;/em&gt;&lt;a href="http://technorati.com/tag/programming" rel="tag"&gt;&lt;em&gt;programming&lt;/em&gt;&lt;/a&gt;&lt;img width="0" height="0" src="http://www.sleepoverrated.com/aggbug.ashx?id=571063f6-f264-411c-8c5d-99945dca36fe" /&gt;</content>
  </entry>
  <entry>
    <title>[Build Knowledge] Promoting your build</title>
    <link rel="alternate" type="text/html" href="http://www.sleepoverrated.com/2007/12/05/BuildKnowledgePromotingYourBuild.aspx" />
    <id>http://www.sleepoverrated.com/PermaLink,guid,f957f700-9e98-4c29-9fd6-198458a0ca17.aspx</id>
    <published>2007-12-05T07:14:16.604875-05:00</published>
    <updated>2007-12-05T07:14:16.604875-05:00</updated>
    <content type="html">&lt;p&gt;
If there&amp;rsquo;s one thing that you should ask your self across everything&amp;nbsp;you
do it&amp;rsquo;s &amp;ldquo;How can we test this&amp;rdquo;. Deployments are often overlooked
as so infrequent that it doesn&amp;rsquo;t need to be fully tested or automated. I&amp;rsquo;ll
show you how to setup a simple promotion system using CruiseControl.Net and NAnt.
&lt;/p&gt;
&lt;p&gt;
Here are the symtoms that you need to improve how your deploying your applications.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
You can&amp;rsquo;t remember if you deployed some fix or feature and have to check to
see if you did.&lt;/li&gt;
&lt;li&gt;
You don&amp;rsquo;t remember when you actually deployed but remember it was around march
last year.&lt;/li&gt;
&lt;li&gt;
You&amp;rsquo;re the only person that knows how to deploy.&lt;/li&gt;
&lt;li&gt;
You&amp;rsquo;ve accidently deployed a the application built in debug.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;What you&amp;rsquo;ll need
&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
Download and install &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET"&gt;CruiseControl.Net&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
Read thru the last &lt;a href="http://www.sleepoverrated.com/2007/11/17/BuildKnowledgeVersioning.aspx"&gt;article&lt;/a&gt; where
we covered versioning with NAnt and CruiseControl.Net&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
You can&amp;nbsp;download the code from &lt;a href="http://code.google.com/p/sleepoverrated/"&gt;google
code&lt;/a&gt; at
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://sleepoverrated.googlecode.com/svn/"&gt;http://sleepoverrated.googlecode.com/svn/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
If you have a Subversion Client like &lt;a href="http://tortoisesvn.tigris.org/"&gt;TortoiseSVN&lt;/a&gt; then
you can just check out all the code.
&lt;/p&gt;
&lt;h3&gt;The Enviroments
&lt;/h3&gt;
&lt;p&gt;
&lt;img alt="BK02Enviroments" src="http://www.sleepoverrated.com/files/BK02Enviroments.png" border="0" /&gt;
&lt;/p&gt;
&lt;p&gt;
We&amp;rsquo;ll be using three server enviroments here, each one could be a web server
or a windows form or anything but today it&amp;rsquo;ll just be a command line application.
The Application prints its version number and the enviroment name from a config file.
Hopefully after we&amp;rsquo;re thru here you can scale this system out to whatever your
needs are.
&lt;/p&gt;
&lt;h3&gt;NAnt Configuration
&lt;/h3&gt;
&lt;p&gt;
We will need two builds one for Current (our Continuous Integration)&amp;nbsp;and&amp;nbsp;one
for&amp;nbsp;Development. The only difference&amp;nbsp;is that Current is compiled in debug
and development is compiled in release mode. Its good practise to start compiling
in debug on your Continuous Integration enviroment so that you can generate Code Coverage
reports using &lt;a href="http://www.ncover.com/"&gt;NCover&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
The only promotion we&amp;rsquo;re showing here is for staging since you should really
seperate your promotion to live into another process to prevent accidental promotions.
&lt;/p&gt;
&lt;h4&gt;buildknowledge.build
&lt;/h4&gt;
&lt;p&gt;
This is a variation of the &lt;a href="http://www.sleepoverrated.com/2007/11/17/BuildKnowledgeVersioning.aspx"&gt;last
articles&lt;/a&gt; build file.
&lt;/p&gt;
&lt;p&gt;
The main differences are:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
There&amp;rsquo;s a debug property so we can set the compile mode&lt;/li&gt;
&lt;li&gt;
the expand.template.file lets us generate a config file by replacing tokens in config\app.config.template&lt;/li&gt;
&lt;li&gt;
deploy.copy lets us copy a whole directory of development to staging&lt;/li&gt;
&lt;li&gt;
include buildfile lets us add more tasks specific to our different enviroments in
the second build file&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
The actually targets we&amp;rsquo;ll be running are in the next NAnt file so these are
just lower level tasks
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-8"&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="rem"&gt;&amp;lt;!--EXTERNAL_PROPERTIES:
target.dir;source.dir;AppConfig.EnviromentName;AppConfig.Directory--&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="BuildKnowledge"&lt;/span&gt; &lt;span class="attr"&gt;default&lt;/span&gt;&lt;span class="kwrd"&gt;="current"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="rem"&gt;&amp;lt;!--
add tasks in from the enviroments build file --&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;include&lt;/span&gt; &lt;span class="attr"&gt;buildfile&lt;/span&gt;&lt;span class="kwrd"&gt;="buildknowledge.enviroments.build"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="rem"&gt;&amp;lt;!--
initialize properties --&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="debug"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="target.dir"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="build"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="source.dir"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=""&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="init"&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;="clean
out build dirs"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;delete&lt;/span&gt; &lt;span class="attr"&gt;dir&lt;/span&gt;&lt;span class="kwrd"&gt;="build"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;mkdir&lt;/span&gt; &lt;span class="attr"&gt;dir&lt;/span&gt;&lt;span class="kwrd"&gt;="build"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;delete&lt;/span&gt; &lt;span class="attr"&gt;dir&lt;/span&gt;&lt;span class="kwrd"&gt;="${target.dir}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;mkdir&lt;/span&gt; &lt;span class="attr"&gt;dir&lt;/span&gt;&lt;span class="kwrd"&gt;="${target.dir}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="asminfo"&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;="generating
the AssemblyInfo.cs"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;if&lt;/span&gt; &lt;span class="attr"&gt;test&lt;/span&gt;&lt;span class="kwrd"&gt;="${property::exists('CCNetLabel')
== false}"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="CCNetLabel"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="0.0.0.1"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;if&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asminfo&lt;/span&gt; &lt;span class="attr"&gt;output&lt;/span&gt;&lt;span class="kwrd"&gt;="build\AssemblyInfo.cs"&lt;/span&gt; &lt;span class="attr"&gt;language&lt;/span&gt;&lt;span class="kwrd"&gt;="CSharp"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;imports&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;import&lt;/span&gt; &lt;span class="attr"&gt;namespace&lt;/span&gt;&lt;span class="kwrd"&gt;="System"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;import&lt;/span&gt; &lt;span class="attr"&gt;namespace&lt;/span&gt;&lt;span class="kwrd"&gt;="System.Reflection"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;import&lt;/span&gt; &lt;span class="attr"&gt;namespace&lt;/span&gt;&lt;span class="kwrd"&gt;="System.EnterpriseServices"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;import&lt;/span&gt; &lt;span class="attr"&gt;namespace&lt;/span&gt;&lt;span class="kwrd"&gt;="System.Runtime.InteropServices"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;imports&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;attributes&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;attribute&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="ComVisibleAttribute"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;attribute&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="CLSCompliantAttribute"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;attribute&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="AssemblyVersionAttribute"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="${CCNetLabel}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;attribute&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="AssemblyTitleAttribute"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="Build
knowledge - Hello World"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;attribute&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="ApplicationNameAttribute"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="BuildKnowledge"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;attributes&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;references&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;include&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="System.EnterpriseServices.dll"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;references&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asminfo&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="compile"&lt;/span&gt; &lt;span class="attr"&gt;depends&lt;/span&gt;&lt;span class="kwrd"&gt;="init,asminfo"&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;="compiling
all the code in the src dir"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;csc&lt;/span&gt; &lt;span class="attr"&gt;output&lt;/span&gt;&lt;span class="kwrd"&gt;="${target.dir}\${project::get-name()}.exe"&lt;/span&gt; &lt;span class="attr"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;="exe"&lt;/span&gt; &lt;span class="attr"&gt;debug&lt;/span&gt;&lt;span class="kwrd"&gt;="${debug}"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sources&lt;/span&gt; &lt;span class="attr"&gt;basedir&lt;/span&gt;&lt;span class="kwrd"&gt;="src"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;include&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="**/*.cs"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;include&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="../build/AssemblyInfo.cs"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;exclude&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="**/AssemblyInfo.cs"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;sources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;csc&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="deploy.copy"&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;="copy
promotion of one build to the next enviroment"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;if&lt;/span&gt; &lt;span class="attr"&gt;test&lt;/span&gt;&lt;span class="kwrd"&gt;="${directory::exists(target.dir)
== false}"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;mkdir&lt;/span&gt; &lt;span class="attr"&gt;dir&lt;/span&gt;&lt;span class="kwrd"&gt;="${target.dir}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;if&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;copy&lt;/span&gt; &lt;span class="attr"&gt;todir&lt;/span&gt;&lt;span class="kwrd"&gt;="${target.dir}"&lt;/span&gt; &lt;span class="attr"&gt;overwrite&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;fileset&lt;/span&gt; &lt;span class="attr"&gt;basedir&lt;/span&gt;&lt;span class="kwrd"&gt;="${source.dir}"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;include&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="**/*"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;exclude&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="*.config"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;fileset&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;copy&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="load.settings"&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;="load
all the enviroment settings"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;if&lt;/span&gt; &lt;span class="attr"&gt;test&lt;/span&gt;&lt;span class="kwrd"&gt;="${file::exists('config\'
+ properties)}"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;echo&lt;/span&gt; &lt;span class="attr"&gt;message&lt;/span&gt;&lt;span class="kwrd"&gt;="Loading
${properties}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;include&lt;/span&gt; &lt;span class="attr"&gt;buildfile&lt;/span&gt;&lt;span class="kwrd"&gt;="config\${properties}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;if&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="expand.template.file"&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;="replace
the tokens in the template file"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;copy&lt;/span&gt; &lt;span class="attr"&gt;file&lt;/span&gt;&lt;span class="kwrd"&gt;="config\${target}.template"&lt;/span&gt; &lt;span class="attr"&gt;tofile&lt;/span&gt;&lt;span class="kwrd"&gt;="config\${target}"&lt;/span&gt; &lt;span class="attr"&gt;overwrite&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;filterchain&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;replacetokens&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;token&lt;/span&gt; &lt;span class="attr"&gt;key&lt;/span&gt;&lt;span class="kwrd"&gt;="AppConfig.EnviromentName"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="${AppConfig.EnviromentName}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;replacetokens&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;filterchain&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;copy&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="deploy.config"&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;="create
the config file and deploy it"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="target"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="app.config"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;call&lt;/span&gt; &lt;span class="attr"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;="expand.template.file"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;copy&lt;/span&gt; &lt;span class="attr"&gt;file&lt;/span&gt;&lt;span class="kwrd"&gt;="config\${target}"&lt;/span&gt; &lt;span class="attr"&gt;tofile&lt;/span&gt;&lt;span class="kwrd"&gt;="${AppConfig.Directory}\${project::get-name()}.exe.config"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;h4&gt;buildknowledge.enviroments.build
&lt;/h4&gt;
&lt;p&gt;
Here&amp;rsquo;s our enviroments, each one will used by CruiseControl.Net as a different
project. We have a file for each enviroment with all the settings we&amp;rsquo;ll be using.
This lets you quickly change the connectionstring but today all we&amp;rsquo;re using
it for is the the name of the Enviroment and its directory. 
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Current &amp;ndash; debug compile, generate config&lt;/li&gt;
&lt;li&gt;
Development &amp;ndash; release compile, generate config&lt;/li&gt;
&lt;li&gt;
Staging &amp;ndash; copy development, generate config&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-8"&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="BuildKnowledgeEnviroments"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="current"&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;="starting
Continous Integration build"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="properties"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="current.enviroment.xml"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;call&lt;/span&gt; &lt;span class="attr"&gt;target&lt;/span&gt; &lt;span class="kwrd"&gt;="load.settings"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="debug"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="target.dir"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="${AppConfig.Directory}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;call&lt;/span&gt; &lt;span class="attr"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;="compile"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;call&lt;/span&gt; &lt;span class="attr"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;="deploy.config"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="development"&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;="starting
Development build"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="properties"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="development.enviroment.xml"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;call&lt;/span&gt; &lt;span class="attr"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;="load.settings"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="debug"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="target.dir"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="${AppConfig.Directory}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;call&lt;/span&gt; &lt;span class="attr"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;="compile"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;call&lt;/span&gt; &lt;span class="attr"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;="deploy.config"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="staging"&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;="starting
Staging promotion"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="properties"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="development.enviroment.xml"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;call&lt;/span&gt; &lt;span class="attr"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;="load.settings"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="source.dir"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="${AppConfig.Directory}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="properties"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="staging.enviroment.xml"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;call&lt;/span&gt; &lt;span class="attr"&gt;target&lt;/span&gt; &lt;span class="kwrd"&gt;="load.settings"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="target.dir"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="${AppConfig.Directory}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;call&lt;/span&gt; &lt;span class="attr"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;="deploy.copy"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;call&lt;/span&gt; &lt;span class="attr"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;="deploy.config"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;h4&gt;app.config.template
&lt;/h4&gt;
&lt;p&gt;
This is where we&amp;rsquo;re generating out app.config from, the @AppConfig.EnviromentName@
is the token that we&amp;rsquo;re looking for in the expand.template.file task. 
&lt;p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;appSettings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;key&lt;/span&gt;&lt;span class="kwrd"&gt;="EnviromentName"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="@AppConfig.EnviromentName@"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;appSettings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;h4&gt;development.enviroment.xml
&lt;/h4&gt;
&lt;p&gt;
With the load.settings task we load in our enviroment settings files here&amp;rsquo;s
the one for the development enviroment. It gives us the properties ${AppConfig.EnviromentName}
and ${AppConfig.Directory} which you&amp;rsquo;ll see being used in the NAnt files.
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;properties&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="AppConfig.EnviromentName"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="Development"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="AppConfig.Directory"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="deploy\development"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;properties&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;h3&gt;CruiseControl.Net Configuration
&lt;/h3&gt;
&lt;p&gt;
The next step is in the ccnet.config we have a different project for each enviroment
and the things to notice here are
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Both Development and Staging are using the &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Remote+Project+Labeller"&gt;Remote
Project Labeller&lt;/a&gt; to take the version number from the previous build enviroment.
So Development uses Currents version number and Staging uses Developments version
number. We use some trickery here because actually its&amp;nbsp;still a local project
but its using the tcp connection to talk to itself.&lt;/li&gt;
&lt;li&gt;
Each project is using the same build file but its pointing at a different target from
our enviroments file.&lt;/li&gt;
&lt;/ol&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: Consolas, "Courier New", Courier, Monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}

.csharpcode pre { margin: 0em; }

.csharpcode .rem { color: #008000; }

.csharpcode .kwrd { color: #0000ff; }

.csharpcode .str { color: #006080; }

.csharpcode .op { color: #0000c0; }

.csharpcode .preproc { color: #cc6633; }

.csharpcode .asp { background-color: #ffff00; }

.csharpcode .html { color: #800000; }

.csharpcode .attr { color: #ff0000; }

.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}

.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;cruisecontrol&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="BuildKnowledge
Current"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tasks&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;nant&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;executable&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;C:\code\sleepoverrated\02_Build_Knowledge-Promoting_Builds\tools\nant\bin\NAnt.exe&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;executable&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;baseDirectory&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;C:\code\sleepoverrated\02_Build_Knowledge-Promoting_Builds&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;baseDirectory&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;nologo&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;false&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;nologo&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;buildFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;buildknowledge.build&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;buildFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;targetList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;current&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;targetList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;buildTimeoutSeconds&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1200&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;buildTimeoutSeconds&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;nant&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tasks&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;labeller&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="iterationlabeller"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;prefix&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1.0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;prefix&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;duration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;duration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;releaseStartDate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2007/11/24&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;releaseStartDate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;separator&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;.&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;separator&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;labeller&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="BuildKnowledge
Development"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tasks&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;nant&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;executable&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;C:\code\sleepoverrated\02_Build_Knowledge-Promoting_Builds\tools\nant\bin\NAnt.exe&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;executable&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;baseDirectory&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;C:\code\sleepoverrated\02_Build_Knowledge-Promoting_Builds&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;baseDirectory&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;nologo&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;false&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;nologo&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;buildFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;buildknowledge.build&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;buildFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;targetList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;development&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;targetList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;buildTimeoutSeconds&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1200&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;buildTimeoutSeconds&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;nant&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tasks&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;labeller&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="remoteProjectLabeller"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;BuildKnowledge
Current&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;serverUri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;tcp://localhost:21234/CruiseManager.rem&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;serverUri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;labeller&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="BuildKnowledge
Staging"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tasks&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;nant&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;executable&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;C:\code\sleepoverrated\02_Build_Knowledge-Promoting_Builds\tools\nant\bin\NAnt.exe&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;executable&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;baseDirectory&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;C:\code\sleepoverrated\02_Build_Knowledge-Promoting_Builds&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;baseDirectory&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;nologo&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;false&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;nologo&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;buildFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;buildknowledge.build&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;buildFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;targetList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;staging&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;target&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;targetList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;buildTimeoutSeconds&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1200&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;buildTimeoutSeconds&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;nant&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tasks&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;labeller&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="remoteProjectLabeller"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;BuildKnowledge
Development&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;serverUri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;tcp://localhost:21234/CruiseManager.rem&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;serverUri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;labeller&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;cruisecontrol&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;h3&gt;See it in action
&lt;/h3&gt;
&lt;p&gt;
Now lets see how well this works when we&amp;rsquo;re actually using it.
&lt;/p&gt;
&lt;h4&gt;Building Current
&lt;/h4&gt;
&lt;p&gt;
since we&amp;rsquo;re not using the sourcecontrol block in CruiseControl.Net we&amp;rsquo;ll
have to forcebuild the Current project but you should set it up to build everytime
you check something in. 
&lt;/p&gt;
&lt;p&gt;
So select Current and start a force build and the&amp;nbsp;version numbers start&amp;nbsp;to
increase just like last time. 
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="BK02CCTray02" src="http://www.sleepoverrated.com/files/BK02CCTray02.png" border="0" /&gt;
&lt;/p&gt;
&lt;p&gt;
Checking the directory deploy\current you can see the new files we just generated.
You&amp;rsquo;ll notice that here we have a pdb file because we compiled in debug.
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="BK02Files00" src="http://www.sleepoverrated.com/files/BK02Files00.png" border="0" /&gt;
&lt;/p&gt;
&lt;p&gt;
Now if we run this build we can see that its got the correct version number and its
using the correct configuration file that we generated. 
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="BK02Run01" src="http://www.sleepoverrated.com/files/BK02Run01.png" border="0" /&gt;
&lt;/p&gt;
&lt;h4&gt;Building Development
&lt;/h4&gt;
&lt;p&gt;
Now when we do a force build on Development we build a new release from code. If we
were under source control it would be the latest version so there is the possibility
of building while the code is being updated. If that happens you could always just
rebuild development again. You could use the &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Project+Configuration+Block"&gt;modificationDelaySeconds&lt;/a&gt; element
on the project block in ccnet.config to setup a delay on building.
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="BK02CCTray03" src="http://www.sleepoverrated.com/files/BK02CCTray03.png" border="0" /&gt;
&lt;/p&gt;
&lt;p&gt;
If we look in the deploy\development directory we can quickly see that we&amp;rsquo;ve
built in release mode because we&amp;rsquo;re missing the pdb.
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="BK02Files01" src="http://www.sleepoverrated.com/files/BK02Files01.png" border="0" /&gt;
&lt;/p&gt;
&lt;p&gt;
Running the app we can see that its using the right configuration file.
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="BK02Run02" src="http://www.sleepoverrated.com/files/BK02Run02.png" border="0" /&gt;
&lt;/p&gt;
&lt;h4&gt;Building Staging
&lt;/h4&gt;
&lt;p&gt;
Finally we do a force build on staging and that will copy over the last build of development
and generate the config file. There&amp;rsquo;s also been some builds on Current but that
won&amp;rsquo;t affect our promotion to staging. Another thing to notice is that you have
the Last Build Time to quickly check the last time you deployed to staging. If you
use the CruiseControl.Net web dashboard you can even see the log of all the promotions
you&amp;rsquo;ve done, that way you never need to wonder what versions where or if someone
did a promotion while you were off sick.
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="BK02CCTray04" src="http://www.sleepoverrated.com/files/BK02CCTray04.png" border="0" /&gt;
&lt;/p&gt;
&lt;p&gt;
Running the app we can see that its using the right configuration file.
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="BK02Run03" src="http://www.sleepoverrated.com/files/BK02Run03.png" border="0" /&gt;
&lt;/p&gt;
&lt;div&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://www.sleepoverrated.com/2007/12/05/BuildKnowledgePromotingYourBuild.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.sleepoverrated.com/2007/12/05/BuildKnowledgePromotingYourBuild.aspx" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.sleepoverrated.com/aggbug.ashx?id=f957f700-9e98-4c29-9fd6-198458a0ca17" /&gt;</content>
  </entry>
  <entry>
    <title>[DDD6] Testing Your Applications With MbUnit with Ben Hall</title>
    <link rel="alternate" type="text/html" href="http://www.sleepoverrated.com/2007/11/25/DDD6TestingYourApplicationsWithMbUnitWithBenHall.aspx" />
    <id>http://www.sleepoverrated.com/PermaLink,guid,e8adbb02-30dc-43d0-98c1-07e340fd0e73.aspx</id>
    <published>2007-11-24T21:28:06.520875-05:00</published>
    <updated>2007-11-24T21:28:06.520875-05:00</updated>
    <content type="html">&lt;p&gt;
&lt;a href="http://blog.benhall.me.uk/"&gt;Ben Hall&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Gallio Test Platform allows for multiple test frameworks to run thru the one platform&lt;br /&gt;
NUnit is a subset of MBUnit so you can just replace NUnit with MBUnit and not have
to change code&lt;br /&gt;
Indentity Increments happen even after rollbacks&lt;br /&gt;
DBCC CHECKIDENT (Orders,RESEED,0)&lt;br /&gt;
IOC thru a property and not just in the constructor&lt;br /&gt;
[ExpectedArgumentNullException] passes only if there was a NullException
&lt;/p&gt;
&lt;p&gt;
ForEachTest,DataFixture,ResourceXmlDataProvider&lt;br /&gt;
loads in a XML file with the test data&lt;br /&gt;
DataType = typeof(Data) in the foreach will give you intellisense (I blinked on the
first example and didn't see that it didn't have it in the first place)&lt;br /&gt;
CustomAssertions&lt;br /&gt;
Watin is just like NUnitASP is actually maintained&lt;br /&gt;
good examples of open source projects running MBUnit are subsonic,castle, dasblog
&lt;/p&gt;
&lt;p&gt;
Thanks for the TShirt Ben, I&amp;rsquo;m going to have to go thru your blog to find the
new features in v3, I know theres mutliple Assertion Failures at least.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.sleepoverrated.com/aggbug.ashx?id=e8adbb02-30dc-43d0-98c1-07e340fd0e73" /&gt;</content>
  </entry>
  <entry>
    <title>[DDD6] Dynamic Languages on .NET with Michael Foord</title>
    <link rel="alternate" type="text/html" href="http://www.sleepoverrated.com/2007/11/25/DDD6DynamicLanguagesOnNETWithMichaelFoord.aspx" />
    <id>http://www.sleepoverrated.com/PermaLink,guid,cd9b26cb-7f89-4a14-b3c3-458e0837494b.aspx</id>
    <published>2007-11-24T21:15:45.364-05:00</published>
    <updated>2007-11-24T21:17:36.739625-05:00</updated>
    <category term="DDD6" label="DDD6" scheme="http://www.sleepoverrated.com/CategoryView,category,DDD6.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.voidspace.org.uk/python/weblog/index.shtml">Michael Foord</a>
          <br />
Resolver a financial tool written in IronPython<br />
IronPython supports "from namespace import *" like java does<br />
Magic Methods are dynamically interpretted like __init<br />
dynamic typing and duck typing<br />
Easy to Test because of monkey patching,mocking, no compile 
<br />
late binding<br />
variables are just references to actual memory
</p>
        <p>
x = 1  so x = 1<br />
y = x  so x = 1, y = 1<br />
x = 2  so x = 2, y = 1<br /><br />
"import clr" brings in type methods<br />
python used in youtube, google<br />
stackless python for Eve online<br />
byte code compiled like c#<br />
_name means you shouldn't mess with it but its not protected<br />
self equivalent to this<br />
DLR Languages include VbX,Vista Smalltalk, managed JS, IronLUA, IronLisp,IronRuby,IronPython <br /><a href="http://silverlight.net/Samples/1.1/DLR-Console/python/index.htm">DLR Console
(uses silverlight 1.1 alpha)</a><br />
can use python code mixed with other DLR languages and have access to the same variables<br /><a href="http://www.voidspace.org.uk/ironpython/webide/webide.html">Web IDE</a><br />
Multiline strings are enclosed with triple quotes """<br />
*args, **keywargs  - dictionary??
</p>
        <hints id="hah_hints">
        </hints>
        <img width="0" height="0" src="http://www.sleepoverrated.com/aggbug.ashx?id=cd9b26cb-7f89-4a14-b3c3-458e0837494b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>[DDD6] Grok Talks</title>
    <link rel="alternate" type="text/html" href="http://www.sleepoverrated.com/2007/11/25/DDD6GrokTalks.aspx" />
    <id>http://www.sleepoverrated.com/PermaLink,guid,bcea5b76-0861-4e9d-83b9-c51f231430f9.aspx</id>
    <published>2007-11-24T20:58:09.94275-05:00</published>
    <updated>2007-11-24T20:58:09.94275-05:00</updated>
    <content type="html">&lt;h3&gt;&lt;a href="http://joanmiro.blogspot.com/"&gt;Gordon Mackie&lt;/a&gt; &amp;ndash; releasable Web
Controls
&lt;/h3&gt;
Make your properties appear cleanly in the Properties panel&lt;br /&gt;
Description Attribute on Properties&lt;br /&gt;
Use a Category Attribute or the Property will end up in the Misc Category&lt;br /&gt;
Browsable(false) Attribute keeps the Property from showing in the Property Panel&lt;br /&gt;
ToolboxBitmap Attribute lets you have an icon for your control&lt;br /&gt;
*add the bitmaps in a subfolder and set them to embedded resourse files&lt;br /&gt;
*add an empty code file to force compilation in visual studio&lt;br /&gt;
DefaultValue Attribute lets you use Reset in the context menu for the control in designer&lt;br /&gt;
Setup a method to reset to get around literal Default values&lt;br /&gt;
bool ShouldSerializeMyPropertyName //where MyPropertyName is your property&lt;br /&gt;
void ResetMyPropertyName&lt;br /&gt;
Default Event is the double click in designer&lt;br /&gt;
ToolboxItemFilter Attribute lets you show under contexts&lt;br /&gt;
Bindable Attribute avoid unneccissary binding, bind on change&lt;br /&gt;
Refresh Properties All - recalcalutes all dependant properties&lt;br /&gt;
generate documentation with sandcastle&lt;br /&gt;
SDK tools to register and install tools&lt;br /&gt;
TypeConverters,TypeEditors 
&lt;p&gt;
&lt;/p&gt;
&lt;h3&gt;Abid Quereshi - Story Based Estimating
&lt;/h3&gt;
Stacey Diagram showing predictability&lt;br /&gt;
velocities are good for hard to predict scenarios&lt;br /&gt;
must indicate Return on Investment per story&lt;br /&gt;
Each story has a Priority, Time Cost in Units, Client Value&lt;br /&gt;
Scooby Doo Respose to estimating "I don't know" 
&lt;p&gt;
&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.guysmithferrier.com/"&gt;Guy Smith Ferrier &lt;/a&gt;- Why Extension
Methods will rule the world
&lt;/h3&gt;
(this RegionInfo regioninfo)&lt;br /&gt;
Extension methods are public, static, have the Extension Attribute (or a this)&lt;br /&gt;
could inherit Extension in 2.0 but it won't compile in 2.0, but it will run if you
compile it on the 3.5 compiler targetted at the 2.0 runtime&lt;br /&gt;
web sites compile at runtime so you need 3.5 for extension methods&lt;br /&gt;
They get around sealed classes, the work of the devil&lt;br /&gt;
Great if you don't own all the source code your using. 
&lt;p&gt;
&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.devcafe.co.uk/"&gt;Alex Mackey&lt;/a&gt; - Development in Dubai
&lt;/h3&gt;
issues with unicode,date format, date display, db collation, text flow&lt;br /&gt;
Don't assume anything&lt;br /&gt;
Names are difficult to format there's more than just first and last names&lt;br /&gt;
working hours change during holy week and there's different holidays&lt;br /&gt;
icons and images mean different things&lt;br /&gt;
racial information won't be volunteered&lt;br /&gt;
photos don't help much when women were head coverring&lt;br /&gt;
server hosting is problematic due to climate&lt;br /&gt;
export restrictions&lt;br /&gt;
you can be barred from leaving Saudi Arabia if you have a local disagreement outstanding&lt;br /&gt;
health and safety issues in the workplace&lt;br /&gt;
equipment will always get delayed in customs&lt;br /&gt;
Dell in the UAE are slow&lt;br /&gt;
printers have different catridges there&lt;br /&gt;
fax is preferrable because the post is slow&lt;br /&gt;
staffing problems with people going native and getting frustrated with being away&lt;br /&gt;
skype.com is blocked but not the actual service 
&lt;p&gt;
&lt;/p&gt;
&lt;h3&gt;Ben - Powershell
&lt;/h3&gt;
lists are actually objects and are querible&lt;br /&gt;
you can pipe on top of pipes&lt;br /&gt;
export-csv,import-csv,format-table 
&lt;p&gt;
&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.ibbotson.co.uk/peteri/"&gt;Peter Ibbotson&lt;/a&gt; - Reflection
&lt;/h3&gt;
Store ProperyInfo and reference instead of looking it up each time&lt;br /&gt;
Setup a delegate of GetGetMethod() and reference that for a large speed up&lt;br /&gt;
if its a field you need to use dynamic methods&lt;img width="0" height="0" src="http://www.sleepoverrated.com/aggbug.ashx?id=bcea5b76-0861-4e9d-83b9-c51f231430f9" /&gt;</content>
  </entry>
  <entry>
    <title>[DDD6] Microsoft Codename "Astoria" with Guy Smith Ferrier</title>
    <link rel="alternate" type="text/html" href="http://www.sleepoverrated.com/2007/11/25/DDD6MicrosoftCodenameAstoriaWithGuySmithFerrier.aspx" />
    <id>http://www.sleepoverrated.com/PermaLink,guid,5fe4251c-f884-4411-8bbc-2ae3666a6a4d.aspx</id>
    <published>2007-11-24T20:21:22.974-05:00</published>
    <updated>2007-11-24T20:21:22.974-05:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.guysmithferrier.com/">Guy Smith Ferrier</a>
        </p>
        <p>
Astoria is a web service provider that lets you serialize your entities out to the
client as JSON or XML
</p>
        <p>
client side data<br /><a href="http://www.popfly.ms/">Popfly</a> is microsoft mash up engine<br />
his <a href="http://www.amazon.co.uk/NET-Internationalization-Developers-Guide-Building/dp/0321341384/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1195953358&amp;sr=8-1">.net
internationalization</a> book<br /><a href="http://astoria.mslivelabs.com/">astoria.mslivelabs.com</a><br />
astoria was the first RESTful web service<br />
May 2007 CTP, Dec 2007 CTP, Beta 1 Q108, RTM mid 2008<br />
doesn't work with the RTM... back to Beta 2<br />
there was a slide with the requirements for an install<br />
its a protocol and an extensible WCF service<br />
builds on top of HTTP for tunneling, URI Protocol<br />
security is coming in the future but theres no cross domain support right now and
you can use forms/windows authentication<br />
works well with the Entity Framework<br />
Northwind.svc/Customers!key<br />
has a query language in the url that supports where,order by, paged results<br />
Dec 2007 CTP will turn of security by default to prevent database dumps thru Astoria<br />
theres a WSDL like page on the root node using $sys_getedmdata in the Sept CTP and
$metadata in Dec CTP<br />
JSON supported on all versions (can eval easily in js)<br />
can use HTTP,Remoting,COM because its part of the WCF<br />
could use remoting in silverlight via partial trust in 3.5<br />
ADO.Net Entity Model is a .Net version of DDL<br />
supports accees to Stored Procedures<br />
"it" is equivalent to this in the Entity Framework<br />
can add custom methods to the URI<br />
can access astoria straight from a web request so that we can support mixed enviroments<br />
Astoria client library handles querying and mapping<br />
WebDataContext,WebDataQuery<br />
WebDataDen.exe will generate the proxy classes for us<br />
runs the IQueriable interface so it can deal with anything thru LINQ<br />
support for scalar returns and better concurrency coming in the future<br /><br />
Thanks Guy
</p>
        <img width="0" height="0" src="http://www.sleepoverrated.com/aggbug.ashx?id=5fe4251c-f884-4411-8bbc-2ae3666a6a4d" />
      </div>
    </content>
  </entry>
  <entry>
    <title>[DDD6] Introduction to Silverlight 1.1 with Chris Hay</title>
    <link rel="alternate" type="text/html" href="http://www.sleepoverrated.com/2007/11/25/DDD6IntroductionToSilverlight11WithChrisHay.aspx" />
    <id>http://www.sleepoverrated.com/PermaLink,guid,8c6de643-296b-48f2-a008-732a5e291eb3.aspx</id>
    <published>2007-11-24T19:58:49.520875-05:00</published>
    <updated>2007-11-24T19:58:49.520875-05:00</updated>
    <content type="html">&lt;p&gt;
&lt;a href="http://silverlightuk.blogspot.com/"&gt;Chris Hay&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Interactions (using c# behind XAML) are new to 1.1&lt;br /&gt;
windows mobile will be supported in the future (here's hoping android too)&lt;br /&gt;
Silverlight 1.1 will hopefully ship in summer 2008&lt;br /&gt;
1.1 doesn't work with Visual Studio 2008 RTM so use Beta2 until the upcoming Silverlight
1.1 CTP refresh&lt;br /&gt;
"Add Silverlight Link" on a web site doesn't copy silverlight.js into your project&lt;br /&gt;
you can't edit and continue with a silverlight project you have to recompile&lt;br /&gt;
There's no Global styling yet&lt;br /&gt;
lots of XAML demos&lt;br /&gt;
TransformGroup allows you to do multiple transforms&lt;br /&gt;
can't group shapes like WPF so you have to stick your shapes in a canvas instead&lt;br /&gt;
no content support like WPF yet&lt;br /&gt;
blend 1.0 is for WPF only so use the blend beta instead&lt;br /&gt;
&lt;a href="http://silverlight.net/samples/1.0/Silverlight-Pad/default.html"&gt;Silverlight
Pad&lt;/a&gt;
&lt;br /&gt;
there's no 3D acceleration with silverlight so you can work with multiple platforms
(why not use an OpenGL wrapper on *nix)&lt;br /&gt;
all 3D is run off CPU power&lt;br /&gt;
Demos sounds (I was just telling a friend how embedded midi was going to make a come
back)
&lt;/p&gt;
&lt;p&gt;
Thanks Chris I didn&amp;rsquo;t have many notes on this one since there were a lot of
XAML demos, too bad I missed the second session.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.sleepoverrated.com/aggbug.ashx?id=8c6de643-296b-48f2-a008-732a5e291eb3" /&gt;</content>
  </entry>
  <entry>
    <title>[DDD6] Why IronRuby? with Dave Verwer</title>
    <link rel="alternate" type="text/html" href="http://www.sleepoverrated.com/2007/11/25/DDD6WhyIronRubyWithDaveVerwer.aspx" />
    <id>http://www.sleepoverrated.com/PermaLink,guid,63eb711c-8f62-4738-9d84-e74541fa7186.aspx</id>
    <published>2007-11-24T19:39:59.364625-05:00</published>
    <updated>2007-11-24T19:39:59.364625-05:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://daveverwer.com/">Dave Verwer</a>
        </p>
        <p>
Ruby had the first beta in 1995
</p>
        <p>
Iron Ruby is branched from 1.8.x branch of ruby modulo<br />
DLR is just a layer on top of the CLR, still compules to IL<br />
IronRuby is a blind implementation for clean IP<br />
ruby bridge by john lam was an early use of the CLR in Ruby<br />
the DLR came out of IronPython work<br />
IronRuby has two developers working on it at microsoft<br /><a href="http://rubyforge.org/projects/ironruby">rubyforge subversion repository</a> is
a mirror of  the internal microsoft codebase<br />
you can run regular ruby code in IronRuby
</p>
        <p>
          <strong>Optional Punctuation<br /></strong>semi colons, returns, braces, etc.<br />
you can determine which puntuation you need to make your code readable<br />
immutable string declarations are done like :init which is the string "init"<br />
immutable strings are never disposed
</p>
        <p>
          <strong>Syntactic sugar</strong>
          <br />
Optional Punctuation makes Domain Specific Languages more forgiving for syntax
and easier to write<br />
Sigils prefixing variable names to add description<br />
Sigils include local, $global, @instance, @@class, Constant<br />
sigils determine scope and are optional<br />
ruby strongly typed but can redeclare vars<br />
shorthand Range.new(1,100) 0..100<br />
%w(words in an array) will create an array that is seperated by spaces<br />
using an immutable string as a hashtable key can cause collisions<br />
puts var unless x.nil?  this will handle null cases<br />
strings can be single or double quotes and nest the other type without using escape
characters (when its mixed you need them though)<br />
theres no character type natively but you can use the .Net Char type<br />
big numbers can be assigned dynamically you don't need to worry about exceeding the
maximum value<br />
no native decimal type support but you can use the .net decimal type<br />
can alias methods on a class level so you don't have to program in american<br />
blocks in ruby are lambda methods,anonymous delegates in c# and closures in js<br />
core language contruct - heavy use of delegates<br />
there are no for loops you just use the times block
</p>
        <p>
          <strong>a for loop<br /></strong>10.times do {print "Hello"}   this print Hello 10 times
</p>
        <p>
          <strong>a foreach loop<br /></strong>["a","b"].each do |letter|<br />
  puts letter<br />
end<br /><br />
file.each_line do |line|<br />
  line =~ /regex/<br />
end
</p>
        <p>
          <strong>a try catch</strong>
          <br />
begin<br />
  ...<br />
ensure<br />
  ...<br />
end
</p>
        <p>
yield keyword exists like c#<br />
=== is the match operator and compares as well as it can
</p>
        <p>
mixed matching in case statements<br />
case i<br />
  when MyClass<br />
    ...<br />
  when 1..100<br />
    ...<br />
  when /^[a-z]*$/<br />
    ...<br />
end
</p>
        <p>
          <strong>Mixins</strong>
          <br />
like c# extension methods<br />
String.module_eval do
</p>
        <p>
you can redefine a class to override or add a mixin
</p>
        <p>
  class String<br />
    def capitalize_all<br />
   ...<br />
 end<br />
  end<br />
  
<br />
  class String<br />
    undef length<br />
  end<br />
  <br /><a href="http://www.rubyinside.com/ruby-linguistics-a-framework-for-playing-with-english-in-ruby-135.html">Linguistics
library</a> in ruby (blew my mind, not hard to do just nice to have done for you already)<br />
  
<br />
individually extend instances of objects<br /><br />
in.extend(JPEGMethods)  
</p>
        <p>
class ReverseString<br />
  def method_missing(method_name)<br />
    ...<br />
  end<br />
end
</p>
        <p>
method_missing is used to do dynamic querying of database based on what the current
class is and that its trying to do a find<br />
  
<br />
customer.find_by_email_or_name
</p>
        <p>
this makes intellisense a hard problem<br />
naming is underscore seperated and lowercase<br />
name mangling allows the CLR namespaces to be available with Ruby naming conventions
</p>
        <p>
Thanks Dave
</p>
        <img width="0" height="0" src="http://www.sleepoverrated.com/aggbug.ashx?id=63eb711c-8f62-4738-9d84-e74541fa7186" />
      </div>
    </content>
  </entry>
  <entry>
    <title>[Build Knowledge] Versioning </title>
    <link rel="alternate" type="text/html" href="http://www.sleepoverrated.com/2007/11/17/BuildKnowledgeVersioning.aspx" />
    <id>http://www.sleepoverrated.com/PermaLink,guid,4d17d79e-58f2-40d5-bf15-37292ef44c15.aspx</id>
    <published>2007-11-17T14:13:28.684625-05:00</published>
    <updated>2007-11-17T14:13:28.684625-05:00</updated>
    <content type="html">&lt;p&gt;
Today I&amp;rsquo;ll show you how to use NAnt and Cruise Control.Net to Version your application.
&lt;/p&gt;
&lt;p&gt;
What you&amp;rsquo;ll need
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;a href="http://prdownloads.sourceforge.net/nant/nant-0.85-bin.zip?download"&gt;NAnt&lt;/a&gt;&amp;nbsp;A
.Net Build tool. We&amp;rsquo;re going to use this to compile our Hello World Application
and set the version number.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://sourceforge.net/project/showfiles.php?group_id=71179&amp;amp;package_id=83198"&gt;Cruise
Control.Net&lt;/a&gt;&amp;nbsp;A Continious Integration Server that lets us start NAnt and makes
our version number. 
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Our Application
&lt;/h3&gt;
&lt;p&gt;
Theres nothing much to our application it just shows the Assembly Version at command
line.
&lt;/p&gt;
&lt;font size="1"&gt; &lt;blockquote&gt; 
&lt;p&gt;
&lt;font color="#0000ff"&gt;using&lt;/font&gt;
&lt;/font&gt;&lt;font size="1"&gt; System;&lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;using&lt;/font&gt;&lt;font size="1"&gt; System.Reflection;&gt;
&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt; 
&lt;p&gt;
namespace
&lt;/font&gt;&lt;font size="1"&gt; BuildKnowledge.CmdLine&lt;br /&gt;
{&lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;nbsp; class&lt;/font&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;Program&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp; {&lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static&lt;/font&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;void&lt;/font&gt;&lt;font size="1"&gt; Main(&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;string&lt;/font&gt;&lt;font size="1"&gt;[]
args)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; Console&lt;/font&gt;&lt;font size="1"&gt;.Out.WriteLine(&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;"Hello
World v"&lt;/font&gt;&lt;font size="1"&gt; + &lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;Assembly&lt;/font&gt;&lt;font size="1"&gt;.GetExecutingAssembly().GetName(&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;false&lt;/font&gt;&lt;font size="1"&gt;).Version);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
}&gt;
&gt;&lt;/font&gt; 
&lt;h3&gt;NAnt Build file
&lt;/h3&gt;
&lt;p&gt;
Lets look at the build file
&lt;/p&gt;
&lt;font color="#0000ff" size="1"&gt; &lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;?
&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;xml&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;version&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;=&lt;/font&gt;&lt;font size="1"&gt;"&lt;/font&gt;&lt;font color=#0000ff size=1&gt;1.0&lt;/font&gt;&lt;font size=1&gt;"&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;encoding&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;=&lt;/font&gt;&lt;font size="1"&gt;"&lt;/font&gt;&lt;font color=#0000ff size=1&gt;utf-8&lt;/font&gt;&lt;font size=1&gt;"&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;?&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;project&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;name&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;=&lt;/font&gt;&lt;font size="1"&gt;"&lt;/font&gt;&lt;font color=#0000ff size=1&gt;BuildKnowledge&lt;/font&gt;&lt;font size=1&gt;"&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;default&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;=&lt;/font&gt;&lt;font size="1"&gt;"&lt;/font&gt;&lt;font color=#0000ff size=1&gt;compile&lt;/font&gt;&lt;font size=1&gt;"&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&amp;nbsp;&lt;/font&gt;&gt;
&lt;p&gt;
&lt;font size="1"&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;target&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;init&lt;/font&gt;"&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;delete&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;dir&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;build&lt;/font&gt;"&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#0000ff"&gt; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;mkdir&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;dir&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;build&lt;/font&gt;"&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#0000ff"&gt; /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;font color="#a31515"&gt;target&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="1"&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p align="left"&gt;
&lt;font size="1"&gt;&amp;nbsp; &amp;lt;&lt;/font&gt;&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;target&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;asminfo&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;if&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;test&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;${property::exists('CCNetLabel')
== false}&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font size="1"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;property&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;CCNetLabel&lt;/font&gt;"&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;value&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;1.0.0.1&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font size="1"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;if&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font size="1"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;asminfo&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;output&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;build\AssemblyInfo.cs&lt;/font&gt;"&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;language&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;CSharp&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font size="1"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;imports&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font size="1"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;import&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;namespace&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;System&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt; /&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;import&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;namespace&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;System.Reflection&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt; /&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;import&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;namespace&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;System.EnterpriseServices&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt; /&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;import&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;namespace&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;System.Runtime.InteropServices&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt; /&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;imports&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;attributes&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;attribute&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;AssemblyVersionAttribute&lt;/font&gt;"&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;value&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;${CCNetLabel}&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt; /&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;attribute&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;AssemblyTitleAttribute&lt;/font&gt;"&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;value&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;Build
knowledge - Hello World&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt; /&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;attribute&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;ApplicationNameAttribute&lt;/font&gt;"&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;value&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;BuildKnowledge&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt; /&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;attributes&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;references&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;include&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;System.EnterpriseServices.dll&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt; /&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;references&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt; 
&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;asminfo&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;target&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="1"&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="1"&gt;&amp;nbsp; &amp;lt;&lt;/font&gt;&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;target&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;compile&lt;/font&gt;"&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;depends&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;init,asminfo&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;csc&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;output&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;build\${project::get-name()}.exe&lt;/font&gt;"&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;target&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;exe&lt;/font&gt;"&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;debug&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;false&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;sources&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;basedir&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;src&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;include&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;**/*.cs&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt; /&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;include&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;../build/AssemblyInfo.cs&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt; /&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;exclude&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color=#0000ff&gt;**/AssemblyInfo.cs&lt;/font&gt;"&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt; /&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;sources&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;csc&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt; 
&lt;br /&gt;
&lt;/font&gt;&lt;font size="1"&gt;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;target&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="1"&gt;&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="1"&gt;&amp;lt;/&lt;/font&gt;&gt;&lt;font size="1"&gt;&lt;font color="#a31515"&gt;project&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;
&lt;/p&gt;
&gt;&gt;&gt; 
&lt;p&gt;
This is the BuildKnowledge.build file that will run our build. Here&amp;rsquo;s the steps
we&amp;rsquo;re taking 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
[init] Create a directory called build&lt;/li&gt;
&lt;li&gt;
[asminfo] Generate the AssemblyInfo.cs&lt;/li&gt;
&lt;li&gt;
[compile] Compile BuildKnowledge.exe&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The important thing to see is CCNetLabel which is a property that CCNet is going to
send down to the NAnt task. This is called an Integration Property and there are additional
properties for things like the build time just &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/NAnt+Task#NAntTask-IntegrationProperties"&gt;check
the list&lt;/a&gt;.
&lt;/p&gt;
&lt;h3&gt;Cruise Control .Net Configuration
&lt;/h3&gt;
&lt;p&gt;
Once you&amp;rsquo;ve installed cruise control you&amp;rsquo;ll want to update ccnet.config
to add this project. You&amp;rsquo;ll need to update the nant task with the correct paths
to where your files are located. In an actual setting we&amp;rsquo;d actually have a &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Source+Control+Blocks"&gt;sourcecontrol
block&lt;/a&gt; that automatically triggers the build and updates the working copy on the
build&amp;nbsp;server.&amp;nbsp;For now we&amp;rsquo;ll just trigger the build manually which
isn&amp;rsquo;t truely Continious Integration but it&amp;rsquo;ll work for this example. The &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Labeller+Blocks"&gt;Labeller
Block&lt;/a&gt; is where we come up with the version number for the assembly and it will
show up on Cruise Control.Net and it will be sent down to NAnt.
&lt;/p&gt;
&lt;font color="#0000ff" size="1"&gt; &lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;
&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;cruisecontrol&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;project&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;name&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;=&lt;/font&gt;&lt;font size="1"&gt;"&lt;/font&gt;&lt;font color=#0000ff size=1&gt;BuildKnowledge
Current&lt;/font&gt;&lt;font size=1&gt;"&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;tasks&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;nant&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;executable&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;/font&gt;&lt;font size="1"&gt;C:\nant\bin\NAnt.exe&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;executable&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;baseDirectory&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;/font&gt;&lt;font size="1"&gt;C:\code\BuildKnowledge&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;baseDirectory&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;nologo&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;/font&gt;&lt;font size="1"&gt;false&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;nologo&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;buildFile&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;/font&gt;&lt;font size="1"&gt;buildknowledge.build&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;buildFile&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;targetList&lt;/font&gt;&lt;font color="#0000ff" size="1"&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;lt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;target&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;/font&gt;&lt;font size="1"&gt;compile&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;target&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;targetList&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;buildTimeoutSeconds&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;/font&gt;&lt;font size="1"&gt;1200&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;buildTimeoutSeconds&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;nant&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;tasks&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;labeller&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;type&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;=&lt;/font&gt;&lt;font size="1"&gt;"&lt;/font&gt;&lt;font color=#0000ff size=1&gt;iterationlabeller&lt;/font&gt;&lt;font size=1&gt;"&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;prefix&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;/font&gt;&lt;font size="1"&gt;1.0&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;prefix&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;duration&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;/font&gt;&lt;font size="1"&gt;2&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;duration&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;releaseStartDate&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;/font&gt;&lt;font size="1"&gt;2007/11/24&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;releaseStartDate&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;separator&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;/font&gt;&lt;font size="1"&gt;.&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;separator&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;labeller&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt; 
&lt;br /&gt;
&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;project&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;
&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;cruisecontrol&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&gt;
&gt;&lt;/font&gt; 
&lt;h3&gt;The End Result
&lt;/h3&gt;
&lt;p&gt;
Once you have everything setup you&amp;rsquo;ll need to
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Start up server\ccnet.exe to start&amp;nbsp;CCNet in&amp;nbsp;where you installed CCNet&amp;nbsp;(or
you can start the service). 
&lt;/li&gt;
&lt;li&gt;
Install cctray\cctray.exe and add the BuildKnowledge Current project from your localhost.&lt;/li&gt;
&lt;li&gt;
Force Build the project&lt;/li&gt;
&lt;li&gt;
Run our BuildKnowledge.exe in the build folder&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;img alt="Build version" src="http://www.sleepoverrated.com/files/build_20version_small.jpg" border="0" /&gt;
&lt;/p&gt;
&lt;p&gt;
Thats all you have to do to add version numbers I hope you&amp;rsquo;ve gotten something
out of this, we&amp;rsquo;ll be coverring more advanced topics next time.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.sleepoverrated.com/files/BuildKnowledge01.zip"&gt;Download the code:
BuildKnowledge01.zip (4 KB)&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.sleepoverrated.com/aggbug.ashx?id=4d17d79e-58f2-40d5-bf15-37292ef44c15" /&gt;</content>
  </entry>
  <entry>
    <title>Where's all the posts?</title>
    <link rel="alternate" type="text/html" href="http://www.sleepoverrated.com/2007/11/14/WheresAllThePosts.aspx" />
    <id>http://www.sleepoverrated.com/PermaLink,guid,4018e53e-3190-4a22-83b0-24dbe8f9b89c.aspx</id>
    <published>2007-11-14T12:00:18.25-05:00</published>
    <updated>2007-11-14T12:00:18.25-05:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">So I finally moved over to actually blogging
software but you might be wonderring where all the posts went to. Don't worry they're
still around and I'm still posting in there. 
<br /><br />
Go checkout <a href="http://stream.sleepoverrated.com">Sleepoverrated Stream</a> via
[<a href="http://www.tumblr.com">Tumblr</a>]<br /><br />
You can currently see it in the right hand nav but its not that obvious so I'll fix
that in the upcoming site design.<br /><p></p><hints id="hah_hints"></hints><img width="0" height="0" src="http://www.sleepoverrated.com/aggbug.ashx?id=4018e53e-3190-4a22-83b0-24dbe8f9b89c" /></div>
    </content>
  </entry>
  <entry>
    <title>Google Reader Minimalistic</title>
    <link rel="alternate" type="text/html" href="http://www.sleepoverrated.com/2007/11/13/GoogleReaderMinimalistic.aspx" />
    <id>http://www.sleepoverrated.com/PermaLink,guid,218793ff-fd06-4b7c-b7c1-2b10b5cab444.aspx</id>
    <published>2007-11-13T16:56:27.609375-05:00</published>
    <updated>2007-11-13T16:56:27.609375-05:00</updated>
    <content type="html">&lt;p&gt;
Here&amp;rsquo;s a greasmonkey script I created to let you use google reader in full screen
that has since been &lt;a href="http://lifehacker.com/software/featured-greasemonkey-user-script/collapse-the-reader-sidebar-with-google-reader-minimalistic-299393.php"&gt;featured
Greasemonkey script at LifeHacker&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
In order to get access to the settings and search you can toggle back to the normal
layout by pressing W.
&lt;/p&gt;
&lt;p&gt;
If you have anything you&amp;rsquo;d like added please add a comment, I&amp;rsquo;ve heard
it works well with &lt;a href="http://lifehacker.com/software/gmail/lifehacker-code-better-gmail-firefox-extension-251923.php"&gt;Better
GMail&lt;/a&gt; when displaying Google Reader on the same page.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://userscripts.org/scripts/show/12197"&gt;Download at User Scripts&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/748"&gt;Install Greasemonkey&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;embed src="http://www.youtube.com/v/AtcCK-tme-4" width="425" height="350" type="application/x-shockwave-flash"&gt;
&lt;/p&gt;
&lt;p&gt;
Keyboard shortcuts that come in handy are
&lt;/p&gt;
&lt;p&gt;
w - toggle fullscreen (shows search bar again)
&lt;/p&gt;
&lt;p&gt;
g t - go to tag 
&lt;br /&gt;
g u - go to subscription 
&lt;br /&gt;
g s - go to starred items
&lt;/p&gt;
&lt;p&gt;
j - next item 
&lt;br /&gt;
k - prev item 
&lt;br /&gt;
s - star item
&lt;/p&gt;
&lt;p&gt;
u - toggle left sidebar
&lt;/p&gt;
&gt;&lt;img width="0" height="0" src="http://www.sleepoverrated.com/aggbug.ashx?id=218793ff-fd06-4b7c-b7c1-2b10b5cab444" /&gt;</content>
  </entry>
</feed>