0

我正在开发一个带有插件的应用程序。我有一个包含所有 API 接口的单独 API 程序集。

主应用程序从 dll 动态加载插件:

object pi = Assembly.LoadFrom(plugin.AssemblyPath)
              .CreateInstance(plugin.ClassName);

然后我将它转换为实际的插件类型:

IPlugin pluginInstance = (IPlugin)pi;

当没有签署任何程序集时,所有这些都可以正常工作。一旦我签署它们(主应用程序、API 组件和插件组件),它就无法投射,抛出:

无法将“.MyPlugin”类型的对象转换为“.IPlugin”类型。

有什么建议么?

4

1 回答 1

0

知道了!问题是我在 API.dll 上有两个副本 - 一个在应用程序文件夹中,另一个在 Plugins 子文件夹中。当我删除 Plugins\API.dll 它已经开始正常工作了。

(不过,它在未签名模式下的两份副本上运行良好)

于 2009-11-02T21:28:12.280 回答