问题描述
(在类似的帖子中没有回答!我已经检查了所有类似的答案)
请求是这样的:“首选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 (将#修改为@)