托管可扩展性框架(MEF)和托管AddIn框架(MAF,又名System.AddIn)似乎完成了非常类似的任务.根据这个Stack Overflow问题,MEF是System.Addin的替代品吗?,你甚至可以同时使用两者.
你什么时候选择使用一个与另一个?在什么情况下你会选择同时使用它们?
我想提供一些在我的软件中创建动态可加载插件的方法.执行此操作的典型方法是使用LoadLibrary WinAPI函数加载DLL并调用GetProcAddress以获取指向该dll内的函数的指针.
我的问题是如何在C#/ .Net应用程序中动态加载插件?
我正在用C#编写一个Addin框架,我想知道如何在不需要重新启动应用程序的情况下使Addin无法加载.
我听说过AppDomains但这些有用吗?Addin可以添加可扩展性类,并且可以通过接口在主AppDomain中调用,并且仍然可以卸载并调用清理代码,导致这些类被删除而该程序集不在主AppDomain中吗?
或者是否有其他方法可以实现无法加载的插件,但是除了AppDomain之外的IIRC,你无法卸载组件.
如果可能的话,我还希望插件引擎与Mono兼容,所以如果可以的话,任何答案都会尝试与Mono保持兼容.