2010-10-12 54 views
2

我有一個使用VS2008創建的項目。我試圖用MSBuild 4.0來構建它,但仍然以3.5框架爲目標。當我這樣做時,我得到了以下例外:爲什麼在使用MSBuild 4.0編譯.NET3.5項目時遇到BadImageFormatException

[exec] ResGen:error RG0000:無法加載引用程序集「C:\ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ PresentationUI \ v4.0_4.0.0.0__31bf3856ad364e35 \ PresentationUI.dll」。捕獲到一個BadImageFormatException,指出「無法加載文件或程序集」C:\ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ PresentationUI \ v4.0_4.0.0.0__31bf3856ad364e35 \ PresentationUI.dll或其依賴項之一。比當前加載的運行時更新的運行時,並且無法加載。「

請注意,它試圖加載PresentationUI.dll的4.0版本,即使我正在編譯3.5框架。如果我將該項目轉換爲VS2010格式,這並不重要,錯誤也是一樣的。

回答

3

問題原來是PresentationUI.dll程序集的HintPath與實際裝配位置不匹配。在這種情況下,MSBuild又回到尋找GAC中的程序集。由於MSBuild 4.0在.NET 4.0運行時上運行,因此它會獲取程序集的4.0版本,這與正在編譯的3.5項目不兼容。

0

我得到了同樣的問題,同時尋找在stackoverflow中的解決方案遇到了這個問題。最後在R & D我得到了解決方案。

刪除舊引用並添加新引用(如果有)轉到高級編譯器選項並選擇目標框架爲4.0。 :)它工作享受。

0

此異常的另一個原因是目標平臺在解決方案中的所有項目之間不匹配。例如,如果有幾個項目的目標平臺爲x86,其餘的則爲x64,那麼您將得到此異常。

相關問題