多年来我一直在使用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年以后仍在学习新的源代码控制,并且仍在学习基础知识,也许有人有更好的想法。
答案 0 :(得分:1)
与SVN不同,我们没有与TFS一起安装WCREV.exe
。
在TFS中,最简单的方法是使用内部版本号作为版本号。有一个全局.NET版本策略: AssemblyInformationalVersion 。您可以使用此策略为您的软件添加版本控制。您可以使用powershell script版本到程序集。
powershell脚本将在后台执行魔术替换 AssemblyVersion , AssemblyFileVersion 的所有版本控制值和 基于此产品版本的程序集信息文件中的 AssemblyInformationalVersion 。产品版本将作为一个整体传递给 AssemblyVersion和AssemblyInformationalVersion属性。 AssemblyFileVersion将替换为完整版本号 其中包括主要版本号和次要版本号 产品版本,基于Julian的日期和增量版本号。
对于汇编文件版本= 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。