Как поделиться пользовательскими настройками или файлами с помощью UserAppDataPath между сборками?

Прямо сейчас, когда я выпускаю новую сборку своего .NET-приложения, путь UserAppDataPath указывает на новую папку, содержащую номер сборки.

Документы и настройки \ Имя пользователя \ Данные приложения \ Компания \ Имя сборки \ 1.0.0.0

Я использую этот путь как удобное место для хранения расширенных файлов настроек пользовательского интерфейса. Каждый раз, когда я отпускаю, пользователь теряет свои предыдущие настройки пользовательского интерфейса.

Безопасно ли обрезать номер версии \ 1.0.0.0 и использовать ее корневой путь? или есть лучший способ сохранить настройки в месте, где всегда есть права записи?


person Tim Santeford    schedule 12.10.2009    source источник
comment
Как вы развертываете приложение? Прошло некоторое время с тех пор, как я его использовал, но я считаю, что ClickOnce позволяет переносить предыдущие настройки.   -  person Agent_9191    schedule 13.10.2009
comment
Я знаю, что это не лучший способ выпуска, но моя компания просто помещает двоичные файлы выпуска в общую папку, а сценарий входа обновляет все установки.   -  person Tim Santeford    schedule 13.10.2009
comment
На данный момент мне не разрешено использовать ClickOnce   -  person Tim Santeford    schedule 13.10.2009


Ответы (2)


AppSettings поддерживает обновления. Посмотрите здесь. Надеюсь, это укажет вам правильное направление ...

person Nader Shirazie    schedule 12.10.2009
comment
Будет ли это работать для файлов, отличных от app.config? Я хранил другие файлы вместе с app.config? - person Tim Santeford; 13.10.2009
comment
Зависит от того, что вы подразумеваете под «другими» файлами и как они реализованы. Это настраиваемые параметры или используются классы поддержки встроенных параметров .NET? Это должно работать для настроек, реализующих интерфейс IApplicationSettingsProvider. - person Nader Shirazie; 13.10.2009

Я использую следующий код при извлечении пользовательских данных, хранящихся в потенциально старых папках из предыдущих версий сборки:

    string suffix = "/MyUserSettings.dat";
    string folder = Application.UserAppDataPath;
    string filename = folder + suffix;

    if (!File.Exists(filename))
    {
        // Check whether an older folder from a previous version with appropriate user data exists
        DirectoryInfo[] directories = new DirectoryInfo(folder).Parent.GetDirectories("*", SearchOption.TopDirectoryOnly);
        for (int i = 0; i < directories.Length; i++)
        {
            if (File.Exists(directories[i].FullName + suffix))
            {
                filename = directories[i].FullName + suffix;
            }
        }
    }

    if (File.Exists(filename))
    {
        // load user settings from file
    }
    else
    {
        // use default settings
    }
person Thomas853    schedule 14.11.2013