开发某软件插件(类库),由于那个软件有多个版本,并且引用了不同的版本的Newtonsoft.Json.dll,为了照顾大多版本,我程序也引用了其Newtonsoft.Json.dll 6.0版本,为了保证类库一致性,如何在高版本Newtonsoft.Json.dll 13.0 里,也让我的程序引用6.0版本呢?
园子里https://www.cnblogs.com/marvin/p/PutDllToSpecificFolder.html有几个不同方法,例如:“方法二:订阅程序集解析事件AssemblyResolve在代码中解析”,但类库开发其软件已经自动加载Newtonsoft.Json.dll了,再LoadFrom会报错。
其它方法里软件默认也是先从程序根目标加载,这样一加载就又是高版本了。
请问类库开发如果加载不同版本的引用呢?
在配置里面配置一下,可以查看官方文档。
在插件启动的位置添加:
– 东经115 3周前AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
在事件方法中添加:
– 东经115 3周前private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
if (args.Name.StartsWith("Newtonsoft.Json"))
{
AssemblyName assemblyName = new AssemblyName(args.Name);
return Assembly.LoadFrom(Path.Combine(@“YouPath\ref", "Newtonsoft.Json.dll"));
}
else if (args.Name.StartsWith("Xamarin.iOS") || args.Name.StartsWith("Mono.Android"))
return Assembly.LoadFrom(@"YouPath\ref");
else
return null;
}