特定のDLLのダイナミックロードに関する調査資料
対象
- CLI版(.NET Framework生成)のDLLを動的にロードしたいド変態
- CreateAppDomainした環境に読み込ませたい
- とある理由により、デバッグ情報からスタックトレースを出力させたい
- 要はカスタムスクリプトを記述できるようにしたい
結果
現在のドメイン(AppDomain)を汚染せずに(Assemblyにロードしない状態を維持しながら)Assemblyロードするのは現実的ではない。
そのため、プロセスの分離(WCF)など方式を検討すべきである。
理由は、例外発生時に、別AppDomain上にロードされている情報が、主ドメインにロードされてしまうため。(*.pdbが存在する場合)
*.pdbの生成を抑止すれば、上記問題の発生を抑止することができるが、トレース情報が出力されないため、やりたいことが実現できなくなってしまう。
また、DLLをアプリの検索パス以外に配置した場合、動的ロードできないことが判明している。(Assembly.Loadならいける)
参考資料
- AppDomainを利用したDLLのロードができない
- AppDomain と動的読み込み
- こんなにわかりやすい資料があっただなんて...