这是我以前从未见过的问题。每当我在应用程序中运行某个命令时,我都会收到错误:
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文件夹,重新构建并重试
有人能帮忙吗?任何想法都将不胜感激。谢谢
由于某些原因,模拟用户无法访问在bin文件夹中创建的应用程序文件。我转到文件夹的"安全"属性,并将该用户添加到具有完全访问权限的文件夹中。这使我们得以绕过错误。为什么用户无法访问CADB.Data DLL仍然是个谜。无论如何,已发布的ClickOnce应用程序中都不存在该问题。