Leo writes about the different projects that try to build upon Ant and in particular on top of Ant's import task.
In a parentheses he suggests that there was a flamefest going on between Ant and MSBuild and points to my blog. I've already commented in his blog, but since people follow his link looking for some action, I must disappoint you, there is no flaming.
In internet time, MSBuild is old news. There has been quite a lot of bad blood on some of the very first published statements by Microsoft that compared MSBuild to (N)Ant, in particular the initial revision of Brent Rector's "Introducing Longhorn for Developers", but this has been rectified later by the people responsible for MSBuild.
I for one am very interested in MSBuild since it takes a few different angles to building stuff than Ant. While being rather similar at the surface, there are some philosophical differences between the two (three, we shouldn't forget NAnt here).
The items in MSBuild still interest me a lot and I've not given up the idea to get something similar along with pipes into Ant (1.7/8/9, who knows). Of course, I still believe that Ant's approach to dependencies is superior to MSBuild's file timestamp based mechanism.
path: /en/dotNet/msbuild | #
It seems that Alex Kipman, the MSBuild Program Manager, will start a blog.
Just trying to help John to increase the "peer pressure". ;-)
Alex subscribed to the developer lists for both Ant and NAnt when Microsoft announced MSBuild last year. He's done a lot to calm the situation by answering questions as well as correcting some statements made about Ant and NAnt by Microsoft Press.
I'm looking forward to read more from him.
path: /en/dotNet/msbuild | #
Conor continues his series of Ant tutorials, talking about Ant's IO System this time.
If you ever wondered, why Ant didn't properly capture output that is generated by a thread you spawn during your non-forked unit tests (because it didn't know which task the thread was associated to) and why it works since Ant 1.6 (because Ant uses a ThreadGroup per task), you'll find the answer there.
If you are into this kind of Ant internals, Conor's tutorial about the way Ant creates a task instance from the build file is a must read.
path: /en/Apache/Ant | #
I've been with a customer for the past two days and am now trying to catch up with my email in the four or five hours before my family and I leave for one of our favorite places until Sunday night. With some new virus slipping through my procmail filter, this is even less fun than expected. I really need this short vacation.
path: /en/personal/traveling | #
I've talked about that little pet library of mine every now and then, and think it is time to give others a chance to look at it.
The thing I'm talking about is a small Ant task library that should work with Ant 1.6.x and provides three tasks:
- <dotnetexec> - a cousin of <exec> and in fact it will do the same as <exec> when you use Microsoft's CLR. On Linux though, it will default to use Mono and you don't have to say so explicitly, just specify the assembly as executable. There also is an attribute to give you more control in case you want to run Rotor or Mono on Windows for example.
- <nant> - run NAnt from within Ant. Usage ranges from running an existing build file to specifying the NAnt build file in-line.
<nant> <build> <nunit2> <formatter type="Plain"/> <test assemblyname="MyProject.Tests.dll" appconfig="MyProject.Tests.dll.config"/> </nunit2> </build> </nant>
runs NAnt's NUnit task from within Ant. This is supposed to work transparently using Mono or Microsoft's CLR. - <msbuild> - similar to <nant> but for MSBuild. This is probably not going to work at all, but I wanted to include it anyway. In particular nested build files won't work since Ant insists on lower-casing everything before it passes it to the task.
All of these tasks have only been tested using Mono on Linux and MacOS X so far. The docs are online - also as an archive. An Ant 1.6.x compatible antlib is here..
The CVS HEAD version contains a WiX task as well, but I'm not sure about its current shape, so I've left it out for now.
Any feedback is appreciated.
path: /en/Apache/Ant/dotnet | #
Jeff Callahan, a tester in Microsoft's MSBuild team, has started a blog. Welcome Jeff.
path: /en/dotNet/msbuild | #
I'm quite busy at work ATM but still managed to give the latest Mono release a try on both Linux and MacOS.
As usual things worked absolutely fine on Linux but I had some build problems on my iBook. make install
fails with
Unhandled Exception: System.ExecutionEngineException: SIGILL in (unmanaged) (wrapper managed-to-native) Mono.Tools.Driver:symlink (string,string) in <0x00088> (wrapper managed-to-native) Mono.Tools.Driver:symlink (string,string) in <0x00b04> Mono.Tools.Driver:InstallAssembly (string[]) in <0x007f4> Mono.Tools.Driver:Run (string[]) in <0x0005c> Mono.Tools.Driver:Main (string[])
The resulting partial installation is usable enough for my little Ant tasklib and for the first time ever I successfully ran NAnt's <echo> task on a Mac. Time to give something serious a try, when I find time.
I'm really impressed how far Mono for PPC and in particular for OS X has come since I first tried it (0.28, about seven months ago).
path: /en/dotNet/mono | #