加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 一个进程中不同版本的Enterprise Library

发布时间:2020-12-15 07:41:05 所属栏目:百科 来源:网络整理
导读:我们正在为Autodesk Inventor开发一个加载项.我们的软件是一堆在运行时加载到Inventor中的dll程序集.我们决定使用Microsoft Enterprise Library 5.0进行日志记录和异常处理. 现在我们遇到了一个问题,因为事实证明Inventor 2013使用的是Enterprise Library 4.
我们正在为Autodesk Inventor开发一个加载项.我们的软件是一堆在运行时加载到Inventor中的dll程序集.我们决定使用Microsoft Enterprise Library 5.0进行日志记录和异常处理.

现在我们遇到了一个问题,因为事实证明Inventor 2013使用的是Enterprise Library 4.1.加载加载项时,无法加载正确版本的程序集,因为Inventor的Bin目录中已有旧版本.

我们到目前为止考虑的选项:

>在部署我们的产品期间,覆盖Inventor的Bin文件夹中的旧库
>在我们的装配中使用EL 4.1

两者都很糟糕,我的想法已经不多了,所以我正在寻求帮助.

选项1提出了这个问题:企业库是向后兼容的,并且会替换Bin文件夹中的那些DLL导致问题吗?我已经尝试过,Inventor没有抱怨并按预期工作(没有检查EL功能).

选项2使我们使用旧版本并将我们绑定到Autodesk使用的版本,因此我们必须在升级时观看,特别是当他们发布新版本的Inventor时.

这种情况下的最佳做法是什么?

更新:
我们通过在GAC中添加较新版本的Enterprise Library解决了这个问题.我认为这里发生的事情是.NET尝试首先加载旧版本(因为它在汇编搜索顺序中更高)并且在失败之后再也没有去寻找合适的版本.在GAC中时,它会正确解析.

解决方法

从我所看到的,一个合理的解决方案是嵌入程序集并使用ResourceManager类访问它们,这将允许您在维护父项目日志记录机制的同时使用较新的版本.

您可能会发现此问题很有用:
Embedding assemblies inside another assembly

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读