2010-03-08 70 views
1

当使用存储在Properties.Settings中的应用程序名称尝试启动应用程序时,出现奇怪的行为。如果在使用它之前,我没有重新设置该值(与相同的值),则启动的应用程序将无法获取其应用程序设置的正确位置。也许显示代码将清除我说的话。StartProcess使用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

回答

1

保存设置安装的范围内。如果您正在调试或以其他方式运行Visual Studio,则每次都会使用默认值,并且在保存设置时,它只会在调试会话期间保持不变。

换句话说,看看你的app.config文件中的设置。调试并更改值。再看看app.config文件。它不会更新。另一方面,如果您部署此应用程序,则会更新app.config(但请注意,您重新部署或重新安装,默认情况下,保存的设置将被再次覆盖)。明白了。

+0

了解。 但是,这里的问题是默认设置与“更新”设置完全相同。我浏览并选择与默认设置中保存的路径相同的路径。 –

+0

我有类似的事情发生,但不记得具体情况。查看为应用程序设置生成的文件,并确保属性中没有意外的默认值。我的问题与设置设计师和代码隐藏不同步有关。 – Jay

+0

我甚至在重新设置值之前和之后运行它,并在Watch窗口中执行String.Compare,结果为0。 –