【问题标题】:How to use Svn Version Task to set the Version of a vb project如何使用 Svn 版本任务设置 vb 项目的版本
【发布时间】:2010-05-03 19:48:05
【问题描述】:

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

现在我想通过生成的文件自动更新当前的 svn 版本号。 为此,我发现了这个整洁的项目:http://svnversiontasks.codeplex.com/ 您还需要 MSBuild.Communuity.Tasks 才能正常工作。

有一个 msbuild 示例,说明如何更新我使用的解决方案中每个项目的 rev 号:

  <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。 但也许有人对此有解决方案......

【问题讨论】:

    标签: svn msbuild assemblyinfo


    【解决方案1】:

    如果您查看 UpdateVersion 任务源代码,您应该会发现它使用正则表达式来解析 AssemblyInfo 文件,因此如果它不适用于 vb 文件也就不足为奇了。

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

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

    【讨论】:

    • 我知道,目前我正在使用 SvnVersion 更新我的项目(对不起,我没有提到),但由于 AssemblyInfo 文件在 repo 中,它们总是被标记为已更改。并且 Svn Version Task 也支持部署项目。
    • 好的,AssemblyInfo 任务的提示是个好主意。现在我在构建之前将修订设置为我的 svn-revision 并在构建之后恢复为零,因此如果我提交更改,文件不会更改。
    猜你喜欢
    • 2012-10-06
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    相关资源
    最近更新 更多