2010-07-09 3 views
3

Я хочу сохранить настройки для своего приложения на C#, так что настройки по умолчанию могут быть легко отправлены вместе с моими двоичными файлами, и конечный пользователь может их изменить, используя простой текстовый редактор (или каким-либо другим простым способом).
Кажется, у меня есть несколько альтернатив: файл .config, файл .settings или файл .resx. Каковы плюсы и минусы этих?Как сохранить настройки для развертываемого приложения C#?

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

Edit2: Настройки - это что-то вроде строк подключения и некоторые другие параметры (в основном одноразовые вещи). Построение какого-то GUI/API для их изменения на самом деле не вариант. Также мое приложение не будет редактировать какое-либо из этих значений, поэтому настойчивость с помощью кода не требуется.

ответ

4

Да, вкладка Project + Properties, Settings была создана для этого. Добавьте свои настройки здесь, измените область действия на приложение. Это создает файл app.exe.config в вашем проекте, развертывает его вместе с вашим EXE. Используйте Properties.Settings.Default. SettingName в вашем коде для получения значения настройки. Для изменения значения параметра пользователю обычно необходимы права администратора для редактирования файла .exe.config на целевой машине.

Настройки мелкой печати: для сборки DLL не работают, вы должны объединить файлы .config вручную. При использовании отладчика параметры извлекаются из файла app.vshost.exe.config.

Файл .settings является вспомогательным файлом, используемым IDE, игнорируя его. .Resx файлы хранят ресурсы, они компилируются и внедряются в двоичную форму в сборке. Они не редактируются пользователем.

0

Если конечный пользователь действительно собирается их редактировать, я не уверен, что хочу, чтобы они редактировали файл app.config.

У вас есть еще пара альтернатив, которые вы не включили. Вы можете использовать старый .INI-файл, который проще для конечного пользователя. Вы также можете использовать реестр. Я бы порекомендовал INI-файл, если ваши пользователи не очень сообразительны, и в этом случае используйте файл .config.

1

Думаю, у вас могут быть два способа сделать это.

  • Для обычных пользователей вы можете создать собственный графический интерфейс, который упростит их использование.
  • Для опытных пользователей они могут редактировать конфигурации с помощью текстового редактора, если они хранятся в текстовом файле (ini-файл, файл конфигурации и т. Д.), Или вы можете создать API.
1

The .settings файл, как правило, используются для конкретных пользователей предпочтений и информации о конфигурации (в то время как .config файл используется для глобальных настроек для приложения или что-нибудь, что изменяет среду выполнения .NET. Просто положить параметры в файле .config могут изменять поведение вашего приложения, даже если вы не написали для него одну строку кода).

Проверьте статью Настройки на MSDN для больше: http://msdn.microsoft.com/en-us/library/aa730869(VS.80).aspx

+0

Можете ли вы объяснить, как файл .config может изменить поведение моего приложения? – apoorv020

+0

Существует несколько способов, и большинство компонентов .Net имеют свои собственные разделы, на которые они полагаются в файле _.config_, но некоторые примеры, которые я могу придумать из головы: для WCF вы можете изменять таймауты соединений, уровень безопасности и шифрования и т. д., прямо в файле _.config_. Вы также можете заменить DLL библиотеки GAC на локальные библиотеки DLL или указать спецификацию версии и битности в файле _.config_, которая переопределит загрузку среды выполнения. – rakuo15

+0

Ханс говорит, что вам, вероятно, понадобится доступ администратора на машине, чтобы изменить файл .ex.config, что именно то, что мне нужно, и должно заботиться о большинстве злонамеренных пользователей. Но точка зрения, это может быть очень опасным инструментом для среднего пользователя. – apoorv020

0

Ответ зависит от способа развертывания. Например, если вы используете ClickOnce и предлагаете обновления, вы можете столкнуться с проблемами, используя Application Settings.

Я считаю, что лучший способ - создать графический интерфейс, что, безусловно, подходит для начинающих пользователей. Учитывая, что вы уже исключили эту опцию, используйте предложение Джона (ini-файлы).

1

Поскольку файл будет изменен пользователями, я думаю, что использование app.config - не очень хорошая идея. Что делать, если они нарушают структуру файла? Или установить недопустимое значение? Вероятно, ваше приложение будет аварийно завершено.

Одним из решений является использование пользовательского XML-файла . Затем вы подтвердите его, когда начнется ваше приложение. XSD, вероятно, будет более изящным способом сделать это, но вы также можете проанализировать его напрямую и проверить его в коде. Если файл недействителен, вместо сбоя вы попытаетесь решить проблему, и если это невозможно, отобразите симпатичную ошибку пользователю, объяснив, что в строке XML есть ошибка в строке n, позиция n, которая есть [описание ошибки здесь].

Смежные вопросы