尝试使用存储在 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();
}
失败的代码(我无法控制)类似于:
private static string GetConfigFolder()
{
string configFolder = ConfigurationManager.AppSettings.Get("ConfigFolder");
configFolder = Path.GetFullPath(configFolder);
return string.IsNullOrEmpty(configFolder) ? Environment.CurrentDirectory : configFolder;
}
由于 AppSettings 值总是返回“.”,因此 Path.GetFullPath 调用返回当前目录。如果我不重新设置Properties.Setting值,就是启动应用程序的程序路径;如果我重新设置设置,它是已启动的应用程序的路径。
有任何想法吗?
谢谢, WTS