c# - Microsoft.CSharp 库中的 BadImageFormat 异常

标签 c# .net windows

从 8 切换到 Windows 8.1 后,我在运行 C# 应用程序时遇到了一些问题。 问题是我从标题中得到了这个异常(exception),在线帮助不多。我试图找出问题所在,我的 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."

编辑:

虽然仍然很 panic ,但我通过下载 CSharp.dll 解决了这个问题并用它替换答案中显示的路径中的虚拟 0 字节文件。

最佳答案

The module was expected to contain an assembly manifest

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

异常消息是一个非常不健康的消息,它不将 DLL 识别为 .NET 程序集。除了文件被损坏外,几乎没有什么合理的解释。文件损坏总是坏消息,强烈暗示您的硬盘出现故障。您需要修复它,如有必要,请访问 superuser.com 进行跟进

关于c# - Microsoft.CSharp 库中的 BadImageFormat 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19467858/

相关文章:

c# - C#中如何判断SQL作业是否执行成功

c# - Windows 应用商店应用程序 ListView : How to use the GroupStyle?

c# - 用 RegEx 重写 IsHexString 方法

C# - 用户设置损坏

c# - 有没有一种类型化的方法来在 C# 中声明方法名称

windows - 手动安装 Ruby 1.8.7(和其他东西)

c# - 重载 getter 和 setter 导致 C# 中的堆栈溢出

c# - 使用 Entity Framework 的简单请求的大量执行时间

windows - cpan 与 -MCPAN - Perl

c - 如何以编程方式确定我们当前运行的操作系统是否支持 Windows 错误报告?