Dot-Net

System.BadImageFormatException:無法載入文件或程序集(來自 installutil.e…

  • November 27, 2008

我正在嘗試使用 InstallUtil.exe 安裝 Windows 服務並收到錯誤消息

System.BadImageFormatException: 無法載入文件或程序集“ {xxx.exe}”或其依賴項之一。試圖載入格式不正確的程序。

是什麼賦予了?


編輯:(不是由 OP)從 dup 中提取的完整消息獲得更多點擊 [for googleability]:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>InstallUtil.exe C:\xxx.exe Microsoft (R) .NET Framework 安裝實用程序版本 4.0.30319.1 版權所有 (c) Microsoft Corporation。版權所有。

初始化安裝時發生異常:System.BadImageFormatException:無法載入文件或程序集“file:///C:\xxx.exe”或其依賴項之一。試圖載入格式不正確的程序..

確保最新的框架(您編譯應用程序時使用的框架)位於 PATH 的第一位。這為我解決了問題。(在論壇上找到)

一些更完整的細節,以防它幫助某人……

請注意,目前此異常的最常見原因是嘗試將 32 位特定 ( /platform:x86) DLL 載入到 64 位程序中,反之亦然(即,將 64 位特定 ( /platform:x64) DLL載入到32 位)。如果您platform是非特定的 ( /platform:AnyCpu),則不會出現這種情況(假設沒有引用的依賴項是錯誤的位數)。

換句話說,執行:

%windir%\Microsoft.NET\Framework\v2.0.50727\installutil.exe

要麼:

%windir%\Microsoft.NET\Framework 64 \v2.0.50727\installutil.exe

將不起作用(替換為其他框架版本:(v1.1.4322僅限 32 位,因此不會出現此問題)並且v4.0.30319如上文所述)。

顯然,正如另一個答案所涵蓋的那樣,您還需要installutil您正在執行的 .NET 版本號 >=(最好是 =)您正在執行安裝程序的 EXE/DLL 文件的版本號。

最後,請注意,在 Visual Studio 2010 中,該工具將預設生成 x86 二進製文件而不是之前的任何 CPU)。

System.BadImageFormatException 的完整細節(說唯一的原因是不匹配的咬痕真的是過於簡單化了!)。

x64安裝程序BadImageFormatException下的另一個原因是,在 Visual Studio 2010 中,預設安裝項目類型會生成 32 位填充程序,即使在 x64 系統上也是如此(搜尋“64 位託管自定義操作引發 System.BadImageFormatException 異常”這頁紙)。.vdproj``InstallUtilLib

引用自:https://stackoverflow.com/questions/323140