當使用存儲在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
瞭解。 但是,這裏的問題是默認設置與「更新」設置完全相同。我瀏覽並選擇與默認設置中保存的路徑相同的路徑。 –
我有類似的事情發生,但不記得具體情況。查看爲應用程序設置生成的文件,並確保屬性中沒有意外的默認值。我的問題與設置設計師和代碼隱藏不同步有關。 – Jay
我甚至在重新設置值之前和之後運行它,並在Watch窗口中執行String.Compare,結果爲0。 –