我正在编写一个用于测试目的的插件架构(我知道有框架可以做到这一点),这就是我现在所做的:
我有一个由主程序和插件dll共享的公共库,我称之为PluginBase
程序集。
该程序集在MyPlugin
文件夹中的插件Debug\Plugins
中引用。
它也在主程序中引用,该程序位于文件夹Debug
。
问题是,当我动态加载PluginBase
中包含的接口时,它从位于Type
的程序集中获取接口的Debug\Plugins
对象。
但是当我尝试在主程序中使用相同的接口(IMyPlugin
)时,它会从位于PluginBase
文件夹中的Debug
程序集加载它。
当我尝试在主程序中使用该接口时,这会导致无效的强制转换异常。
文件夹结构:
\Debug\MainProgram.exe
\Debug\PluginBase.dll
\Debug\Plugins\MyPlugin.dll
\Debug\Plugins\PluginBase.dll
加载的场景是:
ServiceProvider
加载插件定义,ans还动态加载PluginBase
程序集中包含的接口(位于Debug\Plugins
)ServiceProvider
文件夹加载的)我尝试在Debug
文件夹中找到PluginBase
dll,但是由于Debug
dll在编译后被复制到PluginBase
文件夹,因此我遇到了编译问题我的插件项目。
此外,我认为这不是一个干净的方法。
有没有办法克服这个问题? (比如可能以某种方式设置构建顺序?)