2014-06-08 69 views
0

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

这是代码:

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

我得到的例外是:

无法加载文件或程序集“文件:/// C:\ SampleProj \工作区\ Test_App \ bin \ Debug \ Assemblies'或它的一个依赖关系。访问被拒绝。

我尝试以下,但错误是一样的:

  1. 请其他驱动器和访问组件项目从那里从项目文件夹,子文件夹
  2. 删除只读权限
  3. 授予完全控制权限的用户在项目文件夹属性
  4. 点击了按钮,阻止所有DLL性质

请帮忙。

+0

我不清楚你的问题“你是否试图加载已经被你的项目引用的程序集?这些DLL位于我的项目的Debug文件夹下名为“Assemblies”的文件夹中 – user3719244

+0

不要紧,你没有指定正确的值。指定包含.dll扩展名的整个路径 –

+0

您正在尝试加载目录,而不是程序集。 Kaboom将文件视为文件会产生低级别的Windows错误ERROR_ACCESS_DENIED。 CLR无法提供更好的错误信息。 –

回答

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))); 
     } 
    } 
} 
相关问题