У меня есть решение Visual Studio 2008, в котором основной выходной файл exe - это VB.Net Winforms exe, в котором есть несколько VB.Net и C # dll, связанных из одного решения. Все решение находится под контролем версий с помощью Subversion.
Теперь я хочу автоматически обновлять сгенерированные файлы с текущим номером версии SVN.
Для этого я нашел этот аккуратный проект: http://svnversiontasks.codeplex.com/
Вам также понадобятся MSBuild.Communuity.Tasks, чтобы это работало.
Был пример msbuild о том, как обновить число оборотов для каждого отдельного проекта в вашем решении, которое я использую:
<Import Project="$(MSBuildExtensionsPath)\SvnTools.Targets\SvnTools.Tasks.VersionManagement.Tasks" />
<Target Name="build">
<CreateItem Include="../**/AssemblyInfo.vb;../**/AssemblyInfo.cs;../**/Properties/AssemblyInfo.cs">
<Output TaskParameter="Include" ItemName="AssemblyInfoFiles" />
</CreateItem>
<CreateItem Include="../**/*.vdproj;*.vdproj">
<Output TaskParameter="Include" ItemName="DeploymentProjectFiles" />
</CreateItem>
<UpdateVersion AssemblyInfoFiles="@(AssemblyInfoFiles)" DeploymentProjectFiles="@(DeploymentProjectFiles)" Format="yyyy.mm.dd.rev" />
<Exec Command=""$(VS90COMNTOOLS)..\IDE\devenv" ..\MyApp.sln /build" />
<RevertVersionChange AssemblyInfoFiles="@(AssemblyInfoFiles)" DeploymentProjectFiles="@(DeploymentProjectFiles)" />
</Target>
Я изменил исходный файл, добавив в него файл AssemblyInfo.vb и сохранил его как файл msbuild.proj.
Однако, если я выполняю msbuild из консоли, я вижу, что проекты C # обновляются (я также могу подтвердить это из свойств выходного dll, но мой проект vb остается неизменным:
Reverting version number change: ../App1\AssemblyInfo.vb
Updating version number (to rev 0) for file: ../App1\AssemblyInfo.vb
D:\Source\MyApp\MyAppDeploy\MyAppDeploy.csproj : warning : Version attribute not found, file not updated.
Reverting version number change: ../App2\Properties\AssemblyInfo.cs
Updating version number (to rev 0) for file: ../App2\Properties\AssemblyInfo.cs
Successfully updated file.
Возможно, задача не поддерживает VB.Net.
Но, может быть, у кого-то есть решение для этого ...