.net 如何引用可能丢失的dll

.net 如何引用可能丢失的dll,.net,dll,reference,dotnetnuke,.net,Dll,Reference,Dotnetnuke,我们有一个学习管理系统,它作为一个模块集安装到DotNetNuke框架中。我们希望向LMS添加一些扩展,这些扩展利用第三方模块提供的一些API调用。第三方模块非常昂贵,并非所有客户都愿意购买。因此,如果第三方模块不存在,我们必须使扩展成为可选的,并禁用它们 这是我的问题。我们如何构造我们的软件,使其能够在有或没有第三方DLL的情况下运行?如果我们为API方法引用第三方DLL,那么我认为如果没有安装第三方模块,即使我们禁用了这些功能,也会出现运行时错误 对于未安装第三方模块的客户端,如何避免运行时

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

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

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

谢谢,
Chris

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


如果客户端安装了所需的框架-执行任何需要的操作,如果不执行,则无编译或其他错误。

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

在过去,我通过保证不使用依赖项注入和在应用程序启动时对第三方程序集进行代码调用来实现这一点,并且不注册任何引用第三方的实现。相反,请注册不同的实现或存根实现

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