|
■No77441 (Hongliang さん) に返信
Hongliang様、ぽぴ王子様 回答ありがとうございました
> File.ReadAllBytesなどでdllのバイナリをByte()として確保して、
> Assembly.Load(Byte())
> Assembly.ReflectionOnlyLoad(Byte())
> のいずれかを使えば良いんではないでしょうか。
教えていただいた方法にてファイルをロックすることなくUNCパスから欲しい情報を取得することができました
For Each FileInfoDll As IO.FileInfo In New IO.DirectoryInfo(PathDll).GetFiles("*.dll")
Dim BuffDll As Byte() = IO.File.ReadAllBytes(FileInfoDll.FullName)
Dim AssemblyDll As System.Reflection.Assembly = System.Reflection.Assembly.Load(BuffDll)
For Each ClassType As Type In AssemblyDll.GetExportedTypes
For Each Method As System.Reflection.MethodInfo In ClassType.GetMethods
Diagnostics.Debug.WriteLine(FileInfoDll.Name + ", " + ClassType.FullName + ", " + Method.Name)
Next
Next
Next
> // AppDomainを分けないと、変更前dllのロード後に変更後dllをロードしても正しく読めないかも。
Dllを読み込んだ後プログラムを終了しないでDllにメソッドを追加し更新後再度読み込んだところ
追加したメソッドを正しく読み取ることができました
とても参考になり助かりました。ありがとうございました
|