OVH Cloud OVH Cloud

comment créer un composant COM

8 réponses
Avatar
sam
bonjour,
est ce que quelqu'un sait comment on fait pur cr=E9er un composant COM
et l'enregistrer comme un serveur.
merci

8 réponses

Avatar
Patrice
Voir l'outil "regasm" qui permet d'enregistrer un assembly .NET comme
composant COM :

http://msdn2.microsoft.com/fr-fr/library/tzat5yw6.aspx


--
Patrice

"sam" a écrit dans le message de news:

bonjour,
est ce que quelqu'un sait comment on fait pur créer un composant COM
et l'enregistrer comme un serveur.
merci
Avatar
Patrick Philippot
Bonjour,

Nativement, .Net ne connaît pas COM et inversement. On ne peut pas créer
directement un composant COM avec .Net. On peut par contre créer un
composant .Net et via les services Interop (comme décrit par Patrice) le
faire voir aux clients COM comme un serveur COM. Ça marche aussi dans
l'autre sens.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr


"sam" wrote in message
news:
bonjour,
est ce que quelqu'un sait comment on fait pur créer un composant COM
et l'enregistrer comme un serveur.
merci
Avatar
sam
bonjour,
merci pour votre réponse.
En fait j'ai créer un composant com avec VB.net et voici la methode
que j'ai suivi:
Étape 1 - Création de l'application
1. Créez un nouveau projet de type "Class Library"




2. Effacez la classe class1.vb
3. Ajoutez une nouvelle classe de type "COM Class"
4. Ajoutez une ou plusieurs fonctions à cette classe
Étape 2 - Construction (build) du composant COM

Pour que .NET puisse construire un COM, vous devez ajouter un "strong
name" à votre projet.
2. Ouvrez une session DOS via le raccourci "Visual Studio .NET Command
Prompt"
3. À l'invité DOS, tapez "sn -k le_nom_de_votre_projet.snk"
4. Ajoutez le fichier nouvellement créé "le_nom_de_votre_projet.snk"
dans le répertoire objDebug (ou objRelease, selon le mode de votre
projet)
5. Éditez le fichier AssemblyInfo.vb pour y ajouter une référence au
fichier .snk nouvellement créé en ajoutant l'attribut suivant:
o <Assembly: AssemblyKeyFile("le_nom_de_votre_projet.snk")>
6. Sauvegardez les changements et construisez (build) votre projet
Étape 3 - Enregistrement du composant COM

Traditionnellement, les composants COM étaient enregistrées avec
l'utilitaire regsvr32.exe mais comme .NET ne construit pas tout à fait
un composant COM traditionnel, mais plutôt un emballage (wrapper) qui
permet d'émuler un composant COM, il faut donc l'enregistrer
différemment.
1. Après la construction de votre projet, deux fichiers seront créés
dans le répertoire /bin de votre projet; Un fichier avec l'extension
.dll et un fichier avec l'extension .tlb, copiez ces 2 fichiers sur
l'ordinateur où vous désirez les utiliser (le fichier avec
l'extension .pdb, (si en mode debug) n'est pas requis)
2. Toujours à l'invité de votre fenêtre DOS "Visual Studio .NET
Command Prompt", tapez les commandes suivantes (voir le point 1 de
l'étape 2 si elle n'est pas ouverte):
o Enregistrez votre assembly (.dll):
regasm votredll.dll
o Ajoutez une référence à votre assembly (.dll) dans le Global
Assembly Cache (GAC):
gacutil -i votredll.dll


Le problème maintenant c'est que q'on j'utilise une application qui
utilise mon composant COM.(ajouter une référence ) le message
d'erreur s'affiche.
"une référence à "maDLL" n'a pas pu être ajoutée. echec de la
conversion de la bibliothèque de types en assempbly.net.la
bibliothèque de types "ma dll" à été axportée d'un assembly CLR et
ne peut pas être de nouveau importée en tant qu'assembly CLR.
est ce que ce messge d'erreur te dit quelque chose
merci
Avatar
Patrice
Et le composant COM (plus précisemment la biliothèque de classe .NET rendue
accessible via COM) est utilisé à partir de quel outil ?

La partie "la bibliothèque de types "ma dll" à été axportée d'un assembly
CLR et ne peut pas être de nouveau importée en tant qu'assembly CLR." me
fait penser que tu essaies d'utiliser un assembly .NET exposé en tant que
composant COM à partir de .NET. Si cest bien le cas, pourquoi ne pas
utiliser directement la DLL .NET dans ton projet .NET ?

Bon courage.

--
Patrice

"sam" a écrit dans le message de news:

bonjour,
merci pour votre réponse.
En fait j'ai créer un composant com avec VB.net et voici la methode
que j'ai suivi:
Étape 1 - Création de l'application
1. Créez un nouveau projet de type "Class Library"




2. Effacez la classe class1.vb
3. Ajoutez une nouvelle classe de type "COM Class"
4. Ajoutez une ou plusieurs fonctions à cette classe
Étape 2 - Construction (build) du composant COM

Pour que .NET puisse construire un COM, vous devez ajouter un "strong
name" à votre projet.
2. Ouvrez une session DOS via le raccourci "Visual Studio .NET Command
Prompt"
3. À l'invité DOS, tapez "sn -k le_nom_de_votre_projet.snk"
4. Ajoutez le fichier nouvellement créé "le_nom_de_votre_projet.snk"
dans le répertoire objDebug (ou objRelease, selon le mode de votre
projet)
5. Éditez le fichier AssemblyInfo.vb pour y ajouter une référence au
fichier .snk nouvellement créé en ajoutant l'attribut suivant:
o <Assembly: AssemblyKeyFile("le_nom_de_votre_projet.snk")>
6. Sauvegardez les changements et construisez (build) votre projet
Étape 3 - Enregistrement du composant COM

Traditionnellement, les composants COM étaient enregistrées avec
l'utilitaire regsvr32.exe mais comme .NET ne construit pas tout à fait
un composant COM traditionnel, mais plutôt un emballage (wrapper) qui
permet d'émuler un composant COM, il faut donc l'enregistrer
différemment.
1. Après la construction de votre projet, deux fichiers seront créés
dans le répertoire /bin de votre projet; Un fichier avec l'extension
.dll et un fichier avec l'extension .tlb, copiez ces 2 fichiers sur
l'ordinateur où vous désirez les utiliser (le fichier avec
l'extension .pdb, (si en mode debug) n'est pas requis)
2. Toujours à l'invité de votre fenêtre DOS "Visual Studio .NET
Command Prompt", tapez les commandes suivantes (voir le point 1 de
l'étape 2 si elle n'est pas ouverte):
o Enregistrez votre assembly (.dll):
regasm votredll.dll
o Ajoutez une référence à votre assembly (.dll) dans le Global
Assembly Cache (GAC):
gacutil -i votredll.dll


Le problème maintenant c'est que q'on j'utilise une application qui
utilise mon composant COM.(ajouter une référence ) le message
d'erreur s'affiche.
"une référence à "maDLL" n'a pas pu être ajoutée. echec de la
conversion de la bibliothèque de types en assempbly.net.la
bibliothèque de types "ma dll" à été axportée d'un assembly CLR et
ne peut pas être de nouveau importée en tant qu'assembly CLR.
est ce que ce messge d'erreur te dit quelque chose
merci
Avatar
sam
oui effectivement c'est ce que tu as pensé j'utilise le VB.net.
et le fait d'utiliser directement la DLL ça marche.
alors c'est j'ai bien compris c'est normale c'est j'ai ce message
d'erreur, c'est pas pour ça que j'arrive pas à faire une application
DCOM.(un client .net et un serveur COM écris en .net).
Une fois j'améne le serveur sur une autre machine (ma DLL COM) ,tout
ce passe comme c'est mon serveur existe sur ma machine locale.
Merci beaucoup.
Avatar
sam
j'ai une autre question qui peut être plus claire:
Comment ajouter une application aux applications DCOM,pour pouvoir la
configurer.
merci.
A+
Avatar
Patrice
Je dirais
http://msdn2.microsoft.com/fr-fr/library/system.enterpriseservices.aspx....


--

"sam" a écrit dans le message de news:

j'ai une autre question qui peut être plus claire:
Comment ajouter une application aux applications DCOM,pour pouvoir la
configurer.
merci.
A+
Avatar
sam
Bonjour,
j'était totalement occupé avec mon stage, et j'ai pas eu le temps de
te remercié. merci c'est fini avec les objet com sa marche maintenant.
Merci




Patrice a écrit :

Je dirais
http://msdn2.microsoft.com/fr-fr/library/system.enterpriseservices.aspx.. ..


--

"sam" a écrit dans le message de news:

j'ai une autre question qui peut être plus claire:
Comment ajouter une application aux applications DCOM,pour pouvoir la
configurer.
merci.
A+