Créer un ficher .exe d'une méthode VS C#
Thomas
-
Mr_Evil_Duck Messages postés 45 Statut Membre -
Mr_Evil_Duck Messages postés 45 Statut Membre -
Bonjour à tous,
J'ai en ce moment un petit problème, je n'arrive pas à trouver de solution sur le net, alors voila :
J'ai un programme comprenant plusieurs méthodes, et j'aimerais pouvoir créer un executable pour lancer chacune de ces methodes en ligne de commande, le top serait même de pouvoir y passer des arguments. Quelqu'un aurait une idée de comment faire ? Je suis en C# sous visual studio 2013.
J'ai bien pensé faire un projet pour chaque méthode et utiliser le .exe dans Bin/Debug mais j'ai pas mal de réferences à importer et cela ne permet pas de passer d'arguments ... Et c'est aussi un peu crado !
Merci d'avance !
J'ai en ce moment un petit problème, je n'arrive pas à trouver de solution sur le net, alors voila :
J'ai un programme comprenant plusieurs méthodes, et j'aimerais pouvoir créer un executable pour lancer chacune de ces methodes en ligne de commande, le top serait même de pouvoir y passer des arguments. Quelqu'un aurait une idée de comment faire ? Je suis en C# sous visual studio 2013.
J'ai bien pensé faire un projet pour chaque méthode et utiliser le .exe dans Bin/Debug mais j'ai pas mal de réferences à importer et cela ne permet pas de passer d'arguments ... Et c'est aussi un peu crado !
Merci d'avance !
A voir également:
- Créer un ficher .exe d'une méthode VS C#
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Créer un lien pour partager des photos - Guide
- Créer un compte gmail - Guide
- Creer un fichier .bat - Guide
1 réponse
Bonjour,
Avec visual studio, un projet = un exécutable.
Par contre, tu peux avoir un seul exécutable mais dont le premier argument définisse la fonction à appeler.
Par exemple pour une calculatrice, tu aurais un exécutable operation.exe qui pourrait être appelé comme ceci :
> operation.exe --addition 1 4
La syntaxe en question est entière libre, c'est toi qui la définis. Comment ? Tout se passe dans ta classe Program, fonction Main. Regarde les paramètres qu'elle porte :
Dans l'exemple du dessus, args contient donc ["--addition", "1", "4"] (sous forme de chaînes de caractères).
C'est donc toi qui dois définir les options possibles et, en fonction des arguments, appeler telle ou telle méthode.
Voici une calculatrice très rudimentaire :
Après on peut faire des choses bien plus complexes en utilisant des syntaxes d'arguments telles que /o=add, etc. Tu fais ce que tu veux mais c'est à toi de le coder ;)
Quelque chose de sympa aussi, c'est de penser à autoriser le /? qui va afficher la syntaxe attendue. C'est standard.
Xavier
Avec visual studio, un projet = un exécutable.
Par contre, tu peux avoir un seul exécutable mais dont le premier argument définisse la fonction à appeler.
Par exemple pour une calculatrice, tu aurais un exécutable operation.exe qui pourrait être appelé comme ceci :
> operation.exe --addition 1 4
La syntaxe en question est entière libre, c'est toi qui la définis. Comment ? Tout se passe dans ta classe Program, fonction Main. Regarde les paramètres qu'elle porte :
Main(string[] args). Que contient le tableau "args" ? Il contient justement les paramètres additionnels fournis lors de l'appel du programme, séparés par des espaces et prenant en compte les éventuels guillemets.
Dans l'exemple du dessus, args contient donc ["--addition", "1", "4"] (sous forme de chaînes de caractères).
C'est donc toi qui dois définir les options possibles et, en fonction des arguments, appeler telle ou telle méthode.
Voici une calculatrice très rudimentaire :
using System;
namespace Calculatrice
{
class Program
{
private enum Operations {Addition, Soustraction, Multiplication, Division}
private static Operations _operation;
private static double _op1, _op2;
static void Main(string[] args)
{
if (!CheckArgs(args))
Help();
else
{
switch (_operation)
{
case Operations.Addition:
Console.WriteLine("{0} + {1} = {2}", _op1, _op2, _op1 + _op2);
break;
case Operations.Soustraction:
Console.WriteLine("{0} - {1} = {2}", _op1, _op2, _op1 - _op2);
break;
case Operations.Multiplication:
Console.WriteLine("{0} x {1} = {2}", _op1, _op2, _op1 * _op2);
break;
case Operations.Division:
Console.WriteLine("{0} / {1} = {2}", _op1, _op2, _op1 / _op2);
break;
default:
throw new ArgumentOutOfRangeException();
}
}
}
private static void Help()
{
Console.WriteLine("Usage : calculatrice.exe op op1 op2");
Console.WriteLine("op peut valoir :");
Console.WriteLine(" a, +, addition : génère une addition");
Console.WriteLine(" s, -, soustraction : génère une soustraction");
Console.WriteLine(" m, x, *, multiplication : génère une multiplication");
Console.WriteLine(" d, /, division : génère une division");
Console.WriteLine("op1 et op2 sont les opérandes.");
}
private static bool CheckArgs(string[] args)
{
if (args.Length == 0)
return false;
switch (args[0])
{
case "/?":
return false; // Pour afficher l'aide
case "a":
case "+":
case "addition":
_operation = Operations.Addition;
break;
case "s":
case "-":
case "soustraction":
_operation = Operations.Soustraction;
break;
case "m":
case "x":
case "*":
case "multiplication":
_operation = Operations.Multiplication;
break;
case "d":
case "/":
case "division":
_operation = Operations.Division;
break;
}
if (args.Length < 3)
return false;
try
{
_op1 = double.Parse(args[1]);
_op2 = double.Parse(args[2]);
}
catch
{
return false;
}
return true;
}
}
}
Après on peut faire des choses bien plus complexes en utilisant des syntaxes d'arguments telles que /o=add, etc. Tu fais ce que tu veux mais c'est à toi de le coder ;)
Quelque chose de sympa aussi, c'est de penser à autoriser le /? qui va afficher la syntaxe attendue. C'est standard.
Xavier
Thomas
Merci beaucoup Xavier pour ta réponse rapide et détaillée, c'est bien cela que je cherchais !
Mr_Evil_Duck
Messages postés
45
Statut
Membre
2
N'oublie pas de mettre la discussion en résolue =)