获取Visual Studio变更集作为修订的一部分

时间:2017-12-28 14:15:41

标签: c# visual-studio svn tfs version-control

多年来我一直在使用Subversion。我发布的软件版本号格式为X.X.X. {SVN REV},我在Visual Studio中使用预构建事件来填充c#修订文件:

namespace Revision
{
    internal static class Svnstrings
    {
        static public int WCREV = 1959;
        static public string WCDATE = "2017/12/08 21:48:52";
        static public string WCNOW = "2017/12/28 14:01:35";
        static public string WCRANGE = "1949:1959";
        static public string WCMIXED = "Mixed update revision";
        static public string WCMODS = "Modified";
        static public string WCURL = "https://app.deveo.com/SrcCtrl/projects/myProject/repositories/subversion/myProject/trunk/mySource/myProject/Revision";
        static public string WCINSVN = "Versioned";
        static public string WCNEEDSLOCK = "Lock not required";
        static public string WCISLOCKED = "Not Locked";
        static public string WCLOCKDATE = "1970/01/01 00:00:00";
        static public string WCLOCKOWNER = "";
        static public string WCLOCKCOMMENT = "";
    }
}

我最近切换到Visual Studio TFS进行源代码控制,我想做类似的事情,在WCREV中获取changeset值。

也许这过于复杂,但在使用Subversion 10年以后仍在学习新的源代码控制,并且仍在学习基础知识,也许有人有更好的想法。

1 个答案:

答案 0 :(得分:1)

与SVN不同,我们没有与TFS一起安装WCREV.exe

在TFS中,最简单的方法是使用内部版本号作为版本号。有一个全局.NET版本策略: AssemblyInformationalVersion 。您可以使用此策略为您的软件添加版本控制。您可以使用powershell script版本到程序集。

  

powershell脚本将在后台执行魔术替换    AssemblyVersion AssemblyFileVersion 的所有版本控制值和   基于此产品版本的程序集信息文件中的 AssemblyInformationalVersion 。产品版本将作为一个整体传递给   AssemblyVersion和AssemblyInformationalVersion属性。   AssemblyFileVersion将替换为完整版本号   其中包括主要版本号和次要版本号   产品版本,基于Julian的日期和增量版本号

enter image description here

  

对于汇编文件版本= 2.7.15169.03

的含义      
      
  • 2 =>取自“主要”产品版本
  •   
  • 7 =>取自“次要”产品版本
  •   
  • 15169 =>由构建过程生成:“15”= 2015年,“169”= 2015年的一天
  •   
  • 3 =>第三次建设,2015年第169天开始
  •   

有关详细信息,您可以查看以下精彩帖子:TFS Build 2015 … and versioning!和类似主题vNext Build Awesomeness – Managing Version Numbers

至于你想在你的装配信息中获取/设置变更集号。

您可以在构建号码格式中使用$(Build.SourceVersion)来实现此目的,例如

$(BuildDefinitionName)_$(date:yyyyMMdd)_$(Build.BuildId).$(Build.SourceVersion)$(rev:.r)

但是这个$(Build.SourceVersion)只有在提交时自动触发构建时才会起作用(在持续集成时)。因为当你运行手动构建时,你必须输入Source Version字段才能填充它。更多详情请查看:Build.SourceVersion is blank in VSO vNext Build

您还可以使用PowerShell脚本获取源版本变更集编号,并将其应用于您的内部版本号或AssemblyInfo。