« Developing 'Movable Type' Plug-ins | Main | Weblog Publication via SOAP »

December 24, 2003

NAnt, Why?

After using NAnt for sometime, it fairly well designed build tool, especially since it's inspiration came from Ant.

I have used Apache Ant extensively and cannot think a better build tool for build/develop of Java projects. So when I saw NAnt, I thought that this should be a great tool for building .NET projects. And it is, but my problem is that since most .NET developement is IDE based (please correct me if I am wrong, especially using VS.NET, see NOTE), you already are provided with a 'build' file of sorts as the csproj, etc. NAnt does come with SLiNgshoT.exe, a tool that converts solution files to NAnt build files and/or NMake files. I truly believe that NAnt's real value comes being able to exceute the associated unit tests with a build and build related documentation. Now Nant is good up until the point that you are using VS solution files. Essentially my build script consists of 60+ solution files. It looks like this:


<target name="build" description="compiles the source code"<
<echo message="Base Build Directory = ${nant.project.basedir}"/>
<echo message="Logging Directory = ${log.dir}"/>
<tstamp property="build.date" pattern="yyyyMMdd" verbose="true"/>
<!--
Full Ordered Build, Take From Build Log.
This Should Be Built Dynamically.
-->
<solution configuration="${build.type}" solutionfile="${src.dir}\Flood\NET.Flood.FloodLib\NET.Flood.FloodLib.sln"/>
<solution configuration="${build.type}" solutionfile="${src.dir}\3rdParty\log4net\src\log4net.sln"/>
<solution configuration="${build.type}" solutionfile="${src.dir}\NET.Data\NET.Data.sln"/>
<solution configuration="${build.type}" solutionfile="${src.dir}\NET.Inquiry\NET.Inquiry.sln"/>
<!-- 70 more solution file entries down here... -->
</target>

As you see above, my NAnt build file is extremely straightforward. I have accomplished the same running a batch script that executes devenv.exe with the appropriate solution file. Also notice that I have orded the solution files in order of dependency.

What I need here is a tool to recursively search my project main source tree, scan all solution files and based on dependency create the FULL build script.

Build Tool Requirements:

  • List Builder. Recursive directory search for *.csproj or *.sln files to create the List OR pass the List of files to build.
  • Derive the Master Build List (MBL). Basically take a List of projects to be built and create the Master Build List based solely on non-System dependencies.
  • Build from the Master Build List. Emit all the binaries from the MBL using Override options.
  • Overridable Options. Allow the user to Override Project Output Directory, Override Debug Settings.
  • Log Output. Log all build output consistently using logging framework.
  • Optional: Multi-Threaded compilation. Compile projects without dependencies upon each other inside their own Thread.

    Note About IDEs: For any of my shared open source projects I have been using the Sharpdevelop IDE. Prevoius incantations have been shaky and a little slow, but the latest version runs very well and is much faster (and it's free).

    To Be Continued.

  • Posted by 0xFF3300 at December 24, 2003 09:11 AM

    Comments

    tramadol for pain relief It is not doing the thing we like to do, but liking the thing we have to do,
    that makes life blessed.
    -- Goethe
    tramadol

    Posted by: tramadol at August 27, 2004 11:12 PM

    I suppose some of the variation between Boston drivers and the rest of the
    country is due to the progressive Massachusetts Driver Education Manual which
    I happen to have in my top desk drawer. Some of the Tips for Better Driving
    are worth considering, to wit:

    [131.16d]:
    "Directional signals are generally not used except during vehicle
    inspection; however, a left-turn signal is appropriate when making
    a U-turn on a divided highway."

    [96.7b]:
    "When paying tolls, remember that it is necessary to release the
    quarter a full 3 seconds before passing the basket if you are
    traveling more than 60 MPH."

    [110.13]:
    "When traveling on a one-way street, stay to the right, so as not
    to interfere with oncoming traffic."
    prozac online Darth Vader:
    Don't be too proud of this technological
    terror you've constructed. The ability to destroy
    a planet is insignificant next to the power of the
    Force.
    prozac

    Posted by: Bobby Meyers at September 5, 2004 03:40 PM

    The FIELD GUIDE to NORTH AMERICAN MALES

    SPECIES: Cranial Males
    SUBSPECIES: The Hacker (homo computatis)
    Description:
    Gangly and frail, the hacker has a high forehead and thinning hair.
    Head disproportionately large and crooked forward, complexion wan and
    sightly gray from CRT illumination. He has heavy black-rimmed glasses
    and a look of intense concentration, which may be due to a software
    problem or to a pork-and-bean breakfast.
    Feathering:
    HOMO COMPUTATIS saw a Brylcreem ad fifteen years ago and believed it.
    Consequently, crest is greased down, except for the cowlick.
    Song:
    A rather plaintive "Is it up?"
    prozac online Real programs don't eat cache.
    prozac

    Posted by: Meg Potter at September 5, 2004 03:51 PM

    I think... I think it's in my basement... Let me go upstairs and check.
    -- Escher
    fioricet for headache Pyros of the world... IGNITE !!!
    fioricet

    Posted by: James Ruby at September 7, 2004 03:33 AM

    Post a comment

    Thanks for signing in, . Now you can comment. (sign out)

    (If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)


    Remember me?