Visual basic sur linux / Mac ?

Résolu
Bonjour, bonsoir,

Je suis un développeur amateur sous Visual studio 2013, en visual basic.

J'aimerais développer une application fonctionnant sous Windows, Mac, Linux etc en visual basic, existe-il des solution pour ?

Merci beaucoup.

1 réponse

  1. Contributeur
    'lut, le VB.NET utilise le runtime .NET, qui en principe est cross-platform. En l'occurrence, en installant Mono, tu pourras lancer des .EXE écrits en langages .NET (donc VB.NET, C#, ...), mais avec certaines restrictions: certaines fonctions spécifiques ne sont pas dispo dessus, comme par exemple les P/Invoke ou les forms WPF -- ce sont donc des choses à ne pas mettre dans ton appli.
    Mono dispose d'un outil nommé MoMa, qui t'indique si ton programme marchera comme il faut sous Mono (donc Linux/OSX) et dans le cas contraire, ce qu'il faut changer pour.
    1. Merci, grosso-modo, le type, il installe Mono, et prend mon programme et hop il peut l'utiliser ?

      Aucuns besoins que je modifie mon programme ?

      Et pour les variables d'environnement (car le programme doit télécharger un fichier, et les noms d'endroit ou il sera téléchargé changent entre plateforme non ?), comment ça ce passe à ce niveau ?
    2. Contributeur
      @Kaiibatado"Aucuns besoins que je modifie mon programme ? " Ouep, Mono fournit une compatibilité avec les binaires produits.

      Les variables d'environnement sont "compatibles" partout, par contre tu ne trouveras pas les mêmes selon les plate-formes: sous Windows tu dois télécharger dans un répertoire d'AppData par ex, sous Linux il faut suivre le standard XDG (XDG_RUNTIME_DIR si c'est très temporaire, XDG_CACHE_HOME si c'est considéré comme du cache, XDG_DATA_HOME si c'est supposé "permanent"), et pour OS X, cf cette réponse StackOverflow pour les chemins qui correspondent à ceux de XDG.
      Tu peux détecter la plate-forme utilisée grâce à
      Environment.OSVersion
      , plus particulièrement son membre
      Platform 
      qui est une énum PlatformID.
      Aussi, veille bien a ne jamais utiliser les antislash (
      \
      ) en tant que séparateur de chemin dans ton code: le standard c'est le slash
      /
      , qui marche même sous Windows. Mieux encore, sers toi de la classe System.IO.Path qui permet la manipulation de chemins indépendamment de la plate-forme.
    3. Merci beaucoup, tu m'aide beaucoup, je lock le sujet, merci, bonne journée.