dll的FileVersion和ProductVersion有什么区别?
特别是在运行时,是一个用于强绑定,另一个用于信息?
我想手动设置一个,另一个自动递增(通过我们的CI构建过程)
编辑:理查德在原始问题中回答了我错过的部分.这是我想要手动控制的汇编版本(通过界面更改递增),而它是我希望我的CI系统在每次构建时自动递增的文件版本.谢谢.
Joe*_*orn 27
文件作为较大项目的一部分进行分发.具有单独构建版本x的文件可能作为项目版本y的一部分进行分发.
详细说明:产品版本1.1的A.exe附带文件B.dll和C.dll.一切都从匹配的产品和文件版本开始.然后有人在产品中发现了一个严重的错误.开发人员查看它,并发布仅更新B.dll的修复程序.现在产品版本也可能更新到1.1.1以解释次要修复.而B.dll的文件版本也将是1.1.1.但A.exe和C.dll没有改变,所以他们的文件版本可能仍然是1.1.
Ric*_*ard 22
两者都不用于强绑定(完整/强名称的版本方面来自AssemblyVersion
属性).
文件版本(来自AssemblyFileVersion属性)和产品版本(来自AssemblyInformationalVersion属性)都对版本资源有贡献(如资源管理器的文件属性中所示).
除了用于显示/诊断目的之外,唯一真正的用途是由安装者验证应该替换的文件.
附录:为什么这些会有所不同?答:因为版本控制要求.保持程序集版本相同意味着更新版本(具有更高的文件版本)将无需更改即可绑定.这对序列化有很大影响(例如,持久化的工作流程).
如果所讨论的程序集不仅仅是一个产品的一部分(例如,可重复使用的第三方库),则文件和产品版本可能会有所不同,如果仅在单个应用程序中使用,则似乎没有理由不保持它们相同.
这两者之间还有一个区别:在文件版本中,您只能在版本部分中使用等于或大于 0 的整数。
在产品版本中,您可以使用任何文本,如果它不能解析为数字,它将产生警告,但根据 msdn 的警告是无害的。
现在为什么你不仅要在版本中使用数字?
好吧,根据语义版本控制 (semver.org) 版本如下所示: [Major].[Minor].[Patch] 并且在补丁中您可以使用:
归档时间: |
|
查看次数: |
18256 次 |
最近记录: |