gpt4 book ai didi

c# - AssemblyInfo 文件的版本控制和更新

转载 作者:太空宇宙 更新时间:2023-11-03 13:09:41 26 4
gpt4 key购买 nike

我正在使用 subversion 维护一个(主要是)C# 代码的应用程序。我想知道何时何地更新 AssemblyInfo.cs 文件以反射(reflect)产品发布时的版本号的最佳做法是什么。

假设我有一个主干,以及一些用于以前版本的维护分支和用于标记每个版本的标签。

如果我在标记之前更新分支或主干中的 AssemblyInfo 文件(这是我当前的方法),这意味着我可以查看该分支的日志以查看发布时间,这非常有用,但它给了我虚假的信息在分支之间合并时合并冲突。例如,我在版本 4 分支中进行了错误修复,将版本 4.7 更新为 4.8;当我尝试将该修复合并到版本 5 分支时,AssemblyInfo 必然会发生冲突。

我还考虑过更新标记本身中的 AssemblyInfo 文件。这避免了合并冲突的问题,但是意味着你在查看主干或维护分支的历史时看不到发布,而且它似乎也违反了标签应该是只读的原则。

据我所知,有些人喜欢在构建过程中即时更新 AssemblyInfo 文件,而根本不将它们存储在 SVN 中。尽管从表面上看,自动化版本编号似乎是个好主意,但我认为,如果在执行构建之前立即 checkin AssemblyInfo 文件,我会感觉舒服很多,这样两者之间就存在直接关联程序集的版本号及其来源。

最佳答案

只是分享经验:我以自动化方式在构建服务器上执行此操作。除了不经常增加主要版本和次要版本之外,我已经配置了一次并且不再触摸它。这是一个大纲:

  • AssemblyInfo.cs 致力于源代码控制
  • AssemblyInfo.cs 未被开发人员手动更改
  • 构建服务器在对源代码控制进行任何更改时获取源代码
  • 构建服务器自动更改 AssemblyInfo
  • 构建服务器生成具有正确版本的工件
  • 当我标记/分支时,我使用来自构建服务器的构建版本创建一个标记

现代构建服务器将具有自动更改此文件的整个过程的功能,例如参见 AssemblyInfo patcher in TeamCity

我使用的版本策略是:

major.minor.build_number.svn_revision_number

其中 majorminor 被手动硬编码为构建服务器上的配置参数。 build_number 由构建服务器自动递增。 svn_revision_number 从 svn 提交号中获取。

关于c# - AssemblyInfo 文件的版本控制和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29518013/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com