注:这是我上一篇文章的续集:Complicated API issue with calling assemblies dynamically
我正在编写一个运行在网络上并使用Server保存和提取数据的.Net windows窗体应用程序。
我想提供一个迷你的“插件”API,开发人员可以在这里构建自己的程序集并实现特定的接口(IDataManipulate)。然后,我的应用程序可以使用这些程序集调用IDataManipulate.Execute()。
我决定采用解决方案3:
将dll字节保存为byte[]到数据库,并在每次用户启动应用程序时在本地PC上重新创建dll。
所以这就是我要做的
database.
问:如何从IDataManipulate.Execute()).
所有操作都正常;除了这个问题之外,dll是加载的,我可以调用IDataManipulate.Execute():
问题
当我从主程序集中调用IDataManipulate.Execute()时,我会得到一个错误,例如“我不能从这个程序集加载xxxx类型”。无法加载的类型属于引用的程序集之一,而不是主程序集。
为什么会发生这种事?
有什么建议吗?
谢谢
发布于 2010-05-24 14:42:04
要回答第一个问题,可以检查引用程序集的位置,并且只有在数据库位于同一个文件夹时才能将其添加到数据库中。
发布于 2012-03-30 21:51:23
有点晚,但也可以检查程序集的PublicKeyToken。我相信,.net有三种令牌。您可以通过查看windows框架文件夹找到它们。这样,如果需要,可以将程序集包含在其他文件夹中。
也就是说,我可能会要求开发人员将它们放在同一个文件夹中。如果他们决定包括大型第三方库,如不碎片整理或诸如此类。这样,它们就必须在导入之前将程序集明确地移动到文件夹中,从而使它们知道自己在做什么。
https://stackoverflow.com/questions/2897746
复制相似问题