2010-03-08 72 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。 –