Je vois un comportement étrange lorsque je tente de lancer une application en utilisant un nom d'application stocké dans Properties.Settings. Si je ne redéfinis pas la valeur (même valeur) avant de l'utiliser, l'application lancée ne parviendra pas à obtenir l'emplacement correct pour ses paramètres d'application. Peut-être que montrer le code éclaircira ce que je dis.StartProcess utilisant la valeur de Properties.Settings provoque des résultats inhabituels
Voici le code qui lance le nouveau processus. Des trucs assez simples.
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();
}
J'ai une autre fonction qui définit simplement le réglage en naviguant sur le fichier dans un OpenFileDialog standard. Je ne vais pas montrer qu'ici, à l'exception de l'extrait:
if (fileDialog.ShowDialog().Value == true)
{
Properties.Settings.Default.TheApplicationPath = fileDialog.FileName;
Properties.Settings.Default.Save();
}
Le code qui périclite (que je ne contrôle pas) est quelque chose comme:
private static string GetConfigFolder()
{
string configFolder = ConfigurationManager.AppSettings.Get("ConfigFolder");
configFolder = Path.GetFullPath(configFolder);
return string.IsNullOrEmpty(configFolder) ? Environment.CurrentDirectory : configFolder;
}
Puisque la valeur AppSettings est L'appel Path.GetFullPath retourne toujours le répertoire en cours. Si je ne redéfinis pas la valeur Properties.Setting, c'est le chemin du programme qui démarre l'application; Si je redéfinis le paramètre, c'est le chemin de l'application qui a été lancé.
Des idées?
Merci, WTS
Compris. Cependant, le problème ici est que le réglage par défaut est exactement le même que le réglage "mis à jour". Je recherche et sélectionne le même chemin que celui enregistré dans les paramètres par défaut. –
J'ai eu quelque chose de similaire, mais je ne me souviens pas des détails. Regardez le fichier généré pour les paramètres de l'application et assurez-vous qu'il n'y a pas de valeurs par défaut inattendues dans les attributs. Mon problème avait quelque chose à voir avec le concepteur de paramètres et le codebehind étant désynchronisé. – Jay
Je suis allé jusqu'à l'exécuter avant et après avoir redéfini la valeur, et faire un String.Compare dans la fenêtre Watch, avec un résultat de 0. –