Как получить аргументы процесса? [дубликат]

188
12 ноября 2018, 17:00

На данный вопрос уже ответили:

  • Как в консольном приложении разбирать параметры командной строки и выводить по ним справку 3 ответа

Как получить аргументы, c которыми запустили нужный процесс? В формате аргумент-значение.

Answer 1

Аргументы командной строки передаются в функцию Main, которая есть в каждом приложении на дотнете (ну, кроме специализированных, где эта деталь скрыта). Также командная строка целиком доступна через Environment.CommandLine.

В функцию Main аргументы передаются "распарсенными" в соответствии с тем, как аргументы понимает операционная система. Например, аргументы -all -p "123" будут интепретированы как три строки: "-all", "-p", "123". Вне Main эти аргументы можно получить с помощью Environment.GetCommandLineArgs.

Если вам нужна работа с аргументами в более удобной форме, то вы можете воспользоваться одним из многочисленных пакетов с парсерами командной строки на NuGet. Они вам позволят интерпретировать аргументы как имена и значения, преобразуют типы значений, сгенерируют справку и т.п.

Любой парсер, который вы найдёте, будет выдавать пары аргумент-значение. Есть различия в поддерживаемом синтаксисе, типах аргументов, API (декларативные, императивные, ни рыба ни мясо), но базовый функцонал у всех единый.

Большой популярностью пользуется CommandLineParser, но я бы предостерёг от его использования: старая адекватная версия библиотеки заброшена и страдает от нескольких багов, новая версия переписана в совершенно упоротом стиле, неподдерживаема, и светлого будущего не видать. Список популярных библиотек:

  • CommandLineParser — самая популярная, самая упоротая
  • FluentCommandLineParser — другая популярная
  • PowerArgs — ещё одна популярная
  • System.CommandLine — часть Core FX Lab от Microsoft, кандидат на включение в дотнет
  • CommandLineUtils — изначально часть Microsoft ASP.NET MVC, сейчас поддерживается другим разрабом
READ ALSO
Как создать свою библиотеку в composer?

Как создать свою библиотеку в composer?

Есть такая библиотека как PHPExcel, на данный момент её нельзя подключить через composer (package of any version not found), скачал её напрямую с github

157
Как убрать название поля у ActiveForm?

Как убрать название поля у ActiveForm?

Это выводит название поля "Тизер" и потом уже содержимоеКак убрать название поля? Чтобы выходило только содержимое?

192
Можно ли ставить лайки/репосты через facebook api?

Можно ли ставить лайки/репосты через facebook api?

Есть ли возможность ставить лайки/делать репосты с помощью facebbok api? Ходили слухи, что facebook запретили так делать

153
Не подключается BazingaGeocoderBundle в Symfony 4

Не подключается BazingaGeocoderBundle в Symfony 4

Когда инициализирую бандл v 51 в Symfony 4, получаю ошибку:

192