程序集绑定重定向:如何以及为什么?
这不是问题问题,而是有关程序集绑定重定向工作的一般理解问题。
- 为什么绑定重定向仅显示主要版本而不显示次要版本,内部版本和修订版本号?
- 仅当主要版本发生变化时,旧版本和新版本才会更改吗?
<dependentAssembly>
<assemblyIdentity name="FooBar"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<bindingRedirect oldVersion="7.0.0.0" newVersion="8.0.0.0" />
回答:
为什么根本需要绑定重定向?假设您有引用库B的应用程序A,还有版本1.1.2.5的库C。库B依次也引用库C,但版本为1.1.1.0。现在我们有了冲突,因为您无法在运行时加载同一程序集的不同版本。要解决此冲突,您可以使用绑定重定向,通常是重定向到新版本(但也可以是旧版本)。您可以通过将以下内容添加到应用程序A的app.config文件下的`configuration
runtime > assemblyBinding`部分中(请参阅此处以获取完整配置文件的示例)来做到这一点:
<dependentAssembly> <assemblyIdentity name="C"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<bindingRedirect oldVersion="1.1.1.0" newVersion="1.1.2.5" />
</dependentAssembly>
您还可以指定要映射的版本范围:
<bindingRedirect oldVersion="0.0.0.0-1.1.1.0" newVersion="1.1.2.5" />
现在,库B(参考1.1.1.0版的C编译)将在运行时使用1.1.2.5版的C。当然,您最好确保库C向后兼容,否则可能导致意外结果。
您可以重定向任何版本的库,而不仅仅是主要版本。
以上是 程序集绑定重定向:如何以及为什么? 的全部内容, 来源链接: utcz.com/qa/417355.html