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

VB.NET Discussion :

Reference COM / Interop


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut Reference COM / Interop
    Bonjour à tous,

    Je suis en cours de réalisation d'une petite application windows en VB.NET.
    Cette dernière utilise l'API d'une autre application nommé Quality Center dont la référence COM est "OTA COM 9.0 Type Library".

    Lorsque je génère mon exe, cela génère aussi le fichier Interop.TDAPIOLELib.dll

    Le problème est que mon exe ne fonctionne pas sans cette dll (Interop.TDAPIOLELib.dll) ! pourquoi mon application n'utilise pas la dll installée par Quality Center sous C:\Program Files\Fichiers communs\Mercury Interactive\Quality Center\OTAClient.dll ??

    Quand j'ajoute cette référence de type COM (C:\Program Files\Fichiers communs\Mercury Interactive\Quality Center\OTAClient.dll ), il pointe à nouveau vers Interop.TDAPIOLELib.dll

    Suis je obligé de déployer Interop.TDAPIOLELib.dll en plus de mon exe ?

    Merci de votre aide.

    Frédéric

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 73
    Par défaut
    Je pense que tu es obligé de la déployer avec (mais je me trompe peut être), simplement pour te préserver du fait que : C:\Program Files\Fichiers communs\Mercury Interactive\Quality Center\OTAClient.dll n'existe pas sous le poste client.

    Tu prends juste l'exe crée par visual studio dans le fichier release ou tu utilise l'outil de déploiement?

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut
    Je prends juste l'exe sous Release. Pour le déploiement, j'utilise la fonctionnalité de Quality Center qui déploie l'exe en même temps que la dll (C:\Program Files\Fichiers communs\Mercury Interactive\Quality Center\OTAClient.dll).
    Images attachées Images attachées  

  4. #4
    Membre chevronné
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Par défaut
    Oui !
    L'assembly Interop......dll est un wrapper entre ton code managé .NET et le code natif Win32. Elle prend en charge un paquet de trucs, et notamment le mappage des types de données.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 73
    Par défaut
    Essaye de mettre la dll dans les références de ton projet, sinon je vois pas comment...

    Tu récupères juste l'exe ou tous les fichiers annexes du dossier release?

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut
    OK, merci pour l'info. Donc je devrais deployé cette dll avec mon exe.

    Par contre, est-il possible de lui spécifier le numéro de version ? car par defaut c'est 1.0.0.0, autant mettre un num de version en corélation avec la dll source (C:\Program Files\Fichiers communs\Mercury Interactive\Quality Center\OTAClient.dll).

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 73
    Par défaut
    Tu peux changer le numéro de version dans le menu projet -> propriétés de ...
    Ensuite tu vas dans l'onglet Publier, tu décoches Incrémenter automatiquement et la tu peux mettre le num de version de ton projet.

    En espérant avoir été assez clair.

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut
    En fait, je n'utilise pas l'option "Publier".
    J'arrive bien à spécifier le numéro de version de mon exe mais pas celui de ma nouvelle dll, Interop.TDAPIOLELib.dll

  9. #9
    Membre chevronné
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Par défaut
    Citation Envoyé par Frederic31 Voir le message
    OK, merci pour l'info. Donc je devrais deployé cette dll avec mon exe.

    Par contre, est-il possible de lui spécifier le numéro de version ? car par defaut c'est 1.0.0.0, autant mettre un num de version en corélation avec la dll source (C:\Program Files\Fichiers communs\Mercury Interactive\Quality Center\OTAClient.dll).
    Tu peux le faire en lançant tlbimp.exe à la main et en lui spécifiant l'option /asmversion

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut
    Merci !
    Avec la commande suivante, j'arrive bien à créer ma nouvelle dll, Interop.TDAPIOLELib.dll et ce avec un numero de version spécifique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\tlbimp.exe" "C:\Program Files\Fichiers communs\Mercury Interactive\Quality Center\OTAClient.dll" /out:Interop.TDAPIOLELib.dll /asmversion:9.1.0.4392
    Par contre, suite à cette reconstruction, mon exe plante car il doit chercher à utiliser une version 1.0.0.0 de cette dll
    En cherchant un petit peu j'ai vu dans la partie Référence, dans la liste des Espaces de nom importés deux lignes pouvant être cochées : interop et interop.TDAPIOLELib ... Si je veux que mon appli fonctionne, il me faut cocher interop et pas interop.TDAPIOLELib !!

    Est ce normal ?

Discussions similaires

  1. [C#] Comment deployer un COM Interop ?
    Par loverdose dans le forum C#
    Réponses: 12
    Dernier message: 27/04/2012, 12h01
  2. problem com interop multithread
    Par giova_fr dans le forum C#
    Réponses: 1
    Dernier message: 13/08/2008, 15h25
  3. COM Interop Excel
    Par Piet dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 01/02/2008, 23h53
  4. Reference COM, .Net pour projet VB
    Par kaskarot dans le forum VB.NET
    Réponses: 2
    Dernier message: 05/01/2007, 16h23
  5. Réponses: 6
    Dernier message: 30/03/2006, 15h15

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