外部组件引发了第三方程序集的异常

时间:2012-03-08 00:38:22

标签: c# winforms mixed-mode

我们使用与打印机设备连接的第三方混合模式组件。

在我们的一个应用程序中,程序集正常运行。

在另一个应用程序中,它产生了以下异常:

Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.

在做了一些研究之后,我发现我可以将以下内容添加到app.config文件中以解决此问题:

<startup useLegacyV2RuntimeActivationPolicy="true">

(已在其app.config中使用此设置的应用程序)

虽然这确实解决了“混合模式组装”问题,但现在我看到了一个不同的问题:

External component has thrown an exception

奇怪的是,我有一个应用程序正常工作,另一个应用程序没有。他们都通过相同的代码(这是我们的另一个程序集)调用第三方程序集。

我尝试创建一个非常简单的测试应用程序,该应用程序使用相同的代码路径调用第三方程序集,并且它也因“外部组件引发了异常”错误而失败。

我已经比较了所有应用程序的app.config文件,它们本质上是相同的,我已经仔细检查过每个应用程序的所有构建设置都是相同的。这两个项目都针对.NET 4.0和X86。

这两个应用程序显然有所不同,但我不知道它是什么。

开发环境是Visual Studio 2010。

有没有人对我可以调查的其他方面有任何建议?

2 个答案:

答案 0 :(得分:1)

@tsells是对的:缺少依赖

有问题的第三方程序集依赖于第一个应用程序bin文件夹中存在的另一个DLL。

我将工作应用程序bin文件夹中的所有文件复制到非工作应用程序的bin文件夹,它解决了问题。

从那里开始,只需要推断出哪个DLL丢失并将其包含在第二个应用程序项目中。

答案 1 :(得分:1)

当缺少依赖项时,可以使用CheckAsm等托管工具和非托管库Dependency Walker来检查依赖项。