我有一个使用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它会起作用,但我真的不明白问题是什么。装配被多次装载是否有问题?
谢谢!
答案 0 :(得分:1)
问题是您多次加载同一个程序集。将您的PluginBase
类所属的程序集放在应用程序的bin文件夹中,然后从那里将其添加到MEF目录中。从Plugins文件夹中仅加载特定于插件的程序集。