Utiliser un assemblage .NET WD en C

Transcription

Utiliser un assemblage .NET WD en C
Grinchou -> *
Le mardi 5 avril 2011
Utiliser un assemblage .NET WD en C#
Comment faire une assemblie .NET en WD et l'utiliser en C# ?
Voici un cas concret "de base" en Visual Studio 2003 et en Visual Studio 2005.
Avant propos
Avant de se lancer dans l'aventure, il est évidemment nécessaire de disposer de quelques outils
installés sur le poste:
. WD (évidemment)
. FrameWork .NET (1.1, 2.0 ou 3.0, ou les 3)
. Visual Studio (2003 pour le 1.1, ou 2005 pour le 2.0 et le 3.0)
Création d'un assemblage .NET en WD
. Créer un nouveau projet WD.
. Créer un ou plusieurs procédures globales et/ou classes avec des méthodes (ce sont les "points
d'entrée qui pourront être appelés à partir du C#).
Dans notre exemple, je crée une collection de procédure "WDAssemblie CollProc" dans laquelle
je crée une procédure globale "Apropos" dont le code est simplement
RENVOYER ProjetInfo(piNomProjet)
Et une classe "DeBase_Class" avec une méthode "Apropos" avec le même code.
. Dans l'assistant "Atelier….NET…Générer une DLL assemblage .NET"
- indiquer, entres autres, la version du FrameWork NET qui doit être utilisé pour générer
l'assemblage (1.1, 2.0 32 bits ou 2.0 64 bits, etc…)
Si le même projet doit permettre de générer plusieurs versions du même assemblage on a
évidemment recours aux "configurations" de projet.
- vérifier que les DLL nécessaires et suffisantes à votre code sont sélectionnées
. Une librairie d'assemblage (.DLL) est générée dans le répertoire EXE du projet
Création du projet C# en Visual Studio 2003
. "Fichier…Nouveau…Nouveau Projet", sélectionner le langage ("Projets Visual C#"), le modèle
"Application Windows", donner un nom de projet et un path
1/3
Grinchou -> *
Le mardi 5 avril 2011
. "Projet…Ajouter une référence"
A l'aide du bouton parcourir, sélectionner "WD1?0NET1.DLL" et le (ou les) assemblage(s) WD
générés précédemment.
Création du projet C# en Visual Studio 2005
. "File…New…Project", sélectionner "Other Languages…Visual C#" puis "Windows Application",
donner un nom de projet et un path
. "Project…Add Reference", onglet "Browse"
Sélectionner l'assemblage WD .NET au format 2.0, ainsi que "WD1?0NET2.DLL"
2/3
Grinchou -> *
Le mardi 5 avril 2011
Coder l'appel à une fonction de l'assemblage WD .NET
Dans la fenêtre créée par défaut ("Form1.cs"), rajouter un bouton (cliquer sur l'onglet vertical
"boite à outils" ou "ToolBox" à gauche ou à droite, et Drag'n'dropper un bouton sur la fenêtre).
Dans le code du bouton (double-clic direct sur le bouton), on va appeler une méthode d'une
classe de l'assemblage WD .NET
WL.DeBase_Class ClasseDeBase = new WL.DeBase_Class(); // Instanciation de l'objet
MessageBox.Show("Appel de la classe de base '" + ClasseDeBase.APropos() + "'");
Et dans un autre bouton, on va appeler une procédure d'une collection de procédure (beaucoup
plus simple)
MessageBox.Show("Appel collec proc '" + WL.WDAssemblie_CollProc.APropos() + "'");
Il ne reste plus qu'à exécuter "Déboguer…Démarrer" .
Evolution de l'assemblage WD .NET
J'ai rajouté de nouvelles fonctionnalités dans mon assemblage, mais on dirait que mon
programme C# ne les voit pas.
D'abord, vérifions: "Affichage…Explorateur de solution", dans l'arborescence dérouler
l'assemblage WD, puis "WL", puis sélectionner l'objet (la classe ou la collection de procédure),
dans l'arborescence de droite apparaissent les fonctions ou les méthodes
Si les nouvelles procédures apparaissent là (la majeure partie des cas), c'est bon.
Dans la négative, faire ClicDroit + Propriétés sur la référence puis "Propriétés" et là changer la
valeur de "Copie Locale", une fois pour "False" et puis remettre "True": là, l'assemblage a été
recopié.
Annexes
Comment savoir quelle(s) version(s) de FrameWork est installée sur un poste
(oui! on peut les "empiler" sur un même poste) ?
3.0 => "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup", "InstallSuccess" = 1
2.0 => "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727", "Install" = 1
1.1 => "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322", "Install" = 1
1.0 => "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\v1.0", "Install" = 1
3/3