IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

Utilisation des AppDomain


Sujet :

Dotnet

  1. #1
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 107
    Points : 60
    Points
    60
    Par défaut Utilisation des AppDomain
    Bonjour,

    J'essaie d'appeler des dll externes à mon projet web. Cependant, je souhaiterais pouvoir, après mon traitement avec ces dll , les "décharger". Pour cela, j'essaie de comprendre le fonctionnement du tutorial http://vincentlaine.developpez.com/t...pdomain/vbnet/.

    J'ai un exception lors de l'exécution de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.loader = CType(Me.pluginsDomain.CreateInstanceFromAndUnwrap("AssemblyLoader.dll", "AssemblyLoader.Loader"), Loader)
    J'aurais souhaité savoir à quoi correspond AssemblyLoader.dll ?

    merci

  2. #2
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Bonjour.

    L'assemblyLoader est un projet à part permettant de faire le lien entre le domaine principal et le domaine créé. Comme expliqué dans mon tuto cela permet d'éviter de charger les assemblies dans le domaine par défaut en faisant en sorte qu'une liaison ne soit créées entre les assemblies "externe" et le domaine parent.

  3. #3
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 107
    Points : 60
    Points
    60
    Par défaut
    Ok merci pour ta réponse.
    J'ai donc repris la dll AssemblyLoader des sources du tuto et je l'ai intégré à mon projet.

    Néanmoins en suivant pas à pas le tutoriel pour essayer de l'adapter à mes besoin, j'ai un souci, au moment du cast de mon domain créé comme cela pluginsDomain.CreateInstanceFromAndUnwrap(System.AppDomain.CurrentDomain.BaseDirectory() & "bin/AssemblyLoader.dll", "AssemblyLoader.Loader") en ma classe Loader

    Code pour mieux comprendre:
    Ma classe Loader comme dans le tuto
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Imports System.Reflection
    ' La classe Loader sert à charger les assemblies dans un domaine d'application particulier.
    ' Elle garde également une trace des assemblies chargée.
     
     
    Public Class LoaderAssembly
        Inherits MarshalByRefObject
     
        ' Declarer un tableau dynamique pour toutes les assemblies à charger
        Private assemblies As ArrayList
     
        Public Sub New()
            MyBase.New()
            Me.assemblies = New ArrayList
        End Sub
        Public Sub Load(ByVal varassembly As String)
            ' Charger l'assembly demandée et Ajouter à la collection
            Me.assemblies.Add([Assembly].Load(varassembly))
        End Sub
        Public Function CreateInstanceOf(ByVal index As Integer, ByVal typeName As String) As Object
            ' Fournir une instance de l'objet demandé
            Return CType(assemblies(index), [Assembly]).CreateInstance(typeName, True)
        End Function
    End Class
    Mon cast qui ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim setup As AppDomainSetup = AppDomain.CurrentDomain.SetupInformation
    Dim loader As LoaderAssembly
    setup.PrivateBinPath = System.AppDomain.CurrentDomain.BaseDirectory() + "verificationDLL/"
    setup.ShadowCopyFiles = "false"
    Dim pluginsDomain As AppDomain = AppDomain.CreateDomain("pluginsDomain", Nothing, setup)
    Dim testobj As Object = pluginsDomain.CreateInstanceFromAndUnwrap(System.AppDomain.CurrentDomain.BaseDirectory() & "bin/AssemblyLoader.dll", "AssemblyLoader.Loader")
    loader = CType(testobj, LoaderAssembly)
    Je ne comprends pas trop pourquoi j'ai un problème dans le cast, étant donné que j'ai récupéré l'Assemblyloader du tuto et que ma classe loader (AssemblyLoader dans mon cas) est la même que dans le tuto.

  4. #4
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Ta classe appartient bien à l'espace de nom AssemblyLoader ?
    En fait je viens de voir que tu as utilisé le nom de l'espace de nom C# pour nommer ta classe.

    Dans le code du tuto le nom de classe est Loader et l'espace de nom est AssemblyLoader

Discussions similaires

  1. utilisation des AppDomain
    Par Akta3d dans le forum Framework .NET
    Réponses: 4
    Dernier message: 13/02/2007, 09h00
  2. utilisation des sockets sous windows
    Par Tupac dans le forum Réseau
    Réponses: 2
    Dernier message: 21/12/2002, 18h24
  3. [Crystal Report] Utilisation des vues de sql serveur
    Par Olivierakadev dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 15/11/2002, 17h44
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo