【问题标题】:How to Setting up visual studio 2010 to set as auto-increment version of project on each build如何设置 Visual Studio 2010 以在每个构建上设置为项目的自动增量版本
【发布时间】:2010-08-11 11:03:13
【问题描述】:

如何设置 visual studio 2010 以在每次构建时设置为项目的自动增量版本?

vs2010 上是否存在此功能?

【问题讨论】:

    标签: visual-studio-2010


    【解决方案1】:

    更改 AssemblyInfo.cs 文件:

    [assembly: AssemblyVersion("1.0.0.0")]
    [assembly: AssemblyFileVersion("1.0.0.0")]
    

    [assembly: AssemblyVersion("1.0.*")]
    //[assembly: AssemblyFileVersion("1.0.0.0")]
    

    【讨论】:

    • 唯一的问题是用*代替的数字并不总是递增。
    • 1.0.* 总是替换为 1.0.{date}.{time] 所以它应该总是递增的。
    • 此方法似乎适用于第一次重建,但之后没有任何变化。你会认为每次构建时“时间”都应该改变,但事实并非如此。
    【解决方案2】:

    正如其他人提到的,1.0.* 总是替换为 1.0.{date}.{time] 所以它应该总是递增(你会想到)

    在 VS2010 中,将 AssemblyVersion 更改为 [assembly: AssemblyVersion("1.0.*")] 有效,请注意您必须关闭解决方案/项目,重新打开它 然后重新构建它(不构建)以刷新/更改构建+修订值。

    日期/时间似乎是从项目打开时获得的,因此关闭/重新打开以刷新修订/构建值,我想如果您一次性更改项目中的各个位,这很有用并且它不会继续更改 AssemblyVersion 可能会破坏其他位。

    To return the date from the build value:
       DateAdd(DateInterval.Day, build, DateValue("01/01/2000"))
       ' build is the number of days from 1/1/2000
    To return the time from the revision value:
       Date.FromOADate(revision / 1800 / 24) 
       ' depending on your timezone you may have DST/BST issue with resulting time 
    

    【讨论】:

    • +1 提到您需要关闭并重新打开解决方案,这确实让新用户想知道为什么他们的内部版本号没有改变。
    • 给出的答案不适用于 Visual Studio 2010,这是 OP 要求的。
    【解决方案3】:

    AssemblyInfo.cs - 如果您使用 c/c++ 开发本机软件,则该文件不存在......因此,这个答案对于那里的大量开发人员来说毫无用处 - 可以查看 http://autobuildversion.codeplex.com .. . 但是这个扩展似乎不适用于 VS2010,尽管网站上另有说明——不过,如果你使用的是旧版本的 VS,你可能会很高兴

    【讨论】:

    【解决方案4】:

    我刚刚尝试了 autobuildincrement 方法,但在使用 Visual Studio 2010 时遇到了问题,但我找到了一种让它工作的方法。将“Increment Before Build 设置为 false。即使在 Visual Studio 2010 中,assempblyinfo.cs 文件也会在每次构建后更新。

    请注意,您的 dll 上的程序集信息不会在您第一次构建时发生变化,但之后会发生变化。

    【讨论】:

    【解决方案5】:
    DateTime.Parse(@"1/1/2000")
        .AddDays(FileVersionInfo.GetVersionInfo(
            System.Reflection.Assembly.GetEntryAssembly().Location
          ).FileBuildPart)
        .AddSeconds(FileVersionInfo.GetVersionInfo(
            System.Reflection.Assembly.GetEntryAssembly().Location
          ).FilePrivatePart * 2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-02
      • 2020-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多