views:

61

answers:

1

I have a nant build script that specifies the compilation of various Visual Studio solution files.

<target name="compile.solution1" description="Compiles solution 1">
 <msbuild project="${src.dir}\Solution1.sln" verbosity="${build.verbosity}">
  <property name="Configuration" value="${build.config}" /> 
  <property name="OutputPath" value="${build.fullpath}/${prefix.sol1}" />
  <property name="ReferencePath" value="${assembly.dir}" />
 </msbuild>
</target>

I have multiple solutions specified in targets compile.solution1, compile.solution2, compile.solution3...compile.solution7

I have another target that specifies that the whole bunch of solutions are to be compiled:

<target name="compile" depends="compile.solution1, compile.solution2,
 compile.solution3, compile.solution4, compile.solution5, compile.solution6,
 compile.solution7" description="Compiles all targets" />

When I time how long it it takes to execute the target "compile" and compare it to the sum of the time it tasks to execute each of the individual compile.solutionX targets I find that the "compile" target takes 30 seconds longer.

I don't understand why this is the case? In my mind the "compile" target should act as a for-loop and the difference between it and executing each one individually should be minimal.

Does anyone know if more goes on in the background in Nant when processing multiple solutions defined in a single target?

Sorry for the horrible title of the question....I just didn't know how to phrase it.

+1  A: 

I'd guess the dependency evaluation takes longer when you have multiple targets listed in the depends attribute, and that it takes more additional time for each non-trivial target added to the list.

DaveE