Интересно, я написал свое собственное задание, которое подключено к BeforeBuild, и это работает нормально. Никогда не было проблем с VS или MSBuild через командную строку. Так что я бы сказал, исследовать BeforeBuild еще ...
Я знаю, потому что мы используем номер сборки нашего сервера сборки (CruiseControl.NET) в качестве части «Build» версии, которая встроена во все сборки (у нас один и тот же AssemblyInfo.cs для AssemblyVersion и AssemblyFileVersion для всех сборок в решение), и это затем передается (через задачу FileUpdate) в переменную в нашем проекте WiX, а также используется для обозначения имени файла MSI.
<Target Name="BeforeBuild">
<CallTarget Targets="UpdateAssemblyInfo" />
</Target>
<Target Name="UpdateAssemblyInfo" Condition="'$(CIBuildNumber)' != ''">
<UpdateVersion Attribute="AssemblyFileVersion"
AssemblyInfo=".\Properties\AssemblyInfo.cs"
BuildNumber="$(CIBuildNumber)" />
</Target>
Если вы занялись поиском, вы должны найти другие примеры ... извините, я не могу дать вам код UpdateVersion, мне нужно разрешение на мою работу, но если вы не можете найти что-нибудь подходящее в сети, пользовательские задачи легко написать, и вышесказанное должно помочь.