【发布时间】:2012-09-11 14:09:02
【问题描述】:
似乎 SGen 不使用来自父程序集的文件版本,而是使用 AssemblyVersion。如果您想保持强名称不变并通过 MSI API 兼容补丁发布,这是有问题的。
例如,如果添加了新数据类型,则需要在目标计算机上修补生成的 XmlSerializers 程序集。但是 MSI 只查看文件版本(相等)并且什么都不做。
有没有办法指示 SGen 使用源程序集中的文件版本?
例子:
源程序集:
[assembly: AssemblyVersion("2.0.0.0")]
[assembly: AssemblyFileVersion("35.0.0.0")]
生成的序列化程序程序集将在 PE Header for File 和 Product Version 中获得 2.0.0.0。这是错误的。
作为最后的手段,我会考虑修补生成的程序集的文件版本,但我确实担心如果程序集命名为强,它将不再加载(尚未尝试过),因为至少以前的 .NET 版本确实创建了一个包含 PE 头的完整文件的哈希。
【问题讨论】: