代码之家  ›  专栏  ›  技术社区  ›  Jeff Cyr

.NET在每日生成中签入更新的assemblyinfo.cs是否更好?

  •  3
  • Jeff Cyr  · 技术社区  · 16 年前

    在我的工作中,源代码管理中每个项目的程序集版本都保持为1.0.0.0。当生成计算机生成新的每日生成时,它有更新程序集版本的任务,但不签入更新的assemblyinfo.cs。因此,在我们的开发人员机器上,我们正在编译的DLL的程序集版本总是设置为1.0.0.0。

    在源代码管理中保持程序集版本最新是最佳实践,还是我们已经做了正确的事情?

    每种可能性的利弊是什么?

    谢谢


    相关或重复:
    Should AssemblyInfo.cs be placed in version control?

    4 回复  |  直到 16 年前
        1
  •  3
  •   Doc Brown    16 年前

    反对的论点:

    • 您不能调试或测试依赖于正确的程序集版本的任何代码(如果您有这样的代码)

    顺便说一下,有一种更简单的方法可以确保所有程序集版本都是同步的:定义一个公共常量字符串” VersionMask “在公共课上 VersionInfo 在所有其他程序集引用并放置

    [assembly: AssemblyVersion(VersionInfo.VersionMask)]
    

    对于vb.net,在每个assemblyinfo.cs文件中(提供给您ar使用c),它是

    <Assembly: AssemblyVersion(VersionInfo.VersionMask)> 
    
        2
  •  2
  •   Hans Passant    10 年前

    这不正确,不应自动更新[assemblyversion]。当CLR正在寻找要加载的程序集的正确版本时,该属性在程序集解析过程中扮演着非常重要的角色。尽管这仅在程序集存储在GAC中时具有识别性。最好是只有当开发人员在程序集的公共接口中做了一个破坏性的更改时,才应该更改它,这会使它在一个应用程序中不可用,而该应用程序在其他情况下不会用更新的引用程序集重新编译。

    您始终可以更新[assemblyfileversion]。这也是在浏览器中查看“版本属性”选项卡时可见的版本。现在您也不再关心文件的签入。

    为了进行比较,对从.NET 2.0到.NET 3.5 SP1的.NET程序集执行了相同的操作。所有标准程序集都保持在程序集版本2.0.0.0,文件版本已更改数千次。然而,这些变化总是兼容的,这是一个很难遵循的行为。

        3
  •  0
  •   Cheeso    16 年前

    我的方法一直是,您应该能够通过访问源代码管理系统来构建它。因此,如果更新assemblyinfo.cs的脚本在源代码管理中,那么没有问题。

        4
  •  0
  •   Priyank Bolia    16 年前

    我想最好将版本存储在assemblyinfo.cs中,这样任何人都可以签出并构建正确的版本。 在dev env上具有相同的程序集版本。还可以在调试特定版本时创建问题。 另外.NET程序集版本也很重要,因为如果没有正确的版本dll,程序集将无法加载,这也将有助于调试。

    推荐文章