Before build, comment out "AssemblyVersion" and "AssemblyFileVersion" attribute in AssemblyInfo.cs default definitions (will cause build error by duplicate definition). If you use custom rule set, continue use this definitions.
After installed, build project. Auto-apply version informations into assembly attributes. Some attributes are looking for directory Windows Explorer property page.
You can use custom rule set file naming "RelaxVersioner.rules" into project folder "$(ProjectDir)" or solution folder "$(SolutionDir)". Current no documentation custom rule set file, see also below.
Sample custom rule set file:
<?xml version="1.0" encoding="utf-8"?>
<RelaxVersionerversion="1.0">
<Rules>
<!-- Target languages -->
<Language>C#</Language>
<Language>F#</Language>
<Language>VB</Language>
<Language>C++/CLI</Language>
<!-- "gitLabel" is extract numerical-notate version string [1.2.3.4] from git repository tags/branches traverse start HEAD. If not found, fallback to "safeVersion".-->
<Rulename="System.Reflection.AssemblyVersionAttribute">{gitLabel}</Rule>
<!-- "safeVersion" is extract committed date (with commmiter) from git repository HEAD. "safeVersion" specialized from "committer.When". (The format is safe-numerical-notate version string [2016.2.14.12345]. (Last number is 2sec prec.))-->
<Rulename="System.Reflection.AssemblyFileVersionAttribute">{safeVersion}</Rule>
<!-- "commitId" is extract commit id from git repository HEAD. "commitId" alias to "commit.Sha".-->
<Rulename="System.Reflection.AssemblyInformationalVersionAttribute">{commitId}</Rule>
<!-- "key" is only used "AssemblyMetadataAttribute". If you use "AssemblyMetadataAttribute" and platform version == "v4.0", cannot use mscorlib implementation. Will auto define pseudo "AssemblyMetadataAttribute" class.--><!-- "committer.When" or you can use another choice "author.When". "author" and "committer" can use property "Name", "Email", and "When".-->
<Rulename="System.Reflection.AssemblyMetadataAttribute"key="Build">{committer.When:R}</Rule>
<Rulename="System.Reflection.AssemblyMetadataAttribute"key="Branch">{branch.Name}</Rule>
<Rulename="System.Reflection.AssemblyMetadataAttribute"key="Tags">{tags}</Rule>
<Rulename="System.Reflection.AssemblyMetadataAttribute"key="Author">{author}</Rule>
<Rulename="System.Reflection.AssemblyMetadataAttribute"key="Committer">{committer}</Rule>
<Rulename="System.Reflection.AssemblyMetadataAttribute"key="Message">{commit.MessageShort}</Rule>
</Rules>
</RelaxVersioner>
TODO:
Support exclude rule set.
Support native C++ project.
License
Copyright (c) 2015 Kouji Matsui (@kekyo2)
Under Apache v2
History
0.7.18:
Fixed PCL target project cause AssemblyMetadataAttribute not found.
0.7.17:
Fixed not exist TargetPath folders on CI environments.
0.7.16:
Update libgit2sharp and NamingFormatter
0.7.14:
Add support SemVer's optional prefix/postfix.
Change git traverse strategy, tags retreive only HEAD commit.
0.7.13:
Fixing build fail included dirty string attributes. Example: Dirty\String"Test"
0.7.12:
Fix crashed when using non-committed repository.
0.7.11:
Add {branches} and {tags} format.
0.7.10:
Use NamingFormatter.
Use System.Version.Parse.
0.7.7:
Fixed lack of newest tag.
0.7.6:
Support lower .NET Framework (2.0-3.5)
0.7.5:
Traverse git repository between projectDirectory and the root.
Ignore not found/cannot open git repository.
0.7.1: Support custom rule set file.
0.5.30: Checked on 4 languages.
0.5.0: Initial public commit. (Broken, still under construction)