给定一个 .NET DLL,它由一个类“Place”和一个返回整数的函数“Where”组成;我需要将 dll 加载到应用程序域中,执行函数并卸载应用程序域。
Dim domain As AppDomain = AppDomain.CreateDomain("Executor")
Dim buffer() As Byte = IO.File.ReadAllBytes("c:\path\Locator.dll")
Dim asy As Assembly = domain.Load(buffer)
Dim obj As [Object] = asy.CreateInstance("Locator.Place")
Dim method As MethodInfo = obj.GetType.GetMethod("Where")
Dim result as Integer = method.Invoke(obj, New [Object]() { 1 })
AppDomain.Unload(domain)
此行失败:
Dim asy As Assembly = domain.Load(buffer)
使用此错误消息:
'Could not load file or assembly 'Place, Version=1.0.0.0, Culture=neutral, PublicKeyToken-null' or one of it's dependencies. The System Cannot find the specified file.'
该文件在缓冲区中,所以我猜它是一个依赖.dll。但是,它应该在基本程序目录中找到那些。
关于错误原因的任何想法?
任何用于将程序集加载到 AppDomain、执行函数、然后卸载 AppDomain 的测试示例代码将不胜感激。
(顺便说一句,我用谷歌搜索并没有找到任何有用的样本。)