У меня есть консольное приложение, похожее на это:
static void Main(string[] args)
{
if (args.Length == 0)
{
//do something
}
else if (args.Length % 2 == 0)
{
//do something else
}
}
Теперь, когда я создаю и запускаю свой файл .exe, он просто открывается на мгновение, чтобы запустить код, и закрывается.
Возможно ли, что .exe после запуска ждет, пока я введу параметры?
Я знаю, что могу открыть cmd и записать каталог в свой файл и записать свои параметры (C:\Example\MyExe.exe -Parameter1). Но единственный ли это способ?
Он не будет ждать args, поскольку они передаются при запуске приложения, но вы можете реализовать свое приложение для приема пользовательского ввода с помощью Console.ReadLine .
Показанный вами код не заставит консоль ждать ввода. В отличие от некоторых других IDE для сценариев, вам придется писать код, если вы хотите получать подсказки. Если ваш запрос касается того, как указать Visual Studio предоставить аргумент командной строки вашему приложению, вам следует перейти к свойствам проекта и на вкладке отладки есть поле аргументов командной строки, где вы можете ввести эту информацию
Возможный дубликат Почему окно консоли закрывается сразу после отображения моего вывода?
Подсказка: вы можете нажать CTR+F5 (Запустить без отладчика), чтобы запустить консольное приложение. Это автоматически будет ждать нажатия клавиши перед закрытием окна консоли. Таким образом, вы не можете проверить «сделать что-то еще».





Если ваше приложение открывается и сразу же закрывается, это потому, что нет метода «блокировки». Вы можете добавить Console.Read(); в конце, чтобы дождаться нажатия клавиши.
В примере:
static void Main(string[] args)
{
if (args.Length == 0)
{
//do something
}
else if (args.Length % 2 == 0)
{
//do something else
}
Console.WriteLine("Press any key to exit the application.");
Console.Read();
}
Для передачи параметров я привык использовать cmd и передавать аргументы напрямую в exe, но это можно сделать в VS
Щелкните правой кнопкой мыши проект -> Свойства -> Отладка -> Аргументы командной строки.
Да, это единственный способ, потому что параметры передаются при запуске приложения.
Вы можете добавить параметры отладки в Visual Studio, если хотите выполнить отладку. Для этого щелкните правой кнопкой мыши проект и откройте настройки проекта. Затем вы можете добавить их в раздел отладки.
Посмотрите Передача параметров командной строки с помощью Visual Studio C# для получения дополнительной информации.
Дополнительная информация: если вы хотите, чтобы ваше приложение оставалось открытым, пока пользователь не нажмет клавишу, вы можете использовать для этого Console.Read();.
Аргументы командной строки выглядят многообещающе. Но моя проблема здесь в том, что возможно, что аргументы не переданы или до 10 аргументов. Я думаю, это не может быть решено с параметрами отладки?
@axbeit В чем проблема без параметров? Ваш код if (args.Length == 0) будет выполнен. Похоже, у вас более одной проблемы. Вам нужны параметры запуска (как вы использовали в своем коде) или вам нужен пользовательский ввод в качестве параметров?
Хорошо, поэтому я вставил в аргументы командной строки это: «Аргумент1, Аргумент2, Аргумент3». Затем я создаю свой проект. дважды щелкнул MyExe.exe, окно сразу же всплывает и закрывается. Но я хочу, чтобы вместо закрытия он позволял мне писать свои аргументы.
Просто взгляните на ответ от mm8. И будьте более конкретными в своем следующем вопросе ;) Намного проще, когда мы знаем, чего вы пытаетесь достичь, а не спрашиваем вас.
Аргументы командной строки выглядят многообещающе. Но моя проблема здесь в том, что возможно, что аргументы не переданы или до 10 аргументов. Я думаю, это не может быть решено с параметрами отладки?
В этом случае вы можете создать второе приложение и запустить Process.Start для своего приложения с вашими параметрами (или нет).
Is it possible that the .exe waits for me to enter parameters after starting it?
Он не будет ждать args, так как предполагается, что они будут переданы при запуске приложения, но вы можете реализовать свое приложение для приема пользовательского ввода с помощью Console.ReadLine. Вот пример:
static void Main(string[] args)
{
if (args.Length == 0)
{
List<string> arguments = new List<string>();
do
{
Console.WriteLine("Input argument and press <ENTER>: ");
string argument = Console.ReadLine();
if (string.IsNullOrEmpty(argument))
break;
arguments.Add(argument);
} while (true);
Console.WriteLine("continue...");
}
else if (args.Length % 2 == 0)
{
//do something else
}
}
Если добавить строку:
Console.ReadLine();
консоль останется открытой до тех пор, пока не будет нажата клавиша.
Итак, ваш код должен быть:
static void Main(string[] args)
{
if (args.Length == 0)
{
//do something
}
else if (args.Length % 2 == 0)
{
//do something else
}
Console.ReadLine();
}
Чтобы передать некоторые параметры через Visual Studio: щелкните проект правой кнопкой мыши -> Характеристики -> Отлаживать -> Аргументы командной строки
Напишите Console.Readkey() после завершения else if () {}...
консоль не закроется, пока вы не нажмете ввод
Visual Studio имеет страницу в свойствах проекта, где вы можете указать аргументы по умолчанию для своего приложения. В противном случае вам нужно закодировать серию Console.ReadLine, чтобы получить ввод, который вы хотите, непосредственно внутри приложения.