В моем приложении WPF / MVVM C # используется файл настроек пользователя по умолчанию, предоставленный .NET.
Когда я создаю новую версию приложения и отправляю ее пользователю, я проверяю, нужно ли перенастроить настройки, используя это:
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 должен знать, что мое приложение будет таким же, если я переместу его в другую папку)