Trying to set up the compile step for a .NET project, so that the Assembly Version does not auto incrememnet, but the File Version does.
I've unchecked the box for "Assembly Version". I've checked the box for "File Version" and for "Auto Incremement Revision".
It seems to work, but my question is, where is the File Version stored?? I see that the Assembly Version is stored in the .fbd file, but where is it reading the File Version from? If I try to manually modify my assemblyinfo.vb, it is overwritten by Final Builder when I run my compile.
The reason I am asking is because we have several (many) Final Builder projects (don't ask..ugh), and i'd like to know a simpler way to reset all File Versions to the same number if need be. We were previously linking Assembly and File version, so I was able to do a search and replace on all .fdb files, and it worked great. But we are no longer linking Assembly and File version, and I dont see any way to easily modify all of my File versions without opening up each .fbz4 file and modifying them manually.
Hope that wasn't too confusing. Thanks for any help.
i just manually changed all of the file versions in each final builder project. all dlls are now building with the correct version #. but when i build a 2nd time, they are not incrementing the revision, even though I have that box checked.
We did some further testing with this problem and have confirmed this:
If we run the build from our main project (which has include steps to sub-projects that represent our different software modules), the file version does not increment.
If we run the sub-project directly, the one which includes the actual compile step, the file version increments correctly.
We do pass variables from project to project, but the passed in variables would not affect the incrementing of file versions. We have confirmed that in either case the assembly is compiling.
As described by Walt, i setup a sample scenario to reproduce the issue....
I've created a simple .NET dll called "VersionNumber". I've created a FB5 project called "Compile". Compile is setup to build the dll and increment the revision number of the file version but not the assembly version. When i run Compile, it works correctly. The File Version increments each time it is run. Assembly version stays at 1.0.0.1.
I then create a 2nd FB5 project called "Wrapper". Wrapper has a "Flow Control" -> "Include Project" action, which includes the "Compile" project. If I run Wrapper, the version number of the dll resets to the version in the AssemblyInfo file. It then does not increment on each successive run.
Is this a bug? By design? I've attached my sample scenario in a zip file. Seems to work the same in FB4 and FB5.
I believe this is by design.. it's an architectual limititation of how the version info is stored. A better solution is to store the version numbers in an external file (such as an ini file) and load it into variables or property sets as needed in your finalbuilder projects. This is what we do here, and it has the added benifit of easily sharing the version numbers between mulitiple finalbuilder projects.
well moving forward, in the next generation of our software, we have stored all of the version numbers in a sql database and we use one single final builder project to build all of our application (several hundred). and it seems to be working great.
the problem is that in our current release of software, the original design was the have one final builder “wrapper” project, which includes hundreds of individual final builder projects, which each build a single application… as messy as the approach has been, it has worked up to this point… until we decided to remove the link between assembly version and file version… and we dont really have the time to move this release to use the newer database method of storing the version numbers… there are just too many projects that would need changed and too much testing involved.
I've tried the ini solution on a sample project (please see attached). And I can still not get the file version to update correctly. Assembly version seems to work fine. But if uncheck everything on the Assembly Info tab and use a property set on the Version Info tab, and I set the File Version and Product Version using the Property Set from my ini file, the versions are still not correct. The File Version and Product Version seem to take on the current Assembly version. I do not want these versions to be linked.
This is a limitation of the VS.NET action, and the .NET Assembly Numbers property set. There is no way in the action to unlink them. As a work around, turn off updating the assembly info in the action, and add an Assembly Info Updater action before the VS.NET action, this action will allow you to specify individual values for the version info.
I can't promise any changes to this in FB5, however I will investigate whether we can change this in a backwards compatible manner for an update to FB6.
yep thanks. that’s exactly what we ended up doing yesterday. we’ve implemented the solution of storing versions in a text file, along with the Assembly Info Updater. Seems to be working in all of the projects that we’ve added it to so far.