访问项目应用程序文件夹中的程序集dll时出现FileLoadException

时间:2014-06-08 08:27:10

标签: c# .net assemblies fileloadexception

我想加载存储在c:驱动器上的项目应用程序文件夹中的程序集。

这是代码:

public static void Main(string[] args)
{                    
    Assembly asm = null;
    asm = Assembly.LoadFrom("C:\\SampleProj\\Workspace\\Test_App\\bin\\Debug\\Assemblies");
}

我得到的例外是:

  

无法加载文件或程序集'file:/// C:\ SampleProj \ Workspace \ Test_App \ bin \ Debug \ Assemblies'或其依赖项之一。访问被拒绝。

我尝试了以下操作,但错误仍然相同:

  1. 将项目保存在其他驱动器和访问程序集中
  2. 从项目文件夹子文件夹中删除了只读权限
  3. 授予项目文件夹属性中用户的完全控制权限
  4. 单击“取消阻止”按钮以获取所有DLL属性
  5. 请帮忙。

1 个答案:

答案 0 :(得分:1)

正如我在评论中所写,您没有指定有效路径(您需要指定dll时指定文件夹)。如果要加载该文件夹中的所有程序集,请使用以下代码:

private static List<Assembly> Assemblies = new List<Assembly>();

private static void LoadAllAssemblies(string path)
{
    foreach (var dir in Directory.GetDirectories(path))
    {
        LoadAllAssemblies(Path.Combine(path, dir));
    }

    foreach (var file in Directory.GetFiles(path))
    {
        if (Path.GetExtension(file) == ".dll")
        {
             Assemblies.Add(Assembly.LoadFrom(Path.Combine(path, file)));   
        }
    }
}