hi,
 
since i needed a versioning scheme other than that of the existing version task, i 
built my own. i like the way it works, so im suggesting this as an extension to the 
existing version task.
 
the idea is to have a version-config file that contains not only the counter for the 
incrementing part of the version number, but also the rules that says how the rest of 
the version number should look.
 
an example of a version config file i use is as follows:
 
<?xml version="1.0" encoding="UTF-8" ?>
<buildversion xmlns="urn:rubicon-it:nant:buildversion">
  <major>0</major>
  <minor>9</minor>
  <build>
    <increment currentValue="13" />
  </build>
  <revision>
    <map property="nant.settings.currentframework">
      <entry propertyvalue="net-1.0" versionvalue="10" />
      <entry propertyvalue="net-1.1" versionvalue="11" />
      <default fail="true" />
    </map>
    <map property="project.config">
      <entry propertyvalue="release" versionvalue="1" />
      <entry propertyvalue="debug" versionvalue="2" />
      <entry propertyvalue="documentation" versionvalue="0" />
      <entry propertyvalue="" versionvalue="0" />
      <default fail="true" />
    </map></revision>
</buildversion>
 
this would result in version number of 0.9.14.101 for a release buld for .net 
framework 1.0, or 0.9.13.101 if i supress incrementing. the advantage is that if i 
look at the metadata of an assembly that uses one of the target assemblies of this 
build, i can tell immediately which configuration is referenced. 
this could be extended to include tags for date/time values. or, more generally, it 
could be extended to include simple property expansion, and nant could provide 
properties with current date/time values by default. AFAIU, any of these enhancements 
would provide the current functionality of the version task and more.
 
my implementation of this task provides properties for the whole version number, each 
part (minor, major etc) and a version number that does not include 
configuration-specific values (.noconfig property).
in the example above, the latter would be 0.9.13.0, so that target directory trees can 
be built like
0.9.13.0/net-1.0/debug
0.9.13.0/net-1.0/release
0.9.13.0/net-1.1/debug
etc.
also, the task allows supressoin of version incrementation.
 
usage example:
 
<buildversion versionfile="build/buildversion.xml" property="buuild.version" 
increment="false" />
<property name="build.basedir" 
value="${solution.basedir}/build/${build.version.noconfig}" />
 
i'd like to know if you think this functionality should be part of the nant version 
functionality, a alternative one in nant contribs, or neither. once more, i don't find 
the time to struggle with the details of contribution right now, but i'll provide 
source code on request (just a few lines of code anyway).
 
stefan
 

<<winmail.dat>>

Reply via email to