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 faite 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électionner 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érez 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', éditez la variable 'Path' en lui rajoutant le chemin du répertoire bin du SDK Visual Studio .Net. Ceci vous permettra ensuite d'utiliser 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:COMInteropDemoCOMInteropDemobinRelease>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
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.