一个进程中的不同版本的企业库
我们正在为Autodesk Inventor开发一个插件。 我们的软件是一系列在运行时加载到Inventor中的dll程序集。 我们决定使用Microsoft Enterprise Library 5.0进行日志记录和异常处理。
现在我们遇到了一个问题,因为事实证明Inventor 2013使用Enterprise Library 4.1。 当我们的加载项加载时,它无法加载程序集的正确版本,因为Inventor的Bin目录中已经有一个旧版本。
我们到目前为止所考虑的选项:
两者都很糟糕,而且我的想法已经枯竭,所以我正在寻求帮助。
选项1引发了这个问题:企业库是向后兼容的,并且将替换Bin文件夹中的那些DLL导致问题? 我已经尝试过了,Inventor没有抱怨,并按预期工作(没有检查EL功能)。
选项2使我们可以使用旧版本并将我们绑定到Autodesk正在使用的版本,因此我们必须在升级时观察它们,特别是在它们发布新版本的Inventor时。
这种情况下的最佳做法是什么?
更新:
我们通过将更新版本的企业库放入GAC来解决此问题。 我认为这里发生的事情是,.NET试图首先加载旧版本(因为它在汇编搜索顺序中更高),并且在失败之后从未进一步寻找适当的版本。 在GAC中时,它正确地解决。
从我所看到的情况来看,合理的解决方案是嵌入程序集并使用ResourceManager类访问它们,这将允许您在维护父项目日志记录机制的同时使用较新的版本。
您可能会发现这个问题很有用:将程序集嵌入另一个程序集中
链接地址: http://www.djcxy.com/p/66037.html上一篇: Different versions of Enterprise Library in one process