UPDATE: A new update (v2.1) that resolves a few issues:
- Character set conflicts when using non-ASCII characters
- Updated documentation on how to integrate version.rci without having VS delete it the next time you open the resource designer
- Fix for parameters that are built from the product version
I recently had the need to update my BuildVer tool to use in newer projects. BuildVer is an incremental versioning tool that can be used for automated builds. It was originally written to allow us to use the Win32 VERSIONINFO resource but have it updated for each build. Later functionality was added to support generating standard .NET assembly info files. While the existing tool was sufficient I decided that it was time to update the code and, at the same time, add some new features.
The original code was written over a decade ago in C++. Later it was updated for .NET support and to use MFC types. The new tool is completely written in C#. The original version could generate 1 or 2 files (a managed and unmanaged file) and an optional text file. Some support was added for specifying the build information on the command line. This was sufficient to meet the needs of the time.
v2 supports generating any number of output files with their corresponding template files. The tool works with any text file. Additionally the configuration file has been expanded to allow for specifying arbitrary parameter name-value sets that can be used in template files. There are a couple of pre-defined sets for versioning, company information, etc. Any of the parameter values can be overridden by the command line. This allows for more flexibility in the tool while keeping the command line options concise.
The readme.txt file contains all the details. The attached file contains the source code and a v4 version of the tool along with sample templates for C# and C++. Feel free to use the tool as you see fit. One note however, some of the code in the tool (specifically the command line processor) is copyright Carlson Engineering, Inc. and may not be reused without explicit permission. You can compile and use the tool itself without permission.