Что произойдет, если * .exe.config будет удален? - PullRequest
3 голосов
/ 07 августа 2011

Я добавил настройки приложения в проект.Эти настройки сохраняются в «NameOfMyApp.exe.config».Что произойдет, если кто-нибудь удалит этот файл?Нужно ли создавать его снова?Где мне хранить значения настроек по умолчанию?

Ответы [ 3 ]

2 голосов
/ 07 августа 2011

Если вы используете конструктор настроек и сгенерированный код (в пространстве имен Properties), у вас есть значения по умолчанию в (сгенерированном) коде.

2 голосов
/ 07 августа 2011

Если кто-то удалит файл .config, он исчезнет, ​​детка, исчез. И будет необходимо создать, развернуть или ПОЛУЧИТЬ его снова.

Хранение значений настроек по умолчанию - возможно, два очевидных ответа будут в файле конфигурации или таблице базы данных. Если настройки по умолчанию довольно статичны и не зависят от конкретного пользователя, файл конфигурации может быть хорошим вариантом (или они устанавливаются при первоначальном развертывании / установке). Если эти значения могут измениться пользователем, вероятно, лучше сохранить их в базе данных.

Я думаю, что ответ на вопрос о том, где хранить настройки по умолчанию, действительно зависит от характера приложения и способа его использования пользователем.

Надеюсь, это поможет!

ОБНОВЛЕНИЕ: о, и если они действительно удаляют конфигурацию, я надеюсь, что она где-то хранится в системе контроля версий. :) Вероятно, сделать вашу жизнь намного проще. Удачи !!

1 голос
/ 09 августа 2011

Программа будет работать правильно, если в сгенерированном коде есть глобальный :: System.Configuration.DefaultSettingValueAttribute.

Я написал простой пример (Windows Forms):

using System;
using System.Windows.Forms;

    namespace AppSettings {
        public partial class Form1 : Form {
            public Form1() {
                InitializeComponent();
            }

            private void Form1_Load(object sender, EventArgs e) {
                textBox1.Text = Properties.Settings.Default.tbText;
            }
        }
    }

Область действия TbTextприложение.Я скомпилировал его в режиме релиза.Я удалил все файлы, кроме * .exe.Это работает правильно, потому что этот параметр находится в сборке:

namespace AppSettings.Properties {


    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {

        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));

        public static Settings Default {
            get {
                return defaultInstance;
            }
        }

        [global::System.Configuration.ApplicationScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
         //here!
        [global::System.Configuration.DefaultSettingValueAttribute("!!!***HALLO***!!!")]
         //
        public string tbText {
            get {
                return ((string)(this["tbText"]));
            }
        }
    }
} 
...