1

我不知道这里发生了什么。我的 c# (VS2008) 应用程序在 32 位操作系统中运行良好,但是当我在 Windows 2008 R2 64 位操作系统中运行相同时,我收到以下错误:

无法生成临时类(结果=1)。错误 CS0008:从文件 'c:\Windows\assembly\GAC_MSIL\xxxx\7.0.1001.0__5b72a65e64576834\xxxx.dll' 读取元数据时出现意外错误 - 'Bad Key。'

浏览了一些文章,其中说如果临时文件夹没有足够的权限,则会弹出此错误。我已经授予临时文件夹“C:\windows\temp”和用户临时文件夹(“C:\users\\appdata\local\temp”)的权限,但没有运气。我在这个程序集中有一个 web 服务代理类,它需要 XML 序列化,我猜想使用 temp 文件夹在运行时创建序列化程序集,它会抛出这个错误。

非常感谢任何输入。顺便说一句,我在事件查看器中发现了该错误(无法生成.....)。

谢谢。

4

1 回答 1

1

您的问题中有几个基本问​​题是错误的。这是编译时错误,而不是运行时错误。请注意消息中的 CS0008,记录为:

已成功打开 DLL 以检索元数据,但已损坏,因此无法从中读取数据。有关详细信息,请参阅 /reference(导入元数据)(C# 编译器选项)。

接下来的错误是该程序集显然来自 GAC。编译器不应该GAC 引用程序集,引用程序集必须是存储在相关目录中的副本。就像 .NET 框架程序集的 c:\windows\microsoft.net\etc 一样。

无论您为得到此错误所做的一切都明显使保修失效。我无法对您从问题中所做的事情进行逆向工程,混淆程序集名称当然没有帮助。

于 2010-06-08T22:22:48.620 回答