无法加载type 'myinterface'从组装

本文关键字:myinterface 加载 type | 更新日期: 2023-09-27 17:50:11

我有一个解决方案,包括几个项目。在这个解决方案中,有几个库正在构建我的主要项目中使用的dll。

我的主要项目使用输出类型控制台应用程序构建。

这一切都很好。

当我改变构建输出类型为类库(因为我想使用这个项目作为一个插件最终)。该项目仍将构建,这次是构建一个dll。

当我在一个应用程序中使用这个插件,我使用它作为一个dll然而,它会运行到某个点,它试图加载在外部dll中定义的类型(所以不是由我的解决方案构建),并抛出异常:

Could not load type 'externalinterface' from assembly 'externallib, version=3.0.0.0, Culture=neutral, PublicKeyToken=null'.

dll都在正确的文件夹中,等等。

同样值得注意的是,这个插件是在另一个地方测试的,而不是在我构建它的地方。可执行文件仍然在此位置工作,dll/插件不工作。相同数量的dll在他们的文件夹等

编辑:我已经使用ILSpy (dll检查器)打开正在引用的实际dll(因此errormessage中的externalb)并检查'externalinterface'是否存在,并且它是。

EDIT2: 解决!加载我的插件的程序正在加载导致异常的相同dll。

无法加载type 'myinterface'从组装

加载的dll是另一个版本。

检查所引用的dll中是否存在externalinterface类型。

您没有包含应用程序抛出的异常的详细信息。但是,根据您提供的消息,似乎您的程序集没有强名称。如果试图将程序集作为插件加载的应用程序确实具有强名称,那么。net将要求它加载的所有程序集也具有强名称,因此您需要在继续之前将程序集配置为具有强名称。

可能目标机器中缺少'externalinterface'使用的一些受支持的dll。在目标机器中,检查输出文件夹中是否存在所有必要的dll。

或者盲目地将输出文件夹中的所有dll从代码工作的机器复制粘贴到有问题的目标机器上。在此之后,如果代码在目标机器中工作,那么尝试分析您错过了复制哪个支持dll。