代码之家  ›  专栏  ›  技术社区  ›  Ogre Psalm33

使用Visual Studio和跟踪生成中的文件级版本控制。网?

  •  1
  • Ogre Psalm33  · 技术社区  · 17 年前

    我希望有一种工具或技术能够回答“使用哪个版本的文件X来构建Assembly abc.dll?”这个问题。我最近转到了。NET开发组,这个问题似乎一直在以某种形式出现,我们对此并不完全了解。有人会说“嘿,你的最新代码在测试服务器上吗?”答案不可避免地是“我不知道”。

    special keywords 例如可以放置在文件中的%I%(版本)和%M%(模块名称),每当签出文件时,这些信息都将被相应的SCCS版本信息替换。因此,您可以做的一个巧妙的技巧是在源文件中为“%I%%M%”分配一个常量字符串,编译,然后运行 Unix "strings" command 在生成的库中,确定用于构建该文件的文件的版本。

    public const String VERSION_STRING = "*VERSION* = MyClass 1.0";
    

    >for %f in (*.dll) do find "VERSION" %f
    

    但结果是:

    ---------- MYASSEMBLY.DLL
    VERSION_STRING
    

    这与我所追求的不太一样(它给了我常量的名称,但没有我试图手动嵌入类中的版本信息)。

    值得一提的是,我们目前正在使用Clearcase进行版本控制(目前是公司标准)。Clearcase有一些工具可以帮助我们(例如 clearaudit ),但这需要我们对构建过程进行一些改进和重组。我还应该提到,我们正在考虑试行颠覆。所以我想解决方案是可行的。NET在各种版本控制系统或构建环境(MSBuild、NAnt、CruiseControl)中都是公平的。

    还有其他的吗。NET为中心的解决方案,用于跟踪哪个文件的哪个版本进入了哪个程序集中?

    3 回复  |  直到 17 年前
        1
  •  1
  •   Community Mohan Dere    9 年前

    我们很快放弃了使用特殊关键字的想法,因为将元数据(如版本号)集成到数据(存储在VCS中的文件)中通常不是一个好主意(见SO问题中的辩论: Embedded Version Numbers - Good or Evil?

    我们的方法是用这种信息构建一份“发布说明”。然后,这个简单的文本文件与构建dll一起存储。

        2
  •  1
  •   GregC Benjamin Baumann    17 年前

    我对SubVersion和CC.NET持续集成服务器有积极的经验。

    您需要设置一个NAnt目标,获取最新的(它可以在这里锁定存储库),然后进行构建。构建完成后,它会在SVN中创建一个版本标记。

        3
  •  0
  •   Marc Gravell    17 年前

    [AssemblyVersion] / [AssemblyFileVersion] 程序集的属性。在运行时和通过资源管理器查询这些内容都很容易,更新它们的脚本也很容易——前几项任务 in here