Pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter, inscrivez-vous gratuitement !

 

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    juin 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2007
    Messages : 317
    Points : 151
    Points
    151

    Par défaut VB.NET et C# dans la même solution

    Bonjour,

    J'ai un appli assez grosse en VB.NET

    Elle utilise 3 dll ; pour 2 dll je possède le code source en C#

    J'ai déjà commencé à modifier le code des DLL pour les adapter à mon projet.

    Plus j'avance et plus je me rends compte qu'il faudrait que j'intègre le code des DLL au projet

    Le projet et les DLL ont un code long et complexe, il est très long et compliqué de tout traduire soit en VB ou soit en C#
    Le projet et les DLL en question réalisent des calculs scientifiques ; c'est très compliqué la moindre petite erreur même très subtile peut occasionner un plantage ou pire être difficile à détecter car elle ne plantera le programme que dans un cas particulier rare.

    A la base, VB.NET et C# sont du .NET et donc compatibles, ils génèrent le même MSIL
    De plus, VS Express 2015 ouvre aussi bien les projets VB.NET que C# (auparavant j'avais VB Express 2010 et je devais utiliser une autre installation pour ouvrir les projets C#)

    Aussi est il possible d'avoir dans un même projet ou une même solution mon projet initial en VB.NET avec le code correspondant aux DLL en C# ? Tout serait compilé ensemble et je n'aurais plus de DLL ; surtout dans mon code je pourrais communiquer beaucoup plus facilement entre le code VB.NET et celui en C#.

    Merci et à bientôt

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    février 2010
    Messages
    3 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : février 2010
    Messages : 3 435
    Points : 9 050
    Points
    9 050
    Billets dans le blog
    3

    Par défaut

    Oui il est possible d'avoir des projets VB.NET et des projets C# dans une meme solution. Il suffit d'ajouter des references entre les projets. Chaque projet sera compile sous la forme d'une DLL.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige

  3. #3
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    9 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : janvier 2007
    Messages : 9 378
    Points : 25 093
    Points
    25 093

    Par défaut

    Tu peux très bien avoir, dans ta solution, un prjet en vb pour ton logiciel principal, et autant de projet en C# que tu as de dll. Chacun sera compilé et donnera un binaire correspondant, dll d'un coté, exécutable de l'autre

    Par contre, à ma connaissance, il n'est pas possible de mixer les langages au sein d'un même projet. Donc tu veux que le code de tes dll ne soit pas compilé en dll, mais directement intégré à ton projet VB, il va falloir convertir
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    juin 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2007
    Messages : 317
    Points : 151
    Points
    151

    Par défaut

    Citation Envoyé par sevyc64 Voir le message
    Tu peux très bien avoir, dans ta solution, un prjet en vb pour ton logiciel principal, et autant de projet en C# que tu as de dll. Chacun sera compilé et donnera un binaire correspondant, dll d'un coté, exécutable de l'autre

    Par contre, à ma connaissance, il n'est pas possible de mixer les langages au sein d'un même projet. Donc tu veux que le code de tes dll ne soit pas compilé en dll, mais directement intégré à ton projet VB, il va falloir convertir
    C'est bien ce que je pensais

    Le projet en VB.NET comporte une interface graphique assez complexe, beaucoup de fenêtre ayant chacune beaucoup de contrôles

    Les projets C# que du code, logique pour des DLL de calcul

    La traduction C# vers VB.NET semble la meilleure option ? Existe-t-il des fonctions C# absentes de VB ?

    A bientôt

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    avril 2007
    Messages
    13 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : avril 2007
    Messages : 13 180
    Points : 24 055
    Points
    24 055

    Par défaut

    si le but est d'avoir au final une seule dll ou un seul exe il existe ILMerge qui permet de fusionner tout, donc à partir de c# + vb.net ca doit fonctionner
    mais ca se fait après compilation

    vb.net ne doit toujours pas avoir le mot clé yield, ca ne gère pas le code unsafe non plus
    2 choses assez rares quand même donc ca devrait aller
    il y a des sites et décompilateurs qui permettent de traduire de l'un à l'autre (il faut parfois apporter quelques modifications manuellement)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    juin 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2007
    Messages : 317
    Points : 151
    Points
    151

    Par défaut

    Citation Envoyé par Pol63 Voir le message
    si le but est d'avoir au final une seule dll ou un seul exe il existe ILMerge qui permet de fusionner tout, donc à partir de c# + vb.net ca doit fonctionner
    mais ca se fait après compilation

    vb.net ne doit toujours pas avoir le mot clé yield, ca ne gère pas le code unsafe non plus
    2 choses assez rares quand même donc ca devrait aller
    il y a des sites et décompilateurs qui permettent de traduire de l'un à l'autre (il faut parfois apporter quelques modifications manuellement)
    J'utilise ILMerge pour n'avoir qu'un seul EXE et être ainsi certain que les DLL utilisés sont les versions que j'ai fourni avec (trop de mauvais souvenirs avec VB5, les DLL et les OCX)

    Mais en effet ça fusionne l'EXE et les DLL après la compilation.

    Bien vu pour yield et unsafe, je vais commencer par déterminer si ces fonctions sont utilisées dans le code des DLL

    unsafe c'est un peu ennuyeux, car quand on a besoin de performance on peut être amener à écrire dans la mémoire directement plutôt que d'utiliser de multiples objets.
    Dans le projet VB.NET une partie du programme réalise de nombreux calculs sur une image BMP, j'ai réussit à faire ça proprement en travaillant sur un tableau d'octets et en utilisant que des instructions sur les nombres entiers et des opérations binaires, avec un code optimisé. En fait à aucun moment le traitement d'image recours à des fonctions graphiques, elles sont trop lentes.

    Oui il y a des outils de conversion mais je les utiliserais fonction par fonction ; je n'ai pas envie de perdre les commentaires et la mise en page du code.

    A+

Discussions similaires

  1. Cohabitation EF 1 et 4 dans la même solution
    Par CUCARACHA dans le forum Entity Framework
    Réponses: 5
    Dernier message: 04/05/2011, 09h48
  2. Réponses: 2
    Dernier message: 16/12/2009, 13h36
  3. Communication entre 2 projets dans une même solution
    Par Alex972 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 30/03/2009, 04h35
  4. Réponses: 11
    Dernier message: 13/03/2008, 11h06
  5. C++.Net et natif dans une meme solution
    Par onur dans le forum VC++ .NET
    Réponses: 8
    Dernier message: 15/05/2006, 07h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo