如何使用Svn Version Task设置vb项目的版本

时间:2010-05-03 10:24:39

标签: svn msbuild assemblyinfo

我有一个Visual Studio 2008解决方案,其中主输出exe是一个VB.Net Winforms exe,它有几个VB.Net和C#dll从同一个解决方案链接。整个解决方案都在版本控制下进行颠覆。

现在我想通过生成的文件使用当前的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="&quot;$(VS90COMNTOOLS)..\IDE\devenv&quot; ..\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。 但也许某人有解决方案......

1 个答案:

答案 0 :(得分:0)

如果您查看UpdateVersion任务源代码,您应该使用Regex来解析AssemblyInfo文件,因此如果它不能与vb文件一起使用就不足为奇了。

你可以做你想要的,只使用MSBuild.Community.Tasks:

  • SvnVersion 获取修订版(您也可以使用SvnVersionTasks中的SvnGetProperty任务)
  • AssemblyInfo 以使用正确的版本生成程序集信息。这个任务处理VB。