Некоторое время назад я написал свой собственный поставщик настроек, потому что у меня были проблемы с сохранением настроек в библиотеке классов. (Примечание - у меня не было проблем с сохранением настроек из приложения).
Сегодня я только что проверил сохраняющиеся настройки библиотеки классов, и она работала без моего специального провайдера.
Тест это:
(1) Создать библиотеку классов
(2) Добавить настройку - «Имя»
(3) Добавьте класс с общедоступным общим свойством «Имя», который читает и записывает параметр «Имя».
(4) Создайте приложение, которое ссылается на библиотеку классов, и используйте свойство shared для чтения и записи параметра «Имя».
Я уверен, что до того, как настройка «Имя» сохранится, пока приложение открыто, но после того, как я закрою его и снова открою, настройка вернется к значению по умолчанию.
Этого сейчас не происходит, и я хотел бы быть уверен, что раньше я был идиотом, а не идиотом.
Является ли поведение, которое я сейчас получаю, ожидаемым?
ETA: я заметил, что в первый раз, когда я создаю тестовое приложение, изменяю настройку, закрываю и снова открываю, настройка не сохраняется. Впоследствии это так. Может быть, я сдался после одной попытки раньше. Есть идеи, почему это не сохранилось в первый раз?
ETA2: Например, у меня есть библиотека классов с именем «MyLibrary» и тестовое приложение с именем «MyApp». Я выполняю шаги 1-4, приведенные выше, и ниже приводится содержимое файла user.config, который находится в C: \ Documents and Settings \ Имя пользователя \ Локальные настройки \ Application Data \ MyApp \ MyApp.vshost.exe_Url_vi5gjcooahbdm2ma3dcay0mkexu2suul \ 1.0.0.0. Примечание: я не трогал настройки в MyApp; -
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral >
<section name="MyLibrary.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<MyLibrary.My.MySettings>
<setting name="Name" serializeAs="String">
<value>New changed value</value>
</setting>
</MyLibrary.My.MySettings>
</userSettings>