版本化.NET构建

 弓X箭_281 发布于 2022-12-21 21:35

只是想知道.NET构建版本化的最佳方法是什么?

我用:

TFS 2013用于版本控制

TFS门禁办理登机手续

Wix 3.8将代码打包到MSI文件

我想设置版本:

程序集(AssemblyInfo.cs,或所有项目中引用的共享程序集)

MSI包(使用Wix代码)

文档(例如,在构建的最终输出中的readme.txt文件内)

等等

理想的版本号将允许跟踪已安装的软件回到确切的源代码.
就像是:

..

我希望在解决方案附近的版本控制中存储一些简单文本\ XML文件的前两部分版本,因为我相信它们应该共存.开发人员将手动更新此文件(例如,遵循语义版本控制方法).每个构建都将读取此版本文件,从调用CI工具获取3d版本的部分,并使用该版本更新所有必需的文件.

实现这个的最佳方法是什么?

我过去曾使用过几种方法:

1)执行此版本的NAnt\MsBuild包装器,然后调用MsBuild获取解决方案.它可以从CI工具(Jenkins\TeamCity\etc)调用.

问题 - 当我构建解决方案两次时,与TFS门控签入的集成很难看.

2)自定义TFS构建过程模板

问题 - 它不是那么简单,并导致一些合并工作TFS升级.此外,在门控签到中还不存在变更集编号,因此我们只能使用先前的变更集ID.

3)解决方案中的单独MsBuild项目,它仅执行此版本控制任务,并配置为首先在VS解决方案的项目构建顺序中运行.

问题 - 需要在所有其他项目(包括所有未来的项目)中引用这个元项目,这些项目感觉很难看

我知道不同的MsBuild和TFS扩展包可以简化更新.这个主题不是关于哪一个是最好的.问题是方法论而不是技术问题.

我还认为,如果微软在其标准TFS构建模板中包含版本控制功能,那将是理想的选择.其他CI工具已经具有此功能(AssemblyInfo修补程序).




更新11/09/2014

我决定明确表达符合敏捷\持续交付最佳实践的版本控制原则:

1)能够再现任何历史建筑

2)由于1)并且根据CD原则,所有内容(源代码,测试,应用程序配置,环境配置,构建\包\部署脚本等)都存储在版本控制下,因此具有分配给它的版本

3)版本号与其适用的源代码紧密存储在一起

4)人们可以根据他们的业务\营销逻辑更新版本

5)该版本只有一个主副本,用于自动构建\包装过程的所有部分

6)您可以轻松地说出目标系统上当前安装了哪个版本的软件

7)已安装软件的版本必须明确标识用于构建它的源代码

8)比较版本比较低,哪些更高,以控制允许哪些升级\降级方案及其实现细节是非常简单的




更新15/09/2014

请看下面我自己的答案.
我很幸运能找到满足我所有要求的解决方案!

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有