【问题标题】:How to reference a dll that may be missing如何引用可能丢失的 dll
【发布时间】:2013-04-20 15:53:47
【问题描述】:

我们有一个学习管理系统,它作为一个模块集安装到 DotNetNuke 框架中。我们想为我们的 LMS 添加一些扩展,这些扩展利用了第三方模块提供的一些 API 调用。第三方模块非常昂贵,并非我们所有的客户都愿意购买。因此,如果第三方模块不存在,我们将不得不使扩展成为可选并禁用它们。

这是我的问题。我们如何构建我们的软件,以便它可以在存在或不存在第三方 DLL 的情况下运行?如果我们为 API 方法引用第三方 DLL,那么我认为如果没有安装第三方模块,即使我们禁用了这些功能,也会出现运行时错误。

对于未安装第三方模块的客户端,我们如何避免运行时错误?

谢谢, 克里斯

【问题讨论】:

    标签: .net dll reference dotnetnuke


    【解决方案1】:

    您可能需要Reflection,而不是在编译时引用第三方DLL,使用“添加引用”,在运行时使用Assembly.Load 方法动态加载它。

    如果客户端已经安装了所需的框架 - 做任何你需要的,如果没有 - 没有编译或其他错误。

    【讨论】:

      【解决方案2】:

      如果您不执行任何调用程序集的代码,您的应用将在没有程序集的情况下运行。即使没有做任何反射技巧。

      我过去通过保证没有代码调用依赖注入和应用程序启动时的第 3 方程序集,不注册任何引用第 3 方的实现来做到这一点。相反,注册一个不同的实现或存根实现。

      或任何其他保证调用第三方的代码不会被调用的方法。

      【讨论】:

        猜你喜欢
        • 2017-01-31
        • 1970-01-01
        • 2011-10-24
        • 1970-01-01
        • 2016-05-16
        • 1970-01-01
        • 1970-01-01
        • 2013-08-23
        • 2017-06-28
        相关资源
        最近更新 更多