Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

INTEROPERABILITE .NET ET COM / EQUIVALENT ACTIVEX EXE .NET


Information sur le tutorial

Catégorie :.NET Tutorial .NET ( DotNet ) Date de création : 06/08/2006 11:58:34 Vu : 8 255 fois

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

Description

Cet article vous explique comment compiler votre application .Net pour l'utiliser ensuite avec des composants COM. Ceci vous permettra d'obtenir l'équivalent des fonctionnalités d'une application ActiveX exe faîte en VB6.

Tutorial

INTEROPERABILITE .NET ET COM / EQUIVALENT ACTIVEX EXE AVEC .NET

Cet article vous explique comment compiler votre application .Net pour l'utiliser ensuite avec des composants COM. Ceci vous permettra d'obtenir l'équivalent des fonctionnalités d'une application ActiveX exe faîte en VB6.

Voici la méthode à suivre, en détails :

1. Créer un projet Windows Application en C#, J# ou VB.net
Ajoutez une méthode publique 'ShowMessage' qui sera utile ensuite.

          public void ShowMessage()
        {
            MessageBox.Show ("Hello !");
        }

Compilez le. Vous obtenez alors un 'exe' qui est votre éxécutable.

2. Compilez le maintenant en Class Library
Dans les propriétés du projet, 'Common Properties'/'General', sélectionnez 'Output Type -> Class Library'. Vous obtenez maintenant une 'dll' qui est votre librairie de classes.
 

3. Activez l'interopérabilité COM
Toujours dans les propriétés du projet, commencez par séléctionner en haut à gauche la configuration 'All Configurations', puis dans 'Configuration Properties'/'Build' sélectionnez 'Register for COM interop -> True'. Recompilez, vous obtenez maintenant un fichier 'tlb' supplémentaire. C'est ce fichier que vous pourrez utiliser pour instancier votre application dans un environnement COM.

4. Généréz la clé 'Strong Name' validant votre fichier 'tlb'

4.1 Référencement du répertoire bin du SDK Visual Studio .NET

Dans le panneau de configuration windows, ouvrez 'system' et allez dans le panneau des variables d'environnement. Dans 'System Variables', editez la variable 'Path' en lui rajoutant le chemin du répertoire bin du SDK Visual Studio .Net. Ceci vous permettra ensuite d'urliser les outils du SDK sans en préciser le chemin.

Par exemple pour Visual Studio .Net 2003 : 
   
;C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin

4.2 Utilisation du Strong Name Utility
Ouvrez ensuite le Command Prompt et tapez la commande suivante en mentionnant le chemin complet de votre application jusqu'au répertoire 'Release'. (COMInteropDemo.snk est le nom de la clé qui va être générée pour l'application COMInteropDemo).

   C:\COMInteropDemo\COMInteropDemo\bin\Release>sn -k COMInteropDemo.snk

Vous obtiendrez le résultat suivant :

   Microsoft (R) .NET Framework Strong Name Utility  Version 1.1.4322.573
   Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

   Key pair written to COMInteropDemo.snk

Voià ! Vous avez validé votre fichier 'tlb' vous permettant maintenant maintenant d'instancier votre application 'COMInteropDemo' à partir d'un composant COM !

5. Essayez d'instancier l'objet 'COMInteropDemo' dans une application COM tell  que Visual Basic 6, Microsoft Excel, Agilent HPVee, etc ...
Pour les exemples suivants, nous utilisons Visual Basic 6.

5.1 Méthode référencée (Early Binding)
Commencez par référencer votre objet en allant dans 'Project'/'References' et cochez dans la liste 'COMInteropDemo'.

Testez ensuite le code suivant dans un formulaire VB6 :

Dim MyDemo As COMInteropDemo.Form1
            
Private Sub Form_Load()
           
'On instancie l'objet
Set MyDemo = New COMInteropDemo.Form1
           
'On le rend visible
MyDemo.Show
           
'On teste la methode 'ShowMessage'
MyDemo.ShowMessage
           
End Sub

5.2 Méthode non référencée (Late Binding)    
Pas besoin de référencer l'objet. Testez le code suivant dans votre formulaire :

Dim MyDemo As Object
           
Private Sub Form_Load()
           
'On instancie l'objet
Set MyDemo = CreateObject("COMInteropDemo.Form1")
           
'On le rend visible
MyDemo.Show
           
'On teste la methode 'ShowMessage'
MyDemo.ShowMessage

End Sub

6. Conclusion
Vous pouvez maintenant ajouter des propriétés & méthodes publiques à votre application 'COMInteropDemo' et apprendre à vous en servir dans VB6 ou une autre application COM.

06 août 2006 12:23:07 :
Rajout de commentaires
06 août 2006 21:28:31 :
Je n'arrive pas uploader les images, donc je les ai supprimées en attendant !
signaler à un administrateur
Commentaire de Petit jean le 19/10/2006 10:21:56

Que faut t-il faire pour utiliser le composant en client-serveur, cad que le composant s'exécute sur une machine distante

signaler à un administrateur
Commentaire de xum59 le 02/03/2007 16:04:02

Un grand merci. Ton tutoriel est d'une clarté au delà de mes espérances. Cela faisait plusieurs heures que j'errais en vain sur MSDN pour trouver cette option de compilation.
Bon, il ne me reste plus qu'à comprendre comment fonctionnent les espaces de noms dans ce type de projet (ma méthode "HelloWorld", quoique "public" n'est pas disponible dans ma classe !?!)
Si tu as 5 minutes, quel est l'intérêt du "Strong Name" ?

signaler à un administrateur
Commentaire de jalain le 08/03/2007 11:23:17

Bonjour,
Merci pour ce tutorial qui parait tellement simple!
Cependant je ne parviens pas à l'utiliser correctement.
En effet j'ai crée une application Windows,
J’ai placé la méthode ShowMessage dans ma classe Form1.
La classe et la méthode sont public
J’ai placé le type de sortie de l'application à Bibliothèque de classes,
J'ai coché l'option Incrire pour COM Interop
et au moment de la génération j'ai le message suivant dans la fenêtre de sortie de VS2005
"D:\PROJETS\INTEROP_COM\netapp\netapp\bin\Release\netapp.dll" ne contient pas de types pouvant être inscrits pour COM Interop.

et le fichier tlb n'est pas généré?

As tu une idée du problème?
Merci par avance

signaler à un administrateur
Commentaire de safisoft le 23/03/2007 14:47:20

Moi aussi j'ai le même problème que JALAIN, si quelqu'un a une idée. SVP à l'aide.

signaler à un administrateur
Commentaire de jo1975 le 07/11/2007 10:42:24

Pour que d'autres n'aient pas le même problème que JALAIN et SAFISOFT, il faut aussi ajouter l'attribut [ComVisible(true)] pour les classes et les méthodes que vous voulez publier dans votre ActiveX.

Ca devrait résoudre le problème.

Quand à l'intérêt du strong name, si je me souviens bien, c'est pour que l'outil REGASM.EXE fonctionne correctement.

signaler à un administrateur
Commentaire de Bidou le 23/05/2008 07:40:03 administrateur CS

sn.exe est un tool qui permet de signer les assemblies .NET
Voir http://msdn.microsoft.com/en-us/library/k5b5tt23.aspx pour plus d'informations.

signaler à un administrateur
Commentaire de ChamY le 26/05/2008 21:51:24

J'ai la même erreur que Jalain et Safisoft :
Warning 1 "C:\Documents and Settings\Kami\Mes documents\Visual Studio 2008\Projects\One Click Best Deal\OneClickBestDeal\bin\Release\OneClickBestDeal.dll" does not contain any types that can be registered for COM Interop. OneClickBestDeal

Et pourtant j'ai bien mit le [ComVisible(true)] devant les méthodes que j'utilise en interop. Si quelqu'un peut m'aider ?
Merci d'avance

signaler à un administrateur
Commentaire de ChamY le 26/05/2008 22:55:29

J'ai réglé le problème du warning.. J'ai modifier mon AssemblyInfo.cs [ComVisible(true)]
Mais j'ai un autre problème avec mon projet de déploiement et ma dll interop.. Quand je compile et installe à partir de visual studio, ça fonction très bien.. Mon vb script instancie la dll.
Mais quand j'utilise l'installer généré par visual studio sur un autre PC.. ça ne fonctionne pas, mon vb script n'arrive pas à instancié la dll.
SVP à l'aide :)
Merci d'avance

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,031 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.