2014-06-08 118 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))); 
     } 
    } 
} 
相關問題