一个新的问题出现了:
发生错误IScanner的= CType运算(ad.CreateInstanceAndUnwrap(键,值),所以IScanner),因为它是不能够加载的程序集的引用,在昏暗的项目。我已创建一个程序集解决类,这样我就可以调用在同一个AppDomain中,我试图加载组装成的evenht:
For Each key As String In assemblies.Keys
Dim ad As AppDomain = AppDomainHelper.BuildChildAppDomain(AppDomain.CurrentDomain, key)
Dim finder As AssemblyHelper.AssemblyResolveFinder = CType(ad.CreateInstanceAndUnwrap(GetType(AssemblyHelper.AssemblyResolveFinder).Assembly.FullName, GetType(AssemblyHelper.AssemblyResolveFinder).FullName), AssemblyHelper.AssemblyResolveFinder)
finder.DeployPath = Assembly.GetExecutingAssembly.Location.Substring(0, Assembly.GetExecutingAssembly.Location.LastIndexOf("\"c) + 1)
AddHandler ad.AssemblyResolve, AddressOf finder.AssemblyResolve
For Each value As String In assemblies(key)
Dim item As IScanner = CType(ad.CreateInstanceAndUnwrap(key, value), IScanner)
ListBox1.Items.Add(item)
Next
_l.Add(ad)
Next
{C}
我曾尝试不同的路径在_deployPath字符串。理想的外部组件都可以在自己的单个文件夹,远离任何其他组件,但我不能得到大会加载eitherway。
,bizarly我已经加载另一个类,我曾在不同的AppDomain instansiated大会,只是让我可以探测类类型(试图找到那些从IScanner的inheret)。我用这种方法唯一的问题是,我不知道我将如何能够与instansiated类型没有在我appdomain.currentdomain参考他们沟通
我希望我解释我的困境。如果没有的话让我知道,我会尽力澄清
感谢
安迪