1

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

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

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

谢谢,克里斯

4

2 回答 2

0

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

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

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

于 2013-04-20T20:13:40.350 回答
0

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

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

于 2013-04-20T19:11:16.297 回答