Запустить приложение WPF с аргументами

Я пытаюсь реализовать способ запуска моего приложения WPF с конкретными аргументами через расписание задач Windows и CMD. Я добавил код ниже.

protected override void OnStartup(StartupEventArgs e)
        {

            Logger.Info(e.Args.Length);

            for (int i = 0; i != e.Args.Length; ++i)
            {
                if (e.Args[i] == "test")
                {
                    Logger.Info($"G");
                }
                else
                {
                    Logger.Info($"B");
                }
            }
}

Когда я начинаю публиковать приложение и запускаю его через CMD или планирую его в расписании задач с аргументами, e.Args.Length равен 0. Но когда я добавляю аргумент в Properties > Debug > Command line arguments, он работает. Есть идеи, что мне не хватает?

Это то, что вы ищете stackoverflow.com/questions/11769113/…

G K 02.10.2018 14:30

@GK Я пробовал это, но тут та же проблема

Jason Lie 02.10.2018 14:37

Похоже, вы создаете приложение ClickOnce, верно? Вы пробовали получить параметры с AppDomain.CurrentDomain.SetupInformation.ActivationArguments‌​.ActivationData?

LittleBit 02.10.2018 15:21

@LittleBit Я только что пробовал, но получаю только NullReference

Jason Lie 02.10.2018 15:57

Как пробовали запустить приложение? Нравится формат, предоставленный Sham?

LittleBit 02.10.2018 16:40

@LittleBit Да, я сделал

Jason Lie 03.10.2018 09:13
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
6
1 262
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Для запуска приложения из cmd с аргументами команды используйте следующий формат -

C:\StackOverflow\Bin\Debug> StackOverflow.exe arg1 arg2

Я сделал, но все равно не работает. Это не EXE, а приложение. Имеет ли это значение?

Jason Lie 02.10.2018 15:11

@JasonLie Это приложение для однократного нажатия? Приложение вообще запустилось или возникла ошибка? Не могли бы вы поделиться командой?

Sham 02.10.2018 15:13

Команда - это просто «Тест программы». Он запускается, но когда я печатаю длину массива аргументов, он говорит 0

Jason Lie 02.10.2018 15:55

В любом случае я могу изменить его на .exe при публикации?

Jason Lie 03.10.2018 09:22

@JasonLie Как вы создаете этот файл .Application? Насколько мне известно, он создается через ClickOnce, и будет другой механизм для отправки аргумента в приложение ClickOnce.

Sham 03.10.2018 10:47

Я перешел в Build> Publish

Jason Lie 03.10.2018 10:58

@JasonLie Да, этот вариант предназначен для создания приложения clickonce. Вам понадобится другой механизм для отправки аргумента приложению clickonce. Пожалуйста, обратитесь по ссылке docs.microsoft.com/en-us/visualstudio/deployment/… для получения более подробной информации.

Sham 03.10.2018 11:23

Вам необходимо использовать класс Environment в пространстве имен System и использовать метод GetCommandLineArgs() для получения аргументов.

Например,

Args = Environment.GetCommandLineArgs();
Ответ принят как подходящий

Согласно комментариям к вопросу, я предполагаю, что проблема в том, что начальные аргументы переданы неправильно. Приложение ClickOnce работает как файл .exe и не может быть запущено с параметрами из CMD по соображениям безопасности. (Источник)

Я предлагаю вам взглянуть на это, он хорошо описывает, как аргументы могут быть переданы приложению через строки запроса.

Другие вопросы по теме