作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这不是问题,而是关于程序集绑定(bind)重定向工作的一般理解问题。
查询
只有大版本有变化,新旧版本才会变化吗?
<dependentAssembly>
<assemblyIdentity name="FooBar"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<bindingRedirect oldVersion="7.0.0.0" newVersion="8.0.0.0" />
</dependentAssembly>
最佳答案
为什么需要绑定(bind)重定向?假设您有引用库 B 的应用程序 A,以及版本 1.1.2.5 的库 C。库 B 反过来也引用库 C,但版本为 1.1.1.0。现在我们发生了冲突,因为您不能在运行时加载同一程序集的不同版本。要解决此冲突,您可以使用绑定(bind)重定向,通常指向新版本(但也可以指向旧版本)。您可以通过将以下内容添加到应用程序 A 的 app.config 文件中,在 configuration > runtime > assemblyBinding
部分下(有关完整配置文件的示例,请参阅 here):
<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" />
现在引用1.1.1.0版本的C编译的库B在运行时将使用1.1.2.5版本的C。当然,你最好确保库 C 是向后兼容的,否则这可能会导致意想不到的结果。
您可以重定向任何版本的库,而不仅仅是主要版本。
关于c# - 程序集绑定(bind)重定向 : How and Why?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58183520/
我是一名优秀的程序员,十分优秀!