#c# #command-line #parameters #console-application
#c# #командная строка #параметры #консоль-приложение
Вопрос:
Есть ли простой способ разрешить набор пар ключ / значение (обе строки) в качестве параметров командной строки для консольного приложения?
Комментарии:
1. Вы имеете в виду параметры командной строки?
2. Да, я действительно имею в виду параметры командной строки.
Ответ №1:
Если вы имеете в виду наличие командной строки, выглядящей следующим образом: c:> YourProgram.exe / switch1:значение1 / switch2:значение2 …
Это можно легко проанализировать при запуске с помощью чего-то вроде этого:
private static void Main(string[] args)
{
Regex cmdRegEx = new Regex(@"/(?<name>. ?):(?<val>. )");
Dictionary<string, string> cmdArgs = new Dictionary<string, string>();
foreach (string s in args)
{
Match m = cmdRegEx.Match(s);
if (m.Success)
{
cmdArgs.Add(m.Groups[1].Value, m.Groups[2].Value);
}
}
}
Затем вы можете выполнить поиск в словаре cmdArgs. Не уверен, что это то, чего вы хотите.
Ответ №2:
Не существует хорошего способа точной передачи пар ключ / значение из командной строки. Единственное, что доступно, — это массив строк, который вы можете перебирать и извлекать в виде пар ключ / значение.
using System;
public class Class1
{
public static void Main(string[] args)
{
Dictionary<string, string> values = new Dictionary<string, string>();
// hopefully you have even number args count.
for(int i=0; i < args.Length; i =2){
{
values.Add(args[i], args[i 1]);
}
}
}
а затем вызовите
Class1.exe ключ1 значение1 ключ2 значение2
Ответ №3:
Точкой входа приложения является main
метод, который может принимать string[]
один из аргументов (это аргументы командной строки).
Это нельзя изменить. Смотрите MSDN.
Чтобы упростить работу с этим, существует множество вспомогательных библиотек командной строки, которые можно использовать.
Одной из таких библиотек является .NET CLI от ребят из MONO и многих других.