1

我们使用与打印机设备接口的第 3 方混合模式程序集。

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

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

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。

有人对我可以调查的其他领域有什么建议吗?

4

2 回答 2

1

@tsells 是对的:缺少依赖项

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

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

从那里只需推断缺少哪个 DLL 并将其包含在第二个应用程序项目中。

于 2012-03-08T15:33:36.350 回答
1

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

于 2012-03-08T15:42:26.957 回答