2010-08-26 50 views
1

我在运行引用特定DLL的exe文件时遇到了以下错误。C#VS2005:可能损坏的DLL

无法加载文件或程序集'XYZ.ABC.DEF,Version = 1.0.3801.24033,Culture = neutral,PublicKeyToken = null'或其依赖项之一。访问被拒绝。

上述错误可能是由于XYZ.ABC.DEF.DLL被损坏了吗? DLL导致此错误的原因可能是错误的。我们只是试图在这个DLL上使用Reflector工具,我们无法反映它。

请帮忙。

回答

1

“访问被拒绝”通常意味着您无权读取文件。如果dll处于受保护的系统位置(即使您是管理员,例如,您可以在不同用户的帐户文件夹中的文件上“访问被拒绝”),也可能发生这种情况。

请确保您具有管理员权限,尝试将其依赖关系复制到您有完全访问权限的文件夹中。

2

发生这种情况的最可能原因是程序集或其中一个依赖项具有阻止当前进程访问文件的权限。如果它被破坏,你可能会看到一个BadImageFormatException或类似的错误消息。访问被拒绝的错误是链中某处许可问题的结果。

下一步是简单地尝试打开使用相同凭据的DLL并查看发生了什么。或者使用fuslogvw来跟踪加载失败并找出究竟哪个DLL有问题。

+0

您可以在这里获得fusion日志查看器文档:http://msdn.microsoft.com/en-us/library/e74a18c4(v=VS.90).aspx – 2010-08-26 22:16:53

+0

我无法获得Fuslogvw列出任何Dll。我把我的dll放到c:\ mydll文件夹中。在设置下,我提到自定义日志路径为c:\ mydll,并选择“将所有绑定记录到磁盘”并选中“启用自定义日志路径”框。但仍然没有运气 – 2010-08-26 22:38:06

+0

该DLL上的权限丢失。一旦权限被恢复,DLL就按预期工作。构建DLL时刀片逻辑包是否会影响权限?如何更改权限? – 2010-08-26 23:13:14