【问题标题】:What is the AssemblyFileVersion used for in C#?在 C# 中使用的 AssemblyFileVersion 是什么?
【发布时间】:2010-11-21 04:45:31
【问题描述】:

在 assemblyInfo.cs 我有 AssemblyVersion 和 AssemblyFileVersion。

通常我只是像这样增加 AssemblyVersion。 第一个数字:主要变化 第 2 位:微小变化 第三位:错误修复 第 4 位:Subversion 修订号

但是,我想知道 AssemblyFileVersion 的用途是什么,什么时候需要增加。应该和assemblyVersion一样吗?

如果我不使用它,我应该把它注释掉吗?

非常感谢您的建议,

【问题讨论】:

    标签: c# assemblyversionattribute assemblyfileversion


    【解决方案1】:

    AssemblyVersion 由 .NET 类加载器使用并标识程序集的 .NET 版本。 AssemblyFileVersion 表示 Windows PE 文件的标准 VERSION_INFO 块中包含的文件版本...换句话说,它表示文件属性对话框中显示的文件版本。

    如果省略 AssemblyFileVersion,编译器将默认它与 AssemblyVersion 相同。

    【讨论】:

    • 我没有使用它。仅仅将其注释掉就完全安全了?
    • 它不会破坏你的构建。从维护的角度来看,最好能够识别程序集的文件版本(例如,用版本映射错误)。
    • 它还可以帮助防止运行时出现依赖问题,因为如果依赖的文件版本不正确,您的项目将无法构建。
    • @robUK:是的,您可以将其注释掉。然后,编译器会为您将其放入与 AssemblyVersion 中的值相同的 VERSION_INFO 块中。
    • @Russell:从维护的角度来看,文件版本可能会有所帮助,但如果不提供,它将默认为程序集版本,您仍然可以识别版本。至于依赖问题,这是基于程序集版本,而不是文件版本。
    【解决方案2】:

    通常文件版本比汇编版本更精确。例如:System.Windows.Form.dll - 程序集版本:2.0.0.0,文件版本:2.0.50727.3053。

    程序集版本是加载程序集时的重要信息。

    因此,如果您在其中一个引用的程序集中发现了一个小错误。您修复了错误,更新了文件版本,但您保留了相同的程序集版本。优点:您不必将对该程序集的引用重新链接到新版本,并且通过文件版本,您可以知道文件的当前版本。

    【讨论】:

    • 真正令人恼火的是,Assembly.cs 中的 File Version 条目不像 Assembly Version 那样接受 .*。
    【解决方案3】:

    安装程序将使用 AssemblyFileVersion 来确定是否根据版本覆盖文件。

    请务必注意,在尝试从先前版本反序列化时,更改实现序列化的程序集的 AssemblyVersion 会产生一些严重后果。

    【讨论】:

      【解决方案4】:

      我不是专家,我可能不是在引用专家,但据我了解,从广义上讲,AssemblyVersion 是关于“接口”-> 程序集的作用、向后兼容性等。AssemblyFileVersion 是更多地与实现、构建等有关。

      使用 AssemblyVersion 属性指定“Last Compatible-To”版本,使用 AssemblyFileVersion 属性指定构建版本。”

      ->http://www.shitalshah.com/blog/IsJeffRichterScrewingUpTheNetVersioning.aspx

      //哦,还有一件事。

      在某些情况下(我不太清楚,因为我只听说过但没有实际体验过)如果您尝试使用 GAC 中的 dll 更新应用程序,旧版本的 dll 将获胜'不会被具有相同程序集版本号的新版本覆盖,除非文件版本已更改。 (那句话够复杂吗?来晚了……)

      【讨论】:

        【解决方案5】:

        AssemblyFileVersion 用于在你的 Win32 资源中设置版本信息 二进制文件,打开文件的属性窗口时看到的那个 在资源管理器中。

        【讨论】:

          猜你喜欢
          • 2010-10-16
          • 2021-04-25
          • 1970-01-01
          • 2011-03-07
          • 1970-01-01
          • 2010-09-09
          • 2021-10-28
          • 2016-12-08
          • 2010-12-23
          相关资源
          最近更新 更多