Microsoft.CSharp 库中的 BadImageFormat 异常

本文关键字:BadImageFormat 异常 CSharp Microsoft | 更新日期: 2023-09-27 18:36:01

从 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 并替换它回答中显示的路径中的虚拟 0 字节文件来解决这个问题.dll。

Microsoft.CSharp 库中的 BadImageFormat 异常

该模块应包含程序集清单

您一直在查看引用程序集,它不是运行程序时实际加载的程序集。 Microsoft.CSharp.dll存储在 GAC 中,由 .NET 安装程序放置在那里。 您可以通过导航到 c:''windows''microsoft.net''assembly''gac_msil''microsoft.csharp 来查看该文件。 继续单击,直到找到文件。

异常消息是非常不正常的消息,它不会将 DLL 识别为 .NET 程序集。 除了文件损坏之外,几乎没有像样的解释。 文件损坏总是坏消息,强烈暗示您的硬盘出现故障。 您需要修复它,如有必要,请跟进 superuser.com