est ce que quelqu'un sait pourquoi un assembly se trouve dans deux domain differente ?
j'ai créé un AppDomain
dim tmpAppDomain as AppDomain = AppDomain.CreateDomain("tmp" )
comme mes dll se trouvent dans un dossier different de la racine de l'application j'ai fait :
AddHandler tmpDomain.AssemblyResolve, AddressOf DomainError1
çà ne marche pas si on n'ajoute pas
AddHandler appDomain.CurrentDomain.AssemblyResolve, AddressOf DomainError1
comme çà, à chaque erreur, je peux gerer et donc je met le code ci-desous dans DomainError1
Dim ArgName As String = e.Name.Substring(0, e.Name.IndexOf("," ))
dim strTempAssmbPath as string = "c:\..." & ArgName & ".dll"
MyAssembly = Assembly.LoadFrom(strTempAssmbPath)
Return MyAssembly
ce qui m'étonne c'est que si je place ce code directement dans une Forme et que je verifier les assemblie dans le domain courrant et le domaine Autre, on peut bien voir que les assembly que je charge dans le domain autre ne sont pas dans le domaine courrant
je charge avec : tmpDomain.Load(assmbName)...
mais lorsque je prend les codes et je crée une classe et que je les met dedans ... alors je peux voir que les assembly se trouvent dans le domaine Autre mais aussi dans le domaine courrant
code :
<Serializable()> Public Class MaClasse
...
private tmpDomain as appDomain
public sub New()
tmpDomain = appDomain.CreateDomain("Autre" )
AddHandler tmpDomain.AssemblyResolve, AddressOf DomainError1
AddHandler appDomain.CurrentDomai.AssemblyResolve, AddressOf DomainError1
end sub
...
Private Function DomainError1(ByVal sender As Object, ByVal e As System.ResolveEventArgs) As System.Reflection.Assembly
... ' Mes traitement
end Function
...
public sub Load(byval argFileName as string)
...
tmpDomain.Load(...)
end Sub
End Class