2011-03-22 273 views
7

我想添加一個對.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

回答

2

當必須使用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

相關問題