我需要创建一个支持插件的ASP.NET应用程序。我之前编写过插件应用程序:
- 在主应用程序中指定所有插件DLL所在的文件夹
- 主应用程序包含一个基类PluginBase,它具有与插件交互所需的所有方法
- 每个插件都包含一个继承自PluginBase
的类
- 启动时,主应用程序遍历DLL文件,然后通过其类型,找到任何扩展PluginBase,创建它并以插件方式与插件交互的类型。或者,它可以使用MEF,这似乎更容易。
现在我需要将相同的概念扩展到具有包含.aspx页面的插件的ASP.NET应用程序。上面的范例并不真正有效:插件项目是ASP.NET应用程序,因此不能编译成单个DLL。虽然技术上可行,但我真的不认为这是正确的方法。虽然可以使用上述模式加载扩展PluginBase的类,但aspx页面似乎不起作用 - 我遇到了大量的运行时编译错误。
我尝试过以下方法:
- 我将项目文件夹复制到插件文件夹,而不仅仅是复制插件dll。我还将项目dll复制到同一个文件夹,因此我可以加载它并获得实际的插件类型
- 我的PluginBase包含一个抽象属性MainPagePath,插件将指定其入口页面的路径。我们的想法是,该插件所服务的每个其他页面都将从该页面链接。
但是,这种方法给了我运行时编译错误。我想知道是否有一个完善的范例来构建这种应用程序?