我的WPF / MVVM C#应用程序使用.NET提供的默认用户设置文件。
当我创建新版本的App并将其发送给用户时,我会使用以下方法测试设置是否需要迁移:
bool UpgradeUserSettings()
{
if (Settings.Default.UpgradeRequired)
{
Settings.Default.Upgrade();
Settings.Default.UpgradeRequired = false;
Settings.Default.AppUpgradeOnLastRun = true;
Settings.Default.Save();
MessageBox.Show("The application has been upgraded from a previous version. You will need to restart the application.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return true;
}
return false;
}
我基本上检查应用程序是否需要升级(因为它已经在系统中了),并警告用户该应用程序将要重新启动-除非应用程序在关闭后关闭,否则我无法使用升级后的设置升级并重新启动,因此我关闭了该应用程序,用户将不得不再次打开它。
我的问题是,如果用户从最初执行旧应用程序的其他位置打开新应用程序的.exe文件。或者,即使该应用程序根本没有升级,但用户决定将其从一个文件夹移动到另一个文件夹,.NET似乎只是假设该应用程序是一个新的应用程序,并且忘记了旧的设置,就像.NET创建单独的文件夹一样设置取决于用户拥有应用程序的文件夹。
如果用户将文件移回其拥有的第一个文件夹,则设置将加载原始设置。
是否有办法确保.NET不管位置在哪里都只能自动创建一组设置? (即,如果我将.NET移到另一个文件夹,.NET应该知道我的App是相同的)