Lately I was trying to automate process of assigning assembly version for all my projects in solution. My tool of choice for build is MSBuild where is no appropriate support for file operations nor assembly version handling. I downloaded and installed MSBuild Community Task extensions which can be found at http://msbuildtasks.tigris.org/. Extension pack has FileUpdate task where you can find and replace specific text using regular expressions.
Build configuration file for assigning assembly version looks like:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
<PropertyGroup>
<Major>3</Major>
<Minor>5</Minor>
<Build>1</Build>
<Revision>0</Revision>
</PropertyGroup>
<ItemGroup>
<AssemblyFile Include="Project1Folder\Properties\AssemblyInfo.cs"/>
<AssemblyFile Include="Project2Folder\Properties\AssemblyInfo.cs"/>
</ItemGroup>
<Target Name="VersionUpdate">
<Message Text="Version: $(Major).$(Minor).$(Build).$(Revision)"/>
<FileUpdate Files="@(AssemblyFile)"
Regex='AssemblyVersion\("(\d+)\.(\d+)\.(\d+)\.(\d+)"\)'
ReplacementText='AssemblyVersion("$(Major).$(Minor).$(Build).$(Revision)")'
Condition=""/>
<FileUpdate Files="@(AssemblyFile)"
Regex='AssemblyFileVersion\("(\d+)\.(\d+)\.(\d+)\.(\d+)"\)'
ReplacementText='AssemblyFileVersion("$(Major).$(Minor).$(Build).$(Revision)")'
Condition=""/>
</Target>
</Project>