我注意到在我的一些项目中有一些绑定重定向,它重定向到相同的“版本”号。
例如:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Reactive" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.0.10621.0" newVersion="1.0.10621.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
项目中充斥着这些重定向。
它们是多余的(因此可以删除它)吗?
我不确定他们是如何进入我的项目的。我自己没有打字,它是怎么到达那里的?
答案 0 :(得分:1)
当两个或多个单独构建的程序集引用同一个库时,绑定重定向很重要。例如,如果您的项目和外部nuget库都使用反应。您可以进入这样的情况:不同的组合都使用不同版本的RX,这将导致事情中断。
这个特殊的绑定重定向说的是:
如果程序集请求任何版本的System.Reactive小于1.0.10621.0,只需给它1.0.10621.0版本
这里的绑定重定向是为了确保所有以前版本的RX都绑定到您在应用程序中使用的版本。这可以防止绑定错误。
它很可能是一个引用RX的nuget包,它自动添加了这个,因为RX是一个相当常见的库,因此很可能被另一个程序集使用。
使用库进行此类操作存在一些问题,
我不是自动添加绑定重定向的忠实粉丝,但它可以隐藏人们在使用包时遇到的一些常见问题。
如果您可以删除重定向,答案可能是肯定的,除非您有不同库使用的多个RX版本。