我们正在为 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 中解决了这个问题。我认为这里发生的事情是 .NET 尝试首先加载旧版本(因为它在程序集搜索顺序中更高)并且在失败后再也没有进一步寻找合适的版本。在 GAC 中,它可以正确解析。