【问题标题】:Is it possible to change the version format of a C# project?是否可以更改 C# 项目的版本格式?
【发布时间】:2009-07-29 20:17:56
【问题描述】:

代替major.minor.build.revision 格式,我想使用日期和时间作为版本号。更像是日.月.年.时间。有没有办法改变 AssemblyInfo.cs 中 AssemblyVersion 属性的格式?

【问题讨论】:

    标签: c# .net visual-studio-2005 assemblyinfo


    【解决方案1】:

    你可以在里面放任何你想要的数字(只要它们不会溢出内存中包含它们的数据类型)并随意调用它们。但是,我不确定您为什么要这样做,因为标准格式通常会在 build 字段中存储某种形式的日期。

    例如,这里是我工作时使用的汇编版本格式:

    5.1.729.1

    这告诉我这是库 5.1 版的程序集,于 7 月 29 日构建,是当天的第一个构建。同一天的后续构建只需增加 revision 字段。

    【讨论】:

    • +1 - 好答案。如果您真的希望版本基于日期,则 Build 是自 2000 年 1 月 1 日以来的天数,而 Revision 是自午夜以来的半秒数。 DateTime.Parse("2000-01-01").AddDays(version.Build).AddSeconds(version.Revision * 2) 将为您提供构建日期和时间
    • 不过,这不是一种容易辨别的格式。如果该版本能够像现在这样自动递增,只需使用日期和时间而不是内部版本号,那就太好了。我想我应该更好地表述这个问题:我想更改自动生成的版本号的格式。
    • 哇,在添加我自己的之前应该阅读其他评论。这正是我所需要的,斯科特。
    • 另一种方法是使用 9210,因为内部版本号 9 是当前年份,210 是年份中的某一天。这让您在内部版本号重复之前有更多时间。另见:paulvanbrenk.com/buildday
    【解决方案2】:

    最简单的方法是编写您自己的构建任务来处理此问题,然后让 .csproj 文件调用您的任务以使用您的默认规则对其进行更新。 using a custom MSBuild task to increment version numbers 上有一篇文章可以作为指南。过去我们在这里做过类似的事情,发现效果很好。

    不过,我不相信 VS2005 中包含任何工具可以做到这一点。

    【讨论】:

      【解决方案3】:

      我建议坚持AssemblyVersion 等所使用的版本号的现有方案 - 它们具有众所周知的含义,并且可能会混淆人们反对它们。

      但是,您可以轻松创建自己的程序集级属性并将其用于您的日期/时间。不幸的是,DateTime 类型无法嵌入到元数据中,因此您最好使用字符串 - 但您的属性可以在执行时将其转换为 DateTime

      【讨论】:

        【解决方案4】:

        您可以在构建脚本中构建相关的 assemblyinfo 代码片段——使用 IronPython 或 F# 作为脚本工具非常简单。

        【讨论】:

          【解决方案5】:

          如果您想使用脚本或类似的东西自动更改这些版本。我建议使用http://www.codeproject.com/KB/macros/versioningcontrolledbuild.aspx

          它也可以从命令行运行。

          【讨论】:

            猜你喜欢
            • 2015-08-16
            • 2019-04-30
            • 1970-01-01
            • 2021-10-01
            • 2012-02-10
            • 1970-01-01
            • 2010-09-23
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多