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
