这个页面http://support.microsoft.com/kb/556041清楚地解释了AssemblyVersion和AssemblyFile版本之间的区别。
此外,此页面还说明何时更改这两个选项。我还是有个问题,
假设我使用汇编版本1交付了一个.Net组件,现在由于它经常更改,所以我只更改了AssemblyFileVersion。然后我复制我的新组件,CLR如何知道我的程序集版本没有改变。现在两个组件(旧的和新的)都有相同的assemblyVersions,那么CLR将如何识别要使用的组件呢?
发布于 2013-05-31 20:28:30
The CLR not to the AssemblyFileVersion (CLR不能正常工作,请注意此命令)。它只是一个参考编号,你可以在Windows资源管理器中看到它。通常的方法是在发货前重新生成程序集时递增它。保持小错误修复分离的方法。
最大的狗是AssemblyVersion,CLR非常关注这一点。当它在运行时找到程序集时,该版本的必须与您用来构建程序的引用程序集匹配。如果没有,则CLR假定发生了DLL地狱,并拒绝运行该程序。这对GAC也很重要,您可以在其中存储多个具有相同名称但不同版本的DLL。这是一个DLL地狱对策。
因此,当您在程序集的公共接口中进行重大更改时,必须递增AssemblyVersion。如果不重新编译或调整以处理更改,则可能会使使用程序集的程序失败。因此,用户将得到一个明确的错误信息,而不是某种难以诊断的异常。或者更糟糕的是,根本没有例外,只是无法诊断的不当行为。
确保AssemblyVersion递增是由您决定的。实际上,这样做并不容易,许多公司在发布更新时会自动递增AssemblyVersion,即使没有更改或更改没有中断。受.NET支持,在属性中使用星号(*)。这样更安全。但是还有一个额外的要求,那就是所有依赖的程序也要更新。这当然不是不寻常的事。
https://stackoverflow.com/questions/16853658
复制相似问题