2010-08-26 99 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