.Net - 程序集绑定不适用于 net461 中的 Newtonsoft
.Net - Assembly Binding is not working for Newtonsoft in net461
我正在 NopCommerce 电子商务 Web 应用程序之上工作。目前,整个解决方案正在使用 Newtonsoft 10.0.3。我正在开发一个需要 Newtonsoft 12.0.1 的插件。所以我无法通过解决方案更新我的 newtonsoft。这可以通过程序集绑定来实现。但不确定,为什么它对我不起作用。
错误:
Could not load file or assembly 'Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified.
尝试过的方法:
在根项目的 web.config 中添加了以下配置。
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<codeBase version="10.0.3" href="Newtonsoft\v10.0.3\Newtonsoft.Json.dll" />
<codeBase version="12.0.1" href="Newtonsoft\v12.0.1\Newtonsoft.Json.dll" />
</dependentAssembly>
</assemblyBinding>
尝试通过将其设置为 true/false 来使用项目的自动生成绑定。
我需要为 Framework - Net461 (.Netcore) 做些什么吗?
或者我遗漏了一些愚蠢的东西?
在方法 1 中,您实际上没有重定向;尝试添加它,即
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
<!-- whatever else you need here -->
</dependentAssembly>
Presentation/Nop.Web/Plugins
中有一个 bin
文件夹,在尝试加载插件之前,nopCommerce 将插件的 dll 复制到其中。一个常见的问题是,如果两个或多个插件使用同名的 dll,除了最后一个之外的所有插件都会被其他插件替换。因此,我认为如果您检查该文件夹中的 dll,您将找不到具有所需版本的程序集。可以从以下选项中选择解决方案:
尽量用nopCommerce一样的程序集,入乡随俗!
不要使用 nuget,将 dll 文件复制到您的插件中,重命名并将其作为文件引用
我正在 NopCommerce 电子商务 Web 应用程序之上工作。目前,整个解决方案正在使用 Newtonsoft 10.0.3。我正在开发一个需要 Newtonsoft 12.0.1 的插件。所以我无法通过解决方案更新我的 newtonsoft。这可以通过程序集绑定来实现。但不确定,为什么它对我不起作用。
错误:
Could not load file or assembly 'Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified.
尝试过的方法:
在根项目的 web.config 中添加了以下配置。
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <codeBase version="10.0.3" href="Newtonsoft\v10.0.3\Newtonsoft.Json.dll" /> <codeBase version="12.0.1" href="Newtonsoft\v12.0.1\Newtonsoft.Json.dll" /> </dependentAssembly> </assemblyBinding>
尝试通过将其设置为 true/false 来使用项目的自动生成绑定。
我需要为 Framework - Net461 (.Netcore) 做些什么吗? 或者我遗漏了一些愚蠢的东西?
在方法 1 中,您实际上没有重定向;尝试添加它,即
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
<!-- whatever else you need here -->
</dependentAssembly>
Presentation/Nop.Web/Plugins
中有一个 bin
文件夹,在尝试加载插件之前,nopCommerce 将插件的 dll 复制到其中。一个常见的问题是,如果两个或多个插件使用同名的 dll,除了最后一个之外的所有插件都会被其他插件替换。因此,我认为如果您检查该文件夹中的 dll,您将找不到具有所需版本的程序集。可以从以下选项中选择解决方案:
尽量用nopCommerce一样的程序集,入乡随俗!
不要使用 nuget,将 dll 文件复制到您的插件中,重命名并将其作为文件引用