在.net 4.0中使用.Net 2.0 dll wpf应用程序

问题描述:

我想添加一个对.Net 2.0框架的WPF应用程序中.Net 2.0 DLL的引用。在.net 4.0中使用.Net 2.0 dll wpf应用程序

我将<startup useLegacyV2RuntimeActivationPolicy="true">添加到app.config文件中。 WPF应用程序生成良好,但在运行时尝试访问.Net 2.0 DLL时获取BadImageFormatException。

“试图加载程序格式不正确”

这一方法在新的测试WPF的项目,但我的应用程序不能正常工作。我的应用使用实体框架和MEF。这些技术能否导致这个问题?

任何想法?

编辑:解决

据阿洛伊斯下面的评论,我有我的主要的应用程序针对“任何CPU”和DLL是针对32位。

<startup useLegacyV2RuntimeActivationPolicy="true">是不需要

+2

难道这是程序集编译为32位,你正在加载到一个64位的过程,反之亦然?使用.NET Framework SDK中的corflags来检查。 – 2011-03-22 19:39:55

+0

@Alois:谢谢。我没有想到这一点。我的应用程序的目标是'任何CPU'。将其更改为x86可使其正确加载。 – Mike 2011-03-22 19:46:50

当必须使用useLegacyV2RuntimeActivationPolicy属性则您与被写入在C++/CLI混合模式组件工作且靶向CLR的2.0.50727版本。这样的程序集包含托管代码和本地机器代码。该机器代码在你的情况下是32位的,你不能在64位进程中运行它。这是例外的意思。在EXE项目中将平台目标设置为x86是必需的。

+0

是的。请参阅问题中的上述评论。已经发现我正在64位进程中加载​​32位代码。另外,useLegacyV2RuntimeActivationPolicy不是必需的。这只是32位问题。我能够删除useLegacyV2RuntimeActivationPolicy =“true” – Mike 2011-03-22 20:30:04