ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Steve Loughran" <stev...@iseran.com>
Subject pointer to xbuild -ant variant for .net
Date Mon, 23 Apr 2001 18:03:34 GMT
I just thought I'd forward on an announcement (on the develop .net mail
list) about the first public release of an ant-like build tool for .net.

"The first public version of XBuild has been released and is available at
http://www.hazware.com/.

XBuild is an XML based build tool inspired by ANT (see
http://jakarta.apache.org/ant/index.html for more information). I
started with the ANT design and made some changes so as to leverage some
.NET functionality and wrote it in C#. This was done as an experiment to
learn .NET and C#, and to sort of kick the tires on the .NET framework.

So I am now releasing the source code for anyone else to use and learn
from. Hopefully some brave souls will add more tasks (see ANT or XBuild
for info on what I mean by task) and this can get some momentum behind
it.

This is version 1.0.1.3.

Have fun.
David Buksbaum"


The xml file is very similar , a sample task could just as easily be handled
by ant as xbuild, which is kind of slick:-

  <target name="core">
    <echo message="Building Core." />

    <csc targettype="library" outfile="xbcoreA.dll">
      <references>
        ${standard.references}
        ${nunit.bin}\NUnitCore.dll
      </references>

      <source>
        <includes files="*.cs" />
        <excludes files="XBuildLauncher.cs" />
      </source>

      <source>
        <includes files="common/*.cs" />
        <includes files="nunit/*.cs" />
        <includes files="tasks/*.cs" />
      </source>
    </csc>
  </target>

What is interesting is that the implementation used the .net metadata stuff
as means of describing all exported methods. Instead of setValue() methods,
you just mark up a variable and *somehow* the system uses that to build the
TOM/parse the build file.

    [TaskAttributeAttribute("warnaserror", ExpandText=false, Default=false)]
    bool    m_bWarnAsError;

    [TaskAttributeAttribute("warnlevel", ExpandText=false, Default=3)]
    int     m_nWarningLevel;
    [TaskAttributeAttribute("baseaddress", ExpandText=false,
Default=0x10000000)]
    long    m_nBaseAddress;

That isnt necessarily any simpler, but it may simplify other things (dynamic
doc generation, UI tools (which can see what the default value should be),
and the like.

It's still a skinny first pass beta test; all the tasks are fairly
foundation (file movement, deletion, copy; echo ; csc), but it shows promise
as a way of getting .net development decoupled from VS.net without having to
resort to makefiles. It doesnt address deployment yet, except through
'copy', but if it does get used in .net land, then maybe more deployment
tasks will be added. Too bad there's no built in support for zip in .net
though.

-Steve


Mime
View raw message