Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с конфигом 
:(
    Опции темы
Competitor
Дата 22.6.2007, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 23.3.2005
Где: Tula

Репутация: -1
Всего: -1



Привет всем.
При попытке писать в конфиг:
Код

Settings1 set = Settings1.Default;
            set.TestData1 = 555;
            set.Save();

Ошибка: Property or indexer 'WriteToByteArray.Settings1.TestData1' cannot be assigned to -- it is read only.
Доюавил вручную в дизайнер.cs:
Код

set { this["TestData1"] = value; }

Стал получать exception: Configuration system failed to initialize.
Сам конфиг:
Код

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c5e089" >
            <section name="WriteToByteArray.Settings1" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b7561934e089" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <applicationSettings>
        <WriteToByteArray.Settings1>
            <setting name="TestData1" serializeAs="String">
                <value>444</value>
            </setting>
        </WriteToByteArray.Settings1>
    </applicationSettings>
</configuration>

В чем моя ошибка?
PM MAIL WWW   Вверх
tol05
Дата 23.6.2007, 15:32 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



Цитата(Competitor @  22.6.2007,  17:03 Найти цитируемый пост)
Доюавил вручную в дизайнер.cs

нельзя трогать код, сгенерированный студией.  Дело в том, что при переходе с кода в дизайнер, с дизайнера в код, студия сравнивает значения, введенные тобой через UI и написанный код. Если что-то самому писать - выскакивает всякий булшит... Вот динайнер и кричит, что не может провести инициализацию.

По поводу первой части вопроса: я когда-то имел дело с System.Configuration и у меня воспоминания остались самые неприятные. Пришлось в конце-концов отказаться от него (для решения моей хитрой задачи). Кривой этот намеспейс. Ну, или как в той фразе: "Вы не любите кошек? Да вы просто не умеете их готовить!"  smile 
У меня тоже проблемы были именно при записи настроек, менял я как раз их без проблем... То кричала студия, что файл такой уже есть и залочен, то эксепшены кидала...

Дай весь код. Посмотрю. Что такое Settings1? где лежит конфиг относительно приложения? Это ведь новая долбанная фича второго дотнета - не просто разрешать конфигурировать через API, но и требования по безопасности усилить...




--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
stab
Дата 24.6.2007, 05:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



код, который вручную написал удали, и поменяй scope у TestData1 на User, а не Application. настройки приложения (scope=Application) не могут меняться пользователем (читай: во время выполнения).


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Competitor
Дата 25.6.2007, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 23.3.2005
Где: Tula

Репутация: -1
Всего: -1



Пересоздал конфиг. Теперь scope=User. Exception не вылетает, но изменения не сохранются.
конфиг:
Код

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="ConfigTest.SettingsForTest" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <ConfigTest.SettingsForTest>
            <setting name="x1" serializeAs="String">
                <value>46</value>
            </setting>
            <setting name="x2" serializeAs="String">
                <value>78</value>
            </setting>
        </ConfigTest.SettingsForTest>
    </userSettings>
</configuration>


Код 
Код

SettingsForTest settingsForTest = SettingsForTest.Default;
            settingsForTest.x1 = 77;
            settingsForTest.x2 = 78;
            settingsForTest.Save();


Код дизайнера:
Код

namespace ConfigTest {
    
    
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")]
    internal sealed partial class SettingsForTest : global::System.Configuration.ApplicationSettingsBase {
        
        private static SettingsForTest defaultInstance = ((SettingsForTest)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new SettingsForTest())));
        
        public static SettingsForTest Default {
            get {
                return defaultInstance;
            }
        }
        
        [global::System.Configuration.UserScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.Configuration.DefaultSettingValueAttribute("46")]
        public int x1 {
            get {
                return ((int)(this["x1"]));
            }
            set {
                this["x1"] = value;
            }
        }
        
        [global::System.Configuration.UserScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.Configuration.DefaultSettingValueAttribute("78")]
        public int x2 {
            get {
                return ((int)(this["x2"]));
            }
            set {
                this["x2"] = value;
            }
        }
    }
}


Кто-нить знает, из-за чего может быть проблема.
PM MAIL WWW   Вверх
stab
Дата 26.6.2007, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



settingsForTest.Save() точно вызывается? бряк на него поставь, проверь выполняется ли эта строчка.

кстати, у х2 назначаемое из кода значение совпадает со значением по умолчанию. может запутался при тестах?


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0800 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.