StartProcess 使用 Properties.Settings 中的值导致异常结果
Posted
技术标签:
【中文标题】StartProcess 使用 Properties.Settings 中的值导致异常结果【英文标题】:StartProcess using value from Properties.Settings causes Unusual Results 【发布时间】:2011-01-25 03:06:17 【问题描述】:尝试使用存储在 Properties.Settings 中的应用程序名称启动应用程序时,我看到了奇怪的行为。如果我在使用它之前没有重新设置值(到 same 值),启动的应用程序将无法为其应用程序设置获取正确的位置。也许显示代码会澄清我的意思。
这是启动新进程的代码。非常直接的东西。
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 中浏览文件来简单地设置设置。除了sn-p之外,我不会在这里展示它:
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值,就是启动应用程序的程序路径;如果我重新设置设置,它是已经启动的应用程序的路径。
有什么想法吗?
谢谢, 重量
【问题讨论】:
【参考方案1】:设置保存在安装环境中。如果您在 Visual Studio 中调试或以其他方式运行此设置,则每次都将使用默认值,并且当您保存设置时,它只会在您的调试会话期间保持不变。
换句话说,查看app.config
文件中的设置。调试并更改值。再次查看app.config
文件。它没有得到更新。另一方面,如果您部署此应用程序,app.config
将被更新(但请注意,如果您重新部署或重新安装,默认情况下,保存的设置将再次被覆盖)。
【讨论】:
明白。但是,这里的问题是默认设置与“更新”设置完全相同。我浏览并选择保存在默认设置中的相同路径。 我也发生过类似的事情,但不记得具体情况了。查看为应用程序设置生成的文件,并确保属性中没有意外的默认值。我的问题与设置设计器和代码隐藏不同步有关。 我什至在重新设置值之前和之后都运行它,并在 Watch 窗口中执行 String.Compare,结果为 0。以上是关于StartProcess 使用 Properties.Settings 中的值导致异常结果的主要内容,如果未能解决你的问题,请参考以下文章
请问.net的processstartinfo.arguments传多参数怎么处理?