C# 访问项目应用程序文件夹中的程序集DLL时发生FileLoadException

C# 访问项目应用程序文件夹中的程序集DLL时发生FileLoadException,c#,.net,assemblies,fileloadexception,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:\Sam

我想加载存储在
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\u App\bin\Debug\Assemblies'或其依赖项之一。访问被拒绝

我尝试了以下操作,但错误保持不变:

  • 将项目保留在其他驱动器中,并从此处访问程序集
  • 已从项目文件夹子文件夹中删除只读权限
  • 已向项目文件夹属性中的用户授予完全控制权限
  • 单击所有DLL属性的“取消阻止”按钮

  • 请提供帮助。

    正如我在评论中所写,您没有指定有效的路径(当需要指定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)));   
            }
        }
    }
    
    私有静态列表程序集=新列表();
    专用静态无效加载所有组件(字符串路径)
    {
    foreach(目录中的var dir.GetDirectories(path))
    {
    加载所有组件(路径组合(路径,方向));
    }
    foreach(Directory.GetFiles(path)中的var文件)
    {
    if(Path.GetExtension(file)=“.dll”)
    {
    Add(Assembly.LoadFrom(Path.Combine(Path,file));
    }
    }
    }
    
    我不清楚您的问题“您是否正在尝试加载项目已引用的程序集?”DLL位于我的项目的调试文件夹中,位于名为“Assemblies”的文件夹下。别介意,您没有指定正确的值。指定包含.dll扩展名的整个路径。您尝试加载的是目录,而不是程序集。Kaboom,将目录视为文件会产生低级Windows错误,错误为\u访问\u拒绝。CLR无法从中生成更好的错误消息。