簡體   English   中英

無法加載文件或程序集“xxx”或其依賴項之一。 試圖加載格式不正確的程序

[英]Could not load file or assembly 'xxx' or one of its dependencies. An attempt was made to load a program with an incorrect format

我剛剛從 Subversion 檢出了一個修訂版到一個新文件夾。 打開解決方案,我在運行時得到這個:

無法加載文件或程序集“xxxx”或其依賴項之一。 試圖加載格式不正確的程序。

這是我不久前檢查過的相同代碼。 為什么現在要這樣做? 我現在還在那個 xxx 項目的 bin 文件夾中看到了一個 Debug x86 而不僅僅是 Debug 。 什么是 Debug x86,為什么我不像以前那樣在 bin 文件夾中使用 Debug 呢?

聽起來項目的一部分是為僅 x86 構建的,而其余部分是為任何 CPU/x64 構建的。 這也咬我。 您運行的是 x64(或呃……IA64)嗎?

檢查項目屬性並確保正在為“任何 CPU”構建所有內容。 如果您在 Visual Studio 中,則可以通過轉到屏幕頂部工具欄上的“x86”或“任何 CPU”菜單(在“調試”/“發布”菜單旁邊)並單擊來檢查所有內容“配置管理器……”

如果在 64 位服務器上的 IIS 7+ 中運行站點時遇到此錯誤,您可能有 32 位程序集,並且您的應用程序池將選項“啟用 32 位應用程序”設置為 False; 將此設置為 true 並重新啟動站點以使其正常工作。

我在嘗試使用可怕的Business Objects 4 for .Net SDK 時遇到了這個錯誤。

他們提供了五個 BusinessObjects*.dll 文件,但都是 64 位的。

要加載我的網頁,我需要單擊Tools\\Options ,然后在 VS2013 中更改此設置:

在此處輸入圖片說明

inetmgr 然后來到應用程序池-> 池的高級設置-> 將選項“啟用 32 位應用程序”設置為 true; 並重新啟動 IIS。 再檢查一遍。!

在 IIS 上運行的應用程序上的 BadImageFormatException(不是從 VS 運行,因為 Visual Studio 通過使用“任何 CPU”的構建修復了該問題)可能由以下原因引起:

該站點是一台 x64 服務器,應用程序池的啟用 32 位應用程序的默認設置為 False。 你有 32 位程序集

在 Visual Studio 級別,修復是:

  1. 將項目設置“Target CPU”更改為“ANYCPU”

確保您驗證了“首選 32 位”的設置。 在我的情況下,Visual Studio 2012 默認檢查了這個設置。 嘗試使用外部 DLL 中的任何內容都失敗了,直到我取消選中 "Prefer 32-bit"

在此處輸入圖片說明

對於為 x86 兼容性而不是任何 CPU 構建的一些項目來說,這絕對是一個問題。 如果我不得不猜測,我會說您的項目之間的某些引用可能引用了某些 bin\\debug 文件夾中的 dll,而不是項目引用。

當為 x86 而不是“任何 CPU”編譯項目時,dll 將進入 bin\\x86\\debug 文件夾而不是 bin\\debug(這可能是您的參考資料所在的位置)。

但無論如何,您應該在項目之間使用項目引用。

如果在 Visual Studio 中使用 IIS express 工作並且發布失敗,請嘗試以下操作: 在此處輸入圖片說明

在我的情況下,它通過轉到項目屬性並在目標框架下我選擇了 .NET Framework 4 來工作。這是因為我已經轉移到一台已經安裝了其他更高版本的 .NET 框架的新機器,並且項目默認選擇了它們。 看看什么目標框架適合你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM