遇到"系统无法找到指定的文件"当运行某个命令时

时间:2014-04-28 15:23:24

标签: vb.net file dll .net-assembly filenotfoundexception

这是我以前从未见过的问题。每当我在我的应用程序中运行某个命令时,我都会收到错误:

Could not load file or assembly 'CADB.Data'. The system could not find the file specified.

当我在调试器中运行命令时,我没有收到此错误。系统成功完成该过程。只有当我运行内置的.exe时才会这样。 .exe在我的调试文件夹中,包含所有必需的DLL(Copy Local = True),包括问题DLL(CADB.Data)。

当系统运行此命令时,它处于模拟状态。我将Debug文件夹(包含.exe和DLL)放入模拟用户具有完全访问权限的文件夹中。我在文件属性的“安全”选项卡中检查了访问权限,用户可以完全访问文件夹AND CADB.Data.dll。不过,我收到上面的错误消息。当我通过模拟用户无权访问的任何其他文件夹运行程序时,我得到一个稍微不同的错误:Could not load file or assembly 'CADB.Data'. Access is denied.

通过另一个工作站上的调试器运行应用程序也会引发错误。该错误发生在方法GetClaimGuidList的声明中,该方法是CADB.Data(下面)的成员。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using CADB.Data;

namespace CADB.BusinessServices
{
public class ClaimHelper
{
    static public List<Entities.Claim> GetClaimGuidList(int caseId, bool includeNotices)
    {
        DataTable dt = ClaimCmd.GetClaimGuids(caseId, includeNotices);
        return Utilities.MapDataTableToList<Entities.Claim>(dt);
    }
}
}

尝试了其他事情:

  • 将DLL设置为读/写。它是只读的,因为该文件最初是由VSO编辑的,因此具有只读标记。
  • 运行进程监视器以​​查找拒绝访问的消息。我在显示器的任何地方都找不到这样的信息。
  • 删除DLL并从项目中再次添加(我的解决方案有多个项目)。
  • 清理整个解决方案,重新构建并重新运行EXE
  • 删除解决方案中每个项目的bin文件夹,重新构建并重新尝试

有人可以帮忙吗?任何想法将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

出于某种原因,模拟用户无权访问bin文件夹中创建的应用程序文件。我转到该文件夹​​的安全属性,并将该用户添加到具有完全访问权限的文件夹中。这使我们能够绕过错误。为什么用户无法访问CADB.Data DLL仍然是一个谜。无论如何,已发布的ClickOnce应用程序中没有该问题。