Аргумент отладки приложения WPF работает нормально, но игнорируется в CMD - PullRequest
0 голосов
/ 31 октября 2018

У меня есть приложение WPF, которому нужно получить параметр, позволяющий выбрать экран, который должен отображаться. Это работает как очарование, когда я использую функцию «Аргументы командной строки» в «Project правой кнопкой мыши -> Свойства -> Отладка». Проблема возникает, когда я публикую приложение и пытаюсь передать аргумент, используя CMD, потому что он полностью игнорируется , Вот код: App.xaml.cs класс

  private void Application_Startup(object sender, StartupEventArgs e)
        {
            log4net.Config.XmlConfigurator.Configure();
            log.Debug("Paramerters: " + e.Args.Length);
            foreach (var parameter in e.Args )
            {
                log.Debug("Arg " + parameter);
            }
            var screen = 0;
            if (e.Args.Length > 0)
            {
                if(Int32.TryParse(e.Args[0], out screen))
                {
                    log.Debug("Parameter: " + screen);
                } else
                {
                    log.Debug("Invalid parameter : " + e.Args[0]);
            }
        }

        log.Debug("Screen: " + screen);
        App.Current.Properties["Screen"] = screen;
        log.Debug("Screens count: " + System.Windows.Forms.Screen.AllScreens.Length);

        if (screen >= System.Windows.Forms.Screen.AllScreens.Length)
        {
            log.Debug("Error screens count: " + System.Windows.Forms.Screen.AllScreens.Length);
            App.Current.Shutdown();
        }
        else
        {
            var screen1 = App.Current.Properties["Screen"];
            MainWindow mainWindow = new MainWindow();
            var screenBounds = System.Windows.Forms.Screen.AllScreens[screen].Bounds;
            mainWindow.Left = screenBounds.Left;
            mainWindow.Top = screenBounds.Top;
            mainWindow.Show();
            mainWindow.WindowState = WindowState.Maximized;
        }
    }

Я что-то упустил? Я использую следующую строку, чтобы запустить приложение (оно запускается, но аргумент всегда по умолчанию): AppName 1 Кроме того, у меня наверняка есть более 1 экрана.

Редактировать с выводом логов:

2018-10-31 12: 42: 20,366 [1] Приложение DEBUG - Параметры: 0

2018-10-31 12: 42: 20,396 [1] Приложение DEBUG - Экран: 0

2018-10-31 12: 42: 20,401 [1] Приложение DEBUG - Количество экранов: 2

1 Ответ

0 голосов
/ 31 октября 2018

Хорошо, похоже, что использование ссылки на приложение не работает. Я поставил полный путь к приложению, и оно работает. Это должно быть что-то похожее на: C: \ Users \ SMACS \ AppData \ Local \ Apps \ 2.0 \ MMA17POZ.R0G \ PHXLDOK5.2Y8 \ pane..tion_d85c1227db19dafd_0001.0000_ae3906090ab02453

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...