如何在运行时中将引用本地部署的dll转换为GAC版本?

问题描述

(在类似的帖子中没有回答!我已经检查了所有类似的答案)

请求是这样的:“首选GAC程序集版本,如果不存在,请使用已部署的版本。”

(我知道这里存在多个问题,例如哪个版本与当前代码兼容等,但是我们不要去那里了,假设我们生活在巧克力工厂中)

让我举例说明。我有一个此类的本地项目,该项目继承自第3方dll:

public class MyLocalClass: ThirdPartyAbstractClass 
{
   public int GetVersion => return base.Version;
}

v1的{​​{1}}中,抽象类返回ThirdParty.dll,在1中,抽象类返回v2
现在,我已经使用自己拥有的dll-2构建了本地项目。但是,一旦部署在服务器上,代码应识别出GAC中有一个v1,并且应该使用该版本,因此在代码运行时它将显示v2。如果同一程序在GAC中没有该程序集的其他服务器上运行,则应显示2

当前想法:
由于我无法从AppDomain卸载dll,因此唯一想到的是在编译时完全不要引用它,并在启动时动态加载它(1 +遍历.LoadFrom()文件夹最新版本并使用其路径;如果找不到,请使用本地版本)。继承问题必须通过一些使用反射来实现程序集实现的代理类来解决。

此解决方案在创建这些代理方面需要大量工作...还有其他方法可以解决此问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...