44
votes

.NET 6.0 C # "Nouveau modèle de console" - Comment lire les arguments CLI?

Maintenant que .NET 6.0 est sorti, ce qui semble avoir une mise à jour radicale du modèle de projet CLI par défaut est l'absence de réduction de la buisaille n'est pas clair (et j'ai essayé de trouver la documentation jusqu'à présent, en vain) est comment accéder aux arguments de ligne de commande transmis à la classe d'entrée de l'exécutable?


4 commentaires

Juste parce que la spécification explicite de la méthode Main n'est plus nécessaire (car elle est ajoutée automatiquement en arrière-plan), cela ne signifie pas qu'il n'est pas autorisé ...


Suivez simplement le lien dans le commentaire, il explique quoi faire lorsque vous avez besoin de main ().


L'intention de la question est d'aider ceux qui souhaitent adopter la nouvelle façon de travailler avec de tels modèles de projet, faute de clarté dans la documentation en raison de son «bord de saignement». L'utilisation du modèle d'origine signifie essentiellement "n'utilisez pas le nouveau modèle" qui est une approche régressive.


@Hanspassant Le lien ne documente pas le moyen alternatif d'accéder aux arguments CLI avec le nouveau modèle. Ma question ne demande pas comment utiliser main () .


2 Réponses :


67
votes

Vous pouvez accéder aux arguments de ligne de commande de n'importe où dans votre code en utilisant le Environnement Classe.

En particulier, vous pouvez utiliser Environment.getCommandLineargs :

string name = Environment.GetCommandLineArgs()[1];
Console.WriteLine($"Hello, {name}!");

Notez que le premier élément du tableau contient le chemin d'exécutable et les arguments transmis au programme commencent par le deuxième élément, c'est-à-dire à l'index 1.


2 commentaires

Je vérifiais et ce travail aussi: Console.WriteLine ($ "Hello, World! {Args [1]}");


@Peres Oui, c'est la réponse de Guru Stron



39
votes

Les nouveaux modèles de projet utilisent la fonction C # 9 appelée Instructions de niveau supérieur .

Pour le compilateur de fichiers de relevé de niveau supérieur générera string [] args Paramètre (en fait il génère toute la classe contenant la méthode ), afin que vous puissiez simplement l'utiliser (comme précédemment a été fait avec main (String [] args) ):

Console.WriteLine(args.Length);

Plus d'informations sur les modèles de génration peuvent être trouvées dans les documents . p >


4 commentaires

Ne compile pas car args n'est pas défini.


@ djtubig-malicex Je l'ai à compiler sur ma machine, sur ShrapLab.io (l'un des liens de la réponse) et voici dotnetfiddle .


Pourquoi cela semble-t-il pythonique ?


@IABStract Même dans Python, vous devez toujours explicitement Importer sys pour accéder à sys.argv .