0

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 つを読み込めませんでした。アクセスが拒否されました。

次のことを試しましたが、エラーは同じままです。

  1. プロジェクトを他のドライブに保持し、そこからアセンブリにアクセスします
  2. プロジェクト フォルダーのサブ フォルダーから読み取り専用権限を削除しました
  3. プロジェクト フォルダーのプロパティでユーザーにフル コントロール権限を付与
  4. すべての DLL プロパティのブロック解除ボタンをクリック

助けてください。

4

1 に答える 1

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)));   
        }
    }
}
于 2014-06-08T09:09:53.087 に答える