2010-07-28 144 views
7

我有一个使用颠覆源控制的asp.net/C#应用。内部版本VS版本号

我的应用程序会自动增加它的AssembleVersion和的AssemblyFileVersion上用得好好的每个版本,并显示在网站的管理方面的内部版本号。

我们在进行部署时跟踪了AssembleVersion和AssemblyFileVersion,但是当出现问题并且需要回滚到某个特定版本时,我们不知道在Subversion中针对哪个版本。

我有几点想法:

  1. 保存AssembleVersion在每个文件注释
  2. 有一个关键字在提交该得到的取代AssembleVersion每次提交(仍需要弄清楚如何做到这一点)评论

任何帮助和建议,可以理解

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

+0

好像每个人都指向“标签”。任何想法,我可以得到一个关于标签的教程?以及如何创建它们? ***我从来没有听说过标签*** – 2010-07-28 11:13:45

+0

请参阅我提供的链接。 :) – 2010-07-28 11:17:12

回答

4

当我建,我把版本号无处不在。

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

我不把它放在里面的唯一东西就是我的咖啡,它是I take black

所有这些都可以让维护人员一目了然地知道代码来自哪里,他们正在查看的内容,他们是在查看网页,还是在资源管理器中查看其中一个构建程序集的属性,或者随你。

+0

是啊...这是我正在努力,只是不知道如何创建标签虽然:( – 2010-07-28 11:16:12

+0

所有你必须做的使用“svn copy”命令,并且会在你想要的任何地方创建一个标签,所有标签都是一个“副本”,它在Subversion中被实现为一个“指针”,你可以在你的构建文件中执行这个命令,例如,CruiseControl只是通过正确配置你的项目来为你制作这个标签 – 2010-07-28 11:38:51

+2

对不起,我不同意不把它放在你的咖啡中,你还有什么想知道它是从剩下的前一天? – 2010-07-28 12:37:27

4
+0

也许我应该抓颠覆,导致即使阅读“简单”和“复杂”的例子后,我仍然不知道从哪里开始的标签 – 2010-07-28 11:24:08

+0

我认为这取决于你如何使用颠覆,是你使用类似乌龟SVN或命令行的东西,书中的示例是使用命令行工具的示例。如果你想刷新http://svnbook.red-bean.com/ – 2010-07-28 13:51:55

+0

是的,我推荐看看本书的其余部分,我使用gui工具如乌龟和安赫,我从来没有使用命令行(纯粹因为我没有必要),但我现在正在做一些阅读:) – 2010-07-29 05:52:41

2

你可以标记与AssembleVersion或的AssemblyFileVersion,取其最有意义的颠覆树干。

您还可以跟踪的Subversion版本号,你目前跟踪,当您部署AssembleVersion和的AssemblyFileVersion以同样的方式。

2

应用一个标签源代码树已经更新了AssemblyVersionAssemblyFileVersion后。

2

你可以“分支发布”。在创建发布版本之前,您可以分支主干,然后在发布版本号的新分支上创建一个标签。

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

这将让你保持在SVN所有单个版本的轨道。它还将允许您在发布分支上进行单独的错误修复,这些修复可以作为补丁发布。然后可以将错误修复合并回主干。

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

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

而且您应该能够在ASP.NET页面中提取程序集版本并以程序化方式将其打印在页脚中。

+0

我设法使用http://sharpsvn.open.collab.net/(SharpSVN)从svn获得修订号,但是这会产生一些痛苦......为什么?!?....好吧,什么时候准确你是否告诉它检查版本,并在哪里保存它? – 2010-07-28 11:45:41

+0

Tehre是一个名为AssemblyInfoTask的自定义任务,它在构建时更新assemblyversion,因此您可以使用类似的任务。但是,它可能需要进行一些调整才能得到实际的修订版本号。我自己并没有使用这个版本,因为我们采用了更简单的解决方案,导出了包含在网站中的版本号的文本文件,只是为了给我们提示。缺点是我们无法在我们的dll上看到版本号 – jishi 2010-07-29 08:41:52

2

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

您还可以(或者另外)在您的AssemblyInfo中包含svn版本号。一种方法是在http://msbuildtasks.tigris.org

欲了解更多信息使用的AssemblyInfo任务从msbuildtasks项目,谷歌msbuild svn revision assemblyinfo

可以然后做没有标签/枝,因为你总是可以签出特定修订, /或从特定版本创建分支。

0

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