В самом конце вашего файла csproj есть две пустые цели MSBuild, называемые BeforeBuild и AfterBuild. Эти две цели являются более или менее заменой событий до и после сборки. Вы можете добавить свой собственный скрипт там. Я устанавливаю версию в SolutionInfo.cs, например, после получения ее из Subversion, что достигается с помощью MSBuild.CommunityTasks:
<Target Name="BeforeBuild">
<FileUpdate
Files="$(SolutionInfoFile)"
Regex="(?<ver>assembly: AssemblyVersion\(").*""
ReplacementText="${ver}$(Major).$(Minor).$(Build).$(Revision)"" />
<FileUpdate
Files="$(SolutionInfoFile)"
Regex="(?<ver>assembly: AssemblyFileVersion\(").*""
ReplacementText="${ver}$(Major).$(Minor).$(Build).$(Revision)"" />
<FileUpdate
Files="$(SolutionInfoFile)"
Regex="(?<ver>assembly: AssemblyInformationalVersion\(").*""
ReplacementText="${ver}$(Major).$(Minor).$(Build)"" />
</Target>
AFAIR Задача FileUpdate с регулярным выражением также является частью CommunityTasks.