从 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 字节文件来解决这个问题。