首页 新闻 会员 周边 捐助

请问类库开发如果加载不同版本的引用?

0
悬赏园豆:20 [待解决问题]

开发某软件插件(类库),由于那个软件有多个版本,并且引用了不同的版本的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的主页 东经115 | 初学一级 | 园豆:138
提问于:2025-06-22 11:19

在插件启动的位置添加:
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;
}

东经115 3周前
< >
分享
所有回答(1)
0

在配置里面配置一下,可以查看官方文档。

故事里的事那都不是事 | 园豆:584 (小虾三级) | 2025-06-26 16:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册