gpt4 book ai didi

.net - 为什么不同版本的 Silverlight 程序集具有相同的版本号?

转载 作者:行者123 更新时间:2023-12-04 01:08:44 24 4
gpt4 key购买 nike

为什么不同版本的 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, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e

Location: ...\Silverlight\v4.0\Profile\WindowsPhone\System.Core.dll
Name: System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e

虽然标准 .net 有不同的版本号
Location: ...\Framework\v4.0.30319\System.dll 
Name: System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

Location: ...\Framework\v2.0.50727\System.dll
Name: System, Version=2.0.0.0, Culture=neutral, 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

关于.net - 为什么不同版本的 Silverlight 程序集具有相同的版本号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4434720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com