这不是问题,而是关于程序集绑定重定向工作的一般理解问题。
查询
为什么绑定重定向只显示主要版本而不是次要版本号和修订号?新旧版本是否只有在主要版本发生变化时才会发生变化?
oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0"
为什么需要绑定重定向?假设您有引用库 B 的应用程序 A,以及版本 1.1.2.5 的库 C。库 B 反过来也引用库 C,但版本为 1.1.1.0。现在我们有一个冲突,因为你不能在运行时加载同一个程序集的不同版本。要解决此冲突,您可以使用绑定重定向,通常是到新版本(但也可以是旧版本)。为此,您可以将以下内容添加到应用程序 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 向后兼容,否则可能会导致意外结果。
您可以重定向任何版本的库,而不仅仅是主要版本。
我们遇到了 NewtonSoft.Json 的绑定重定向问题。我们在win 10文件属性“9.0.1.19813”中查找了文件版本,查找了数字,重定向一直失败。进一步调查发现我们正在查看文件版本而不是程序集版本。所以,我想知道人们是否误认为文件版本(经常更改)和程序集版本(您在 Windows 10 文件资源管理器中看不到)。要查看 dll 的汇编版本,您可以在 powershell 中运行它。将 dll 名称替换为您要为其查找版本的名称。
[Reflection.AssemblyName]::GetAssemblyName('C:\development\bin\Newtonsoft.Json.dll').Version
上面的结果是。
Major Minor Build Revision
----- ----- ----- --------
9 0 0 0
请参阅参考资料:
How can i see the assembly version of a .NET assembly in Windows Vista and newer (WIndows 7, 2008)?
https://support.microsoft.com/en-nz/help/556041
https://i.stack.imgur.com/jR6cv.jpg
不定期副业成功案例分享