I am working on a tool to automate the build process it is still on development and it's open source here is the link (I am planning a release in about one week):
https://github.com/jupaol/NCastor
Now I would recommend you to check the Semantic versioning:
http://semver.org/
To get the latest changeset from TFS, you have several options:
I built a custom routine to do this
https://github.com/jupaol/NCastor/blob/develop/Solutions/NCastor.AutoBuilder/NCastor.AutoBuilder.Runner/Targets/Build/Versioning/VersionControlServers/TFS/GetTFSRevisionVersion.target
I had to build that routine because the Community tasks and the MSBuild Extenssions tasks were not working on a 64bits machine, if you are using a 32bits machine to build then you can use the following tasks:
Using http://msbuildextensionpack.codeplex.com/
<UsingTask AssemblyFile="$(ExtensionTasksPath)MSBuild.ExtensionPack.dll" TaskName="MSBuild.ExtensionPack.VisualStudio.TfsVersion"/>
Using http://msbuildtasks.tigris.org/
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Tfs.TfsVersion" />
Example to set the different versions:
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.AssemblyInfo" />
<MSBuild.Community.tasks.AssemblyInfo OutputFile="$(AssemblyVersionFilePath)"
CodeLanguage="C#"
AssemblyFileVersion="$(FileVersion)"
AssemblyInformationalVersion="$(InformationalVersion)"
AssemblyVersion="$(SemanticVersion)" />
Once you have created the file simply add that file as a link to each project and voila! all your projects are sharing the common assembly info.