Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

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

#c_sharp #парсер #командная_строка


        
             
                
                    
                        
                            На этот вопрос уже даны ответы здесь:
                            
                        
                    
                
                        
                            Как в консольном приложении разбирать параметры командной
строки и выводить по ним справку
                                
                                    (4 ответа)
                                
                        
                                Закрыт 2 года назад.
            
                    
Как получить аргументы, c которыми запустили нужный процесс? В формате аргумент-значение.
    


Ответы

Ответ 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, сейчас поддерживается другим разрабом

Комментариев нет:

Отправить комментарий