StartProcess, используя значение из Properties.Settings приводит к необычным результатам - PullRequest
1 голос
/ 08 марта 2010

Я вижу странное поведение при попытке запустить приложение, используя имя приложения, хранящееся в Properties.Settings.Если я не переустановлю значение (равное то же самое значение) перед его использованием, запущенное приложение не сможет найти правильное местоположение для настроек своего приложения.Возможно, показ кода поможет понять, о чем я говорю.

Вот код, который запускает новый процесс.Довольно простые вещи.

    private void StartNewApplication()
    {
        Process mainAppProcess = new Process();
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.FileName = Properties.Settings.Default.TheApplicationPath;
        startInfo.WindowStyle = ProcessWindowStyle.Normal;

        mainAppProcess.StartInfo = startInfo;
        mainAppProcess.Start();
        mainAppProcess.WaitForExit();
    }

У меня есть другая функция, которая просто устанавливает параметр, просматривая файл в стандартном OpenFileDialog.Я не буду показывать это здесь, за исключением фрагмента:

        if (fileDialog.ShowDialog().Value == true)
        {
            Properties.Settings.Default.TheApplicationPath = fileDialog.FileName;
            Properties.Settings.Default.Save();
        }

Код, который не удался (который я не могу контролировать), выглядит примерно так:значение AppSettings всегда возвращается ".", вызов Path.GetFullPath возвращает текущий каталог.Если я не переустановил значение Properties.Setting, это путь к программе, которая запускает приложение;если я переустановил настройки, это путь к приложению, которое было запущено.

Есть идеи?

Спасибо, WtS

1 Ответ

1 голос
/ 08 марта 2010

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

Другими словами, посмотрите на этот параметр в файле app.config. Отладка и изменение значения. Посмотрите еще раз на файл app.config. Это не обновляется. Если вы развернете это приложение, с другой стороны, app.config будет обновлено (однако обратите внимание, что при его повторном развертывании или переустановке сохраненные настройки снова будут перезаписаны по умолчанию).

...