Properties.Settings - это не то значение, которое я ожидаю - PullRequest
3 голосов
/ 06 сентября 2011

У меня есть настройка в моем проекте, которая при обращении из кода (т. Е. При наведении курсора на объект я вижу значение) не совпадает с той, что есть в файле Properties.Settings. Это старая ценность. Я могу зайти в редактор настроек и обновить значение на что-то другое, но старое значение сохраняется. Если я использую метод .Properties.Settings.Default.Save (), настройка будет изменена, но это изменение не отразится в редакторе, когда я остановлю отладку. Я могу открыть файл Settings.settings в текстовом редакторе, и он покажет мне то же самое, что и в редакторе настроек в VS. Я также могу искать на своем компьютере другие файлы Settings.settings, и появляется только тот, который появляется (другие появляются, но они явно не связаны, имеют старые модификации даты и не будут иметь того же имени настройки).

Где находится этот файл и почему его значение отличается от того, которое, я думаю, должно быть?

Edit:

Мне не удалось снова синхронизировать исходную переменную настройки, поэтому я создал новую переменную настройки с интерфейсом настройки GUI. И это, кажется, распространяется должным образом. Все файлы, которые мне предлагали посмотреть, содержали значения, которые я хотел, чтобы моей установочной переменной было, но когда я запускал сеанс отладки и просматривал ту же переменную, это было какое-то старое значение, которое я не мог отследить.

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

Редактировать 2:

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

Ответы [ 4 ]

8 голосов
/ 07 сентября 2011

Вы не нашли файл настроек.Он не называется Setting.settings, это файл проекта.Он называется user.config и хранится в каталоге со странным именем, например:

C: \ Users \ HPassant \ AppData \ Local \ MyCompany \
WindowsFormsApplication1._Url_ghbcotszbdzyqv2ovpc1keo1yctxkcw5 \ 1.0.0.0

Где «HPassant» - это имя пользователя, «MyCompany» - это атрибут [AssemblyCompany], «WindowsFormsApplication1» - это имя проекта, за которым следует хэш различных значений, за которым следует [AssemblyVersion.].Вы можете увидеть алгоритм с Reflector или ILSpy, посмотрите на конструктор класса ClientConfigPaths.

3 голосов
/ 14 августа 2013

Я изменил Область настроек с Пользователь на Приложение, которое решило мою проблему.

3 голосов
/ 06 сентября 2011

Значение Properties.Settings по умолчанию переопределяется значениями в app.config.

В случае развернутого приложения app.config переименовывается в YourApplicationName.exe.config и является рекомендуемым способом обработки конфигурации параметров приложения.

1 голос
/ 06 сентября 2011

Когда вы сохраняете свои настройки, они сохраняются в YourApplicationName.exe.config, как объяснил @Albin Sunnanbo.

Поэтому, когда вы вызываете Settings.Default.Save (), вы изменяете этот файл, а не app.config в вашем проекте.Ваши двоичные файлы не знают app.config, они заботятся только о развернутой копии.

Существует несколько областей действия для переменной настроек.Если вы установите область для Application, у вас будет только один «экземпляр» этого значения.Если вы установите его на Пользователь, у каждого уникального пользователя Windows будет своя копия настроек.

То, что вы предоставляете в app.config / Properties.Settings, это значения по умолчанию .Они будут перезаписаны в YourApplicationName.exe.config при вызове Settings.Default.Save ().

При отладке вы найдете файл YourApplicationName.exe.config в папке / bin / debug.Посмотрите туда, и вы увидите, что значения в вашем приложении такие же, как в этом файле, а не в app.config.

...