簡體   English   中英

Microsoft.CSharp庫中的BadImageFormat異常

[英]BadImageFormat Exception at Microsoft.CSharp library

從8開始轉換到Windows 8.1后,我在運行我的C#應用​​程序時遇到的問題很小。問題是我從標題中獲得了這個異常並且在線幫助不大。 我試圖找出問題,似乎我的x64應用程序試圖調用x86 CSharp庫。 項目中的引用導致DLL文件,在使用/ headers參數輸出調用x64 dumpbin程序時:

Dump of file Microsoft.CSharp.dll

PE signature found

File Type: DLL

FILE HEADER VALUES
             14C machine (x86)
               3 number of sections
        4FFA5C64 time date stamp Mon Jul 09 06:21:56 2012
               0 file pointer to symbol table
               0 number of symbols
              E0 size of optional header
            2022 characteristics
                   Executable
                   Application can handle large (>2GB) addresses
                   DLL

請注意,該計算機是x86,而應用程序在x64中運行(使用Environment.Is64BitProcess檢查)。 這可能是我面臨的問題,但是我找不到解決方法 - 似乎沒有安裝x64 .Net庫。 我找到的唯一的是: C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework 或者也許我完全失去了,還有一些其他問題。 無論如何,異常發生在一個構造函數的啟動時,完整的細節是:

Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
"Could not load file or assembly 'Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The module was expected to contain an assembly manifest."

編輯:

雖然仍然恐慌,我通過下載CSharp.dll並在其回答中顯示的路徑中替換虛擬0字節文件來解決這個問題。

該模塊應該包含一個程序集清單

您一直在查看引用程序集,它不是運行程序時實際加載的程序集。 Microsoft.CSharp.dll存儲在GAC中,由.NET安裝程序放在那里。 您可以通過導航到c:\\ windows \\ microsoft.net \\ assembly \\ gac_msil \\ microsoft.csharp來查看該文件。 繼續單擊直到找到該文件。

異常消息是一個非常不健康的消息,它不會將DLL識別為.NET程序集。 除了文件被破壞之外,沒有什么可行的解釋。 文件損壞總是壞消息,強烈暗示您的硬盤出現故障。 您需要修復它,必要時在superuser.com進行跟進

暫無
暫無

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

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