Make has always been used in conjunction with shell scripts and other tools; it functions largely as dependency-sensitive glue binding together all of the commands to build and link C programs.  So, if pressed, one could probably write all of the things you mention using Make.  The point of Ant and NAnt is that they dramatically simplify the everyday tasks and make it far easier to detect and fix mistakes in the script.
 

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]On Behalf Of Martin Gainty
Sent: Thursday, September 22, 2005 3:06 PM
To: Thibaut Barrère; Gary Feldman
Cc: nant-users@lists.sourceforge.net
Subject: Re: [Nant-users] Build target from command line without dependencies

Good Morning/Bonjour
 
I would like to ask Gary if there any version of make has capability to handle building a solution such as the Nant Task solution
keeping in mind that the solution task handles all permutations of environment development, uat, qa, release as well as
the ability for solution task to include n number of csproj/vbproj projects
as well as the ability for the solution task to exclude n csproj/vbproj projects

Merci/Thanks,
Etats Unis/US
Martin-
----- Original Message -----
Sent: Thursday, September 22, 2005 8:57 AM
Subject: Re: [Nant-users] Build target from command line without dependencies

While I see many advantages (and disadvantages) in NAnt, I can't think
of anything off the top of my head that it can do, but that can't be
done with ordinary make/bash (or other scripting language).  NAnt
benefits from having a centralized repository of tasks, so that we don't
each have to build our own solution task from scratch, but that's a
packaging deficiency with make/bash, not a technical one.  It's also
somewhat easier to grok than make, but on the other hand there are some
things that make can do easily, but which are tricky or more work to do
in NAnt - such as adding a project-wide pre or post compile step.

What sort of things did you have in mind?

Hi,

just some feedback about an experience I had a few months ago (actually the first non-trivial thing I did with NAnt outside a strict build scope).

We have some third party library (namely, Syncfusion Essential Suite) which is massively used in our components (here the CCNet+NAnt setup drives 60+ solutions). A new release came out with a change in the licensing strategy (the content of the .licx file had to be updated), and also with a breaking change of assembly names (such as : each previous dependency was split in two, plus another 'Core' dll had to be referenced).

With NAnt I was able to :
- determine the project files where a change was required (thanks to fileset + patterns + recursivity + small c# custom task)
- create at the same place a new licx with the right content (when not available, with a file exist + copy)
- update the csproj files ( = interacting with the xml content, based on a quick regexp + replace custom task)
- launch a test build by iterating over all the solutions files (fileset + pattern + exec) to ensure that everything was running smoothly
- do the checkout / checkin stuff with VSS automatically (using nant contrib vss tasks) during the whole operation

The whole operation took me one day (alone, and working in isolation from the team).

The other ways would have been to use the GUI-only tools provided and let people do their changes (= chaos, most likely!), or use a make / bash / batch script, but in my case I dare say I would have been much slower, and much more likely to cause errors.

The things I especially like about NAnt/Ant for such operations is the error handling (by default, it fails fast, where a script usually does not fail so quickly by default - it requires more care to achieve this), the tasks which are provided (such as interacting with VSS), and the cheap extensibility (custom tasks, or scripts, comes very handy).

I came to realize that NAnt can be pretty valuable even for one-shot operations such as this one. I really felt *power* when I did all this in parallel.

cheers

Thibaut
--
[blog] http://www.dotnetguru2.org/tbarrere

==============================================================================
Please access the attached hyperlink for an important electronic communications disclaimer:

http://www.csfb.com/legal_terms/disclaimer_external_email.shtml

==============================================================================

Reply via email to