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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取Visual Studio变更集作为修订的一部分相关的知识,希望对你有一定的参考价值。

多年来我一直在使用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年以后仍在学习新的源代码控制,并且仍在学习基础知识,也许有人有更好的想法。

答案

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

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

powershell脚本将在后台运行魔术,根据此产品版本替换Assembly Info文件中AssemblyVersion,AssemblyFileVersion和AssemblyInformationalVersion的所有版本控制值。产品版本将作为整体传递给AssemblyVersion和AssemblyInformationalVersion属性。 AssemblyFileVersion将替换为完整版本号,该版本号将包含产品版本的主要版本号和次要版本号,基于Julian的日期和增量版本号。

enter image description here

对于Assembly File Version = 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中。

以上是关于获取Visual Studio变更集作为修订的一部分的主要内容,如果未能解决你的问题,请参考以下文章

使用mercurial克隆或拉到标记后如何获取标记变更集?

变更集和修订之间的差异

创建 Visual Studio 扩展时如何获取源代码管理历史记录窗口中的选定项目?

MSTest Visual Studio 2015:未找到测试容器直接或间接引用的程序集或模块“xxxxxxx”

在Visual Studio中查看类似于TortoiseHg的TFS更改集

在 Visual Studio 2019 中控制 C++ 标准修订版