构建版本与修订版号

我有一个asp.net/C#应用程序,它使用subversion进行源代码控制。

我的应用程序会自动增加每个构建的AssembleVersion和AssemblyFileVersion,它就像魅力一样,并在站点的管理端显示构建号。

我们在部署时会跟踪AssembleVersion和AssemblyFileVersion,但是,当出现问题并且我们需要回滚到某个版本时,我们不知道在subversion中要定位哪个版本。

我的想法很少:

  1. 将AssembleVersion保存为每个文件中的注释
  2. 在提交注释中有一个关键字,在每次提交时都会被AssembleVersion取代(仍然需要弄清楚如何去做)

任何帮助和建议将不胜感激

更新:选项“1”实际上是一个愚蠢的想法,因为这意味着每次构建时,所有文件都将被标记为更新,当我提交时,每个文件都将被更新

当我构建时,我将该构建号放在任何地方。

  • 我把它放在svn的标签中。
  • 我把它放在我构建的每个程序集的Assembly元数据中。
  • 我将它附加到我的安装程序中的文件名的末尾。
  • 我把它放在我部署的每个网页的页脚中。
  • 我把它放在报告的页脚里。
  • 我把它放在客户端应用程序的启动画面中。
  • 我把它放在我的安装人员的欢迎屏幕上。

我唯一不把它放进去的是我的咖啡, 我把它取黑 。

所有这一切都让维护者可以一目了然地知道代码来自哪里,无论他们是在查看网页,还是在资源管理器中查看其中一个构建的程序集的属性,或者其他什么。

如果您经常进行构建,则标签不是很有用。 也许找到一种方法来更新基于svn修订版的Assembly版本? 还包括分支名称,因为它们共享修订。

您应该能够在ASP.NET页面中提取程序集版本,并以页脚或类似方式以编程方式打印它。

您可以使用AssembleVersion或AssemblyFileVersion标记Subversion主干,无论哪个最有意义。

您还可以跟踪Subversion修订版号,就像当前部署时跟踪AssembleVersion和AssemblyFileVersion一样。

更新AssemblyVersionAssemblyFileVersion后,将标记应用于源树。

你可以“分支发布”。 在创建发布版本之前,您可以分支主干,然后在新分支上使用发行版本号创建标记。

  + release tag / +--------------------- release branch / ----------+----------------------------------------------------- trunk 

这将允许您跟踪SVN中的所有单个版本。 它还允许您在可作为补丁发布的发布分支上进行孤立的错误修复。 然后可以将错误修复合并回主干。

  + + patch release tag / / +-----------------+-+---- release branch / | merged fix into trunk... ----------+----------------------------------------------------- trunk 

标签/分支绝对是推荐的方法。

您还可以(或另外)在AssemblyInfo中包含svn修订号。 一种方法是在http://msbuildtasks.tigris.org上使用msbuildtasks项目中的AssemblyInfo任务。

有关详细信息,请参阅 google msbuild svn修订版assemblyinfo

然后,您可以不使用标记/分支,因为您始终可以检出特定修订,和/或从特定修订创建分支。

另一种选择是使用上次更改的修订版作为您的内部版本号。 这意味着每次构建自动标记时。 使用hudson / jenkins很容易,因为你有一个环境变量SVN_REVISION。 问题是版本号变得非常大,关于1.0.0.20456与1.0.0.20489的走廊讨论是满口的。