使用引用同一程序集的多个MEFS插件时引发错误
本文关键字:插件 MEFS 错误 引用 程序集 | 更新日期: 2023-09-27 18:25:09
我有一个使用MEF的项目,允许开发人员添加不同的插件。这些插件中的许多都有类似的方法,需要做类似的事情,所以我在另一个名为PluginBase的项目中创建了一个基类,它们从中继承。所有插件都构建到同一目录(MEF加载其目录的地方),PluginBase dll也构建到该目录。
如果我在那个目录中只有一个插件,它工作得很好。如果我有多个引用PluginBase,我会得到错误:
{"Could not load type 'BCDTravel.API.PluginBase.PluginBase' from assembly 'TEST.API.PluginBase, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.":"TEST.API.PluginBase.PluginBase"}
这是我收到的唯一信息。
我猜如果我将PluginBase添加到GAC中,它会起作用,但我真的不明白问题是什么。这是程序集多次加载的问题吗?
谢谢!
问题是多次加载同一个程序集。将PluginBase
类所属的程序集放在应用程序的bin文件夹中,然后从那里将其添加到MEF目录中。仅从插件文件夹加载插件特定的程序集。