这不是问题问题,而是有关程序集绑定重定向工作的一般理解问题。
查询
<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向后兼容,否则可能导致意外结果。
您可以重定向任何版本的库,而不仅仅是主要版本。