如何解决如何在运行时中将引用本地部署的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 举报,一经查实,本站将立刻删除。