title: Versioning with NPanday and Maven Release Plugin
body: <p>I'm working on a C# .NET webservices project that uses Maven with NPanday. We also want to use the release plugin, but I've found a minor versioning issue.</p>
  
  <p>NPanday will (conveniently) update the <code>AssemblyInfo.cs</code> file with the version number from the POM file when you do a build, but it doesn't commit to that change to SVN (nor would I necessarily want it to).</p>
  
  <p>The release plugin doesn't know about <code>AssemblyInfo.cs</code> (nor would I expect it to). But this means that my AssemblyInfo.cs and POM versions get out of sync during release operations.</p>
  
  <p>For example, say I do <code>mvn release:branch</code> to create a 2.0.x branch from trunk. The POM and <code>AssemblyInfo.cs</code> were probably both at 2.0.0-SNAPSHOT in the trunk prior to branching, so the branch looks as I would expect. But in the updated trunk, the POM version has been updated (e.g. 2.1.0-SNAPSHOT) but the AssemblyInfo.cs is still at 2.0.0-SNAPSHOT.</p>
  
  <p>This isn't a huge problem because the next <code>mvn compile</code> on the trunk will update the <code>AssemblyInfo.cs</code> and someone will commit it. But it's worse with <code>release:prepare</code> because the tag created from the branch has the correct version in the POM (e.g. 2.0.0), but the <code>AssemblyInfo.cs</code> still says -SNAPSHOT. When release:perform is run, NPanday will update the <code>AssemblyInfo.cs</code> file, but then there's a floating modification from that tag.</p>
  
  <p>Does anyone know of a way to rectify this with the release plugin? I could certainly create correct branches/tags by hand or code up a custom tool. Or I could just leave it as is, saying that "The AssemblyInfo.cs file isn't the definitive version source, the POM is." But I'd prefer the best of both worlds.</p>