为什么不同版本的Silverlight程序集具有相同的版本号?
Location: ...\Silverlight\v3.0\System.Core.dll Name: System.Core,Version=2.0.5.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e Location: ...\Silverlight\v4.0\System.Core.dll Name: System.Core,PublicKeyToken=7cec85d7bea7798e Location: ...\Silverlight\v4.0\Profile\WindowsPhone\System.Core.dll Name: System.Core,PublicKeyToken=7cec85d7bea7798e
虽然标准的.net有不同的版本号
Location: ...\Framework\v4.0.30319\System.dll Name: System,Version=4.0.0.0,PublicKeyToken=b77a5c561934e089 Location: ...\Framework\v2.0.50727\System.dll Name: System,Version=2.0.0.0,PublicKeyToken=b77a5c561934e089
解决方法
使用.NET,对于已签名(.snk)程序集,您不会更改程序集版本号的第一个原因是确保程序集的强名称保持不变.这样一来,不用混淆.config文件或自定义策略,任何使用引用程序集构建的客户端仍然能够加载而不会抱怨.
默认情况下(不定义assemblies redirections),如果更改版本,您的程序集的强名称也将被更改,并且所有现有的程序集根据以前的版本构建将无法运行.
如果您从不更改版本,那么您必须确保不会使用不同的类或方法签名来破坏相同的客户端.
这就是为什么大多数时候,开发人员倾向于保持相同的版本…永远,当有可能时,这对于CoreCLR(Silverlight的CLR)以及.NET CLR是正确的.
在.NET CLR的情况下,他们更改版本的事实实际上为现有的.NET应用程序带来了一些问题.有时,现有的.NET 2应用程序需要将它添加到.NET 4上下文中的.config文件中:
<configuration> <startup> <supportedRuntime version="v4.0.30319" /> </startup> </configuration>
你可以看一下这篇文章,解释这一切如何复杂在幕后:Version Compatibility in the .NET Framework
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。