【问题标题】:why is windows file version different from actual assembly version for a C++/CLR assembly为什么 Windows 文件版本与 C++/CLR 程序集的实际程序集版本不同
【发布时间】:2012-10-19 07:32:52
【问题描述】:

我有一个第 3 方 C++/CLR 程序集。当我右键单击 dll 时,版本选项卡显示 5.32.1,但当 ILSpy 中的元信息显示 5.0.0 时。为什么会有这种差异?哪个是正确的?

【问题讨论】:

    标签: clr assemblyversions ilspy


    【解决方案1】:

    在 Windows 资源管理器的属性选项卡中显示的文件版本对应于 .NET 程序集 AssemblyInformationalVersion 属性。 AssemblyVersion 是一个独立的东西。

    当然,两者都不比另一个更正确,开发者可以独立设置。

    对于AssemblyVersion,当前的做法似乎大致是“具有相同major.minor 版本的程序集应该是兼容的”,但实际上并没有强制执行此规则。


    必要的更正:实际上,当前 CLR 程序集绑定强制执行的策略是 整个 程序集版本应该匹配以便可加载,因此兼容的程序集应该具有 相同 程序集版本。更多主题:What are differences between AssemblyVersion, AssemblyFileVersion and AssemblyInformationalVersion?

    【讨论】:

    • 当我使用代码库标签作为版本时,我知道它使用 AssemblyVersion 来匹配和加载文件,否则会失败。
    • 当我在我的配置中依赖 AssemblyInformationalversion 加载文件时遇到了问题......但它失败了。唉,它的微软..
    • 是的,当你引用一个 .NET 程序集时,你可能说你想要一个特定的版本
    • app.config、发布者策略、machine.config - 都将版本属性解释为 AssemblyVersion
    • @user:哦,是的,在 .NET 世界中AssemblyInformationalVersion 似乎被忽略了,并且可能只存在于属性选项卡显示中。似乎很奇怪。
    猜你喜欢
    • 2011-04-10
    • 2010-09-19
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多