csproj ファイルの最後に、BeforeBuild と AfterBuild という 2 つの空の MSBuild ターゲットがあります。これら 2 つのターゲットは、多かれ少なかれ、ビルド前およびビルド後のイベントに置き換わるものです。そこに独自のスクリプトを追加できます。たとえば、Subversion からバージョンを取得した後、SolutionInfo.cs でバージョンを設定しています。これは、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の一部です。