v Forum » Forum technique
Salut,

Voilà depuis deux jours je me suis lancé dans le cadre de mon stage au développement de différents outils codés en C Sharp (C#). Actuellement en cours de familiarisation et d´apprentissage du nouvel environnement de développement .NET, je suis néanmoins confronté à une question...

Quelles sont les possibilités d´interopérabilités entre C# et VB.NET sachant que je serai amené à envoyer des composants codés en C# vers du VB.NET. J´avais pensé aux ActiveX mais je n´ai pas trouvé pour le moment comment en développer via C# (leur importation en revanche semblant possible).

Si l´un d´entre vous a une idée ou une proposition efficace pour relier une application VB.NET à du C#cela m´interesse .


@ plus
WG_RavAge
MESSAGE MODIFIE LE : 14/06/2005 - 09:55
Si tu veut réutiliser des composants C# dans du VB.net (ou n´importe quel autre outils de dévellopement sous Windows) il n´y a effectivement que les ActiveX (ou les objets COM pour les intimes) qui peuvent t´aider. Pour les créer cela ne depend que de l´outils de dévellopement C# que tu utilise, normalement dans la partie création d´un nouveau projet quelque part tu devrait trouver un truc du style "création d´un objet COM" ou "création d´un Active X". Ensuite tu n´a plus qu´a déterminer les propriétés et méthodes à exporter et a les coder.
Une fois que tu a créé ton beau composant, si tu veut l´installer sur une autre machine n´oublie pas de l´enregistrer. Soit avec un utilitaire d´installation style InstallShield, soit avec la commande Windows RegSvr32 .
Euuh depuis quand Ravage et Balrog parlent ils chinois
Citation de Fat_Yak :
« Euuh depuis quand Ravage et Balrog parlent ils chinois
»
1- Le mandarin est la langue la plus parlé au monde.
2- D´ici 30 ans maximum la Chine sera la première puissance économique mondiale.
Conclusion : tu voit ce qu´il te reste à faire lol .

Question qui n´a rien à voir avec le sujet.

Balrog pourrait devenir modo de la partie "forum technique" ? car il est toujours là des que la sitution se complique. Cela aiderait, j´en suis sur, notre cher Ravage.
Salut,

Merci à Balrog pour ses réponses, je vais donc creuser un peu plus au niveau des Active X, mais il me semble qu´un nouveau type d´objet "COM" est apparu sur .Net. C´est un peu il me semble le principe de cette plateforme et de son framework que de permettre une plus grande compatibilité entre les langages (d´ailleurs au final le code compilé est quasi identique quel que soit les langages en .Net).

Peut être qu´à défaut de liaison dynamique il est possible d´intégrer un prog sous forme de librairie ou de code déjà précompilé dans un projet VB.Net ? Je n´ai pas vraiment eu le temps de fouiller tout cela car j´ai eu une demande urgente pour coder une interface de tranfert de données en VB (arf j´avais pas touché à VB depuis 2 ans mais c´est toujours aussi lourd entre l´interpréteur de syntaxe et le fait que si le prog plante, VB plante aussi ) !

Enfin pour répondre à Julienlp235 je pense que c´est une bonne remarque et que Balrog mériterait effectivement ce titre sur ce forum . Je vais tâcher de m´en occuper ce matin.


@ plus
WG_RavAge
Depuis hier Visual Studio 2005 express est télechargable en version bêta . J´ai dl le Visual C# 2005 express et effectivement les objets COM n´existent plus sous DotNet. Ils ont été remplacés par une ´librairie de classe" qui permettent de compiler une Dll mais je n´ai pas eu le temps d´approfondir la question.

Si tu as simplement besoin de récupérer des unités compilés en C# sous VB.Net à mon avis cela devrait être faisable sous Visual Studio 2005. Borland permet déjà avec Delphi 2005 de mélanger des unités C# avec des unités Delphi, Microsoft ne peut pas proposer moins avec Visual Studio .

Tu pourra trouver les versions beta des versions express des outils de dev de Microsoft a cette adresse : http://lab.msdn.microsoft.com/express/
Tu y trouvera aussi la version express de SQL Server 2005, qui remplacera dans Longhorn l´antique moteur Jet (ou Access pour les intimes ) que microsoft trainait depuis ... Windows 3.1 .

Pour le titre de modo sur le forum technique, ce serait avec grand plaisir .
Salut,

Voilà c´est avec un peu de retard que je réponds à nouveau au topic ^^... En effet une mission d´une semaine m´a été confiée cette fois en VB pour réaliser une assez grosse migration de base de données pour un client. Enfin cela aura eu pour effet de me remémorer à quel point je n´aime plus le VB en comparaison à C++ et C# à présent .

Bref tout ceci étant achevé, je suis de nouveau sous DotNet depuis hier matin sur lequel j´ai tenté d´approfondir le problème dont je parle dans ce topic. Petite rectification néanmoins au sujet initial, il ne s´agit plus de dialogue C# vers VB.Net, mais C# vers VB6 !

Autant dire que là c´est déjà plus ennuyeux car la compatibilité n´est pas directement assurée. Le VB6 utilise des liaisons spécifiques avec les DLL au niveau de son "intellisense" et il gère l´Active X. DotNet en revanche marque un terme avec l´Active X en implémentant de nouveaux composants COM sous la forme de librairie de classes comme l´indiquait Balrog.

Bref pour parvenir à faire marcher tout cela il faut faire appel à un "Warper" lors de la compilation de la DLL. Le warper a pour effet d´emballer en quelque sorte la DLL avec un ensemble d´infos annexes permettant de la rendre compatible avec VB6. Pour ceux qui tomberaient par hasard sur ce topic via google, cherchez des infos sur la commande "RegAsm" accessible via le terminal disponible dans le groupe de programmes "outils" de Visual Studios 2005.

Cette commande aura pour effet de générer un fichier TLB qui peut être mis en référence sous VB6. Attention à lui définir un nom fort ("strong name" via la commande "sn" sinon vous risquez avoir qq problèmes.

Bref au final je parviens à dialoguer à présent avec ma classe C# sous VB. Seul bémol je n´arrive pas à aller écrire directement dans les propriétés publiques de ma classe, je suis obligé de passer par des méthodes Set & Get que j´ai implémenté. Au niveau programmation objet propre de toute manière le principe veut que l´on mette tout en private donc au final c´est peut être pas plus mal .


@ plus
WG_RavAge