DOBON.NET DOBON.NETプログラミング掲示板過去ログ

動的アセンブリ読みこみ

  • 題名: 動的アセンブリ読みこみ
  • 著者: ぽっぽ
  • 日時: 2012/04/03 18:18:42
  • ID: 30211
  • この記事の返信元:
    • (なし)
  • この記事への返信:
    • (なし)
  • ツリーを表示
環境/言語:[.net3.5]
分類:[.NET]

動的DLLの解放について、試験的なコードを作成してみました。
try {

AppDomain appDomain = AppDomain.CreateDomain("TestDomain", null);
byte[] rawAssembly = loadFile(@"log4net.dll");
Assembly asm = appDomain.Load(rawAssembly);

StringBuilder sb = new StringBuilder();
foreach (Type t in asm.GetTypes())
{
sb.AppendLine(t.Name);
}

AppDomain.Unload(appDomain);
} finally {
}

上記コードでいくつか分からないことがあります。
1.loadFileに本コードのexeがある場所以外の場所をフルパスで指定すると
Loadメソッドで読みこみエラーとなるのはなぜでしょうか。

具体的なエラー内容は以下のとおりです。
ファイルまたはアセンブリ 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。

Loadメソッドで読込めるアセンブリは、exeと同じ階層でないと読込めないということでしょうか。


2.上記コード実行後(デバッグにて終了前で止める)に、log4net.dllはリネームや移動は可能ですが、上書き・削除はできません。
リネームしてから削除すれば削除可能ですが、これはどういうことなのでしょうか。

宜しくお願いします。

DOBON.NET | プログラミング道 | プログラミング掲示板