在C#中使用的AssemblyFileVersion是什么?

在C#中使用的AssemblyFileVersion是什么?,c#,assemblyversionattribute,assemblyfileversion,C#,Assemblyversionattribute,Assemblyfileversion,在assemblyInfo.cs中,我有AssemblyVersion和AssemblyFileVersion 通常我只是像这样增加AssemblyVersion。 第1位:重大变化 第二位:微小变化 第三位数字:错误修复 第4位:Subversion版本号 但是,我想知道AssemblyFileVersion的用途是什么,以及何时需要增加。它应该与assemblyVersion相同吗 如果我不使用它,我是否应该将其注释掉 非常感谢您的建议,AssemblyVersion由.NET类装入器使用,

在assemblyInfo.cs中,我有AssemblyVersion和AssemblyFileVersion

通常我只是像这样增加AssemblyVersion。 第1位:重大变化 第二位:微小变化 第三位数字:错误修复 第4位:Subversion版本号

但是,我想知道AssemblyFileVersion的用途是什么,以及何时需要增加。它应该与assemblyVersion相同吗

如果我不使用它,我是否应该将其注释掉


非常感谢您的建议,

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


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

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

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

加载程序集时,程序集版本是一个重要信息


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

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


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

我不是专家,也可能没有引用专家,但根据我的理解,广义上讲,AssemblyVersion是关于“接口”->程序集的功能、向后兼容性等,而AssemblyFileVersion则更多地涉及实现,即构建等

使用AssemblyVersion属性指定“上次兼容到”版本,使用AssemblyFileVersion属性指定生成版本

->

//哦,还有一件事


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

我没有用它。这么说来完全安全?它不会破坏你的身材。从维护的角度来看,能够识别程序集的文件版本是很好的(例如用版本映射错误)。这也有助于防止运行时出现依赖问题,因为如果依赖项的文件版本不正确,您的项目将无法生成。@robUK:是的,您可以对其进行注释。然后,编译器将负责为您将文件以与AssemblyVersion中相同的值放入VERSION_INFO块。@Russell:从维护的角度来看,文件版本可能会有所帮助,但由于如果不提供文件版本,它将默认为程序集版本,您仍然能够识别版本。至于依赖性问题,这是基于程序集版本,而不是文件版本。真正令人恼火的是,assembly.cs中的文件版本条目不接受。*就像程序集版本一样。