我正在努力全面了解程序集版本和强名称。净
我发现这篇程序集版本控制文章中只提到了少校。少数的版本匹配中使用内部版本。我找不到任何可以证实/否认这一点的东西。
程序集版本格式。。。修订:
具有相同名称的程序集,主要版本号和次要版本号,但要进行不同的修订以完全可互换。这将适合修复先前发布的程序集中的安全漏洞。
MS文章说:
程序集版本号是程序集标识的一部分,在绑定到程序集和版本策略中起着关键作用。。。版本检查仅发生在强命名程序集中。
这是否意味着1.0.0.0和1.0.0.1在强名称环境中是可互换的,而1.0.1.1不是?
请问确切的答案是什么?
在比较版本时,将完全评估程序集的AssemblyVersion
-属性。这意味着更改版本号的一部分将导致程序集不匹配。
解决此问题的一种方法是让AssemblyVersion
-属性始终保持不变,例如设置为[AssemblyVersion("1.2.3.0")]
,并使用AssemblyFileVersion
-属性更改版本,例如修订版,例如[AssemblyFileVersion("1.2.3.20120909")]
。这使您可以在不更新所有引用的情况下更新强名称程序集的版本。
我在链接的文章中没有发现任何内容表明只有Major。少数的版本匹配中使用内部版本。事实上,一个版本的所有四个组件都被使用了。
关键是intended to be interchangeable
。它们是否可以实际互换取决于作者,作者可以自由尊重或忽略MS指南。
安装在GAC中的共享程序集的供应商可以提供发布者策略文件,以将程序集的旧版本重定向到新版本。只有当新版本与旧版本向后兼容时,他才应该这样做。