我需要在同一项目中使用Nest 1.9.2(硬连接到Newtonsoft.Json 9.x)和Puppeteer(需要Newtonsoft.Json 10.x或更高版本)。
Nest实际上使用的是Newtonsoft.Json功能,该功能已在10.x中删除,因此我不能仅仅强制使用它。
那么,有没有办法在同一项目中使用多个版本的Newtonsoft.Json?
答案 0 :(得分:1)
如果您要谈论在一个项目中引用两个版本的DLL ,则有一种解决方法。您可以同时引用nuget程序包,然后在驱动程序应用程序(控制台,Web或Winform)配置文件中,可以添加绑定重定向以仅使用一个版本-只要您的依赖关系不中断。
如果您要谈论在同一应用程序中使用多个版本DLL ,那么this article. Although this article中指定的Kentico有3种方法,它应该可以帮助您解决您的查询。
1。在GAC中安装程序集
指定的自定义解析器逻辑将答案中的代码复制到此处以供参考:
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
...
static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
if (/*some condition*/)
return Assembly.LoadFrom("DifferentDllFolder\\differentVersion.dll");
else
return Assembly.LoadFrom("");
}
3。在应用程序的配置文件中使用CodeBase
在web.config中,您可以指定程序集绑定重定向。
您可以为每个版本创建两个文件夹,然后告诉您的应用程序引用特定版本的DLL所在的位置。
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="neutral" />
<codeBase version="1.0.0.0"
href="v1\myAssembly.dll"/>
<codeBase version="2.0.0.0"
href="v2\myAssembly.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
还有另一种指定方式at this MSDN blog.
希望这对您有所帮助。