自动更新版本号

我想为每个构建增加应用程序的版本属性,但我不确定如何在Visual Studio(2005/2008)中启用此功能。 我试图将AssemblyVersion指定为1.0 *,但它并不能完全满足我的要求。

我也在使用一个设置文件,而在之前的尝试中,当程序集版本更改我的设置时,由于应用程序在另一个目录中查找设置文件而重置为默认设置。

我希望能够以1.1.38的形式显示版本号,因此当用户发现问题时,我可以记录他们正在使用的版本,并告诉他们如果他们有旧版本,就升级。

对版本工作如何的简短解释也将被赞赏。 构建版本和修订版本号什么时候增加?


使用“内置”的东西,你不能,因为使用1.0。*或1.0.0。*将取代修订和编号与日期/时间戳,这通常也是一个好方法。

有关更多信息,请参阅/ v标签中的汇编链接器文档。

至于自动递增数字,请使用AssemblyInfo任务:

AssemblyInfo任务

这可以配置为自动增加内部版本号。

有2个问题:

  • 版本字符串中的4个数字中的每一个都限制为65535.这是Windows限制,不太可能得到解决。
  • 为什么版本号限制在65535?
  • 与Subversion一起使用需要做一些小改动:
  • 在构建时使用MSBuild生成程序集版本信息(包括SubVersion修复)
  • 检索版本号非常简单:

    Version v = Assembly.GetExecutingAssembly().GetName().Version;
    string About = string.Format(CultureInfo.InvariantCulture, @"YourApp Version {0}.{1}.{2} (r{3})", v.Major, v.Minor, v.Build, v.Revision);
    

    并澄清:在.net或至少在C#中,构建实际上是第三个数字,而不是第四个,因为有些人(例如习惯于Major.Minor.Release.Build的Delphi开发人员)可能会期望。

    在.net中,它是Major.Minor.Build.Revision。


    VS.NET默认Assembly版本为1.0。*,并在自动递增时使用以下逻辑:它将构建部分设置为自2000年1月1日以来的天数,并将修订部分设置为自午夜以来的秒数,当地时间除以2。 请参阅此MSDN文章。

    程序集版本位于assemblyinfo.vb或assemblyinfo.cs文件中。 从文件中:

    ' Version information for an assembly consists of the following four values:
    '
    '      Major Version
    '      Minor Version 
    '      Build Number
    '      Revision
    '
    ' You can specify all the values or you can default the Build and Revision Numbers 
    ' by using the '*' as shown below:
    ' <Assembly: AssemblyVersion("1.0.*")> 
    
    <Assembly: AssemblyVersion("1.0.0.0")> 
    <Assembly: AssemblyFileVersion("1.0.0.0")> 
    

    我发现只要在需要产品版本的地方显示上一次构建的日期,就可以使用以下方法:

    System.IO.File.GetLastWriteTime(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString("yyyy.MM.dd.HH.mm.ss")
    

    而不是尝试从以下类似的东西获取版本:

    System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
    object[] attributes = assembly.GetCustomAttributes(typeof(System.Reflection.AssemblyFileVersionAttribute), false);
    object attribute = null;
    
    if (attributes.Length > 0)
    {
        attribute = attributes[0] as System.Reflection.AssemblyFileVersionAttribute;
    }
    
    链接地址: http://www.djcxy.com/p/86109.html

    上一篇: Automatically update version number

    下一篇: NotImplementedException is internal proprietary API