Как остановить двойные записи в файле myapp.exe.config?
У меня есть стандартное приложение WPF, которое я разрабатываю и запускаю в Windows 10. Я использовал конструктор настроек для создания нескольких настроек, одной пользовательской и одной прикладной.
Проект WPF "верхнего уровня" называется MyApp.WPF', и это задается как имя сборки, так и пространство имен по умолчанию. Когда я смотрю в файл MyApp. exe. config, я нахожу, что каждый параметр имеет две записи, например:
<applicationSettings> <MyApp.WPF.Properties.Settings> <setting name="SettingOne" serializeAs="String"> <value>ABC</value> </setting> </MyApp.WPF.Properties.Settings> <MyApp.WPF> <setting name="SettingOne" serializeAs="String"> <value>ABC</value> </setting> </MyApp.WPF> </applicationSettings> <userSettings> <MyApp.WPF.Properties.Settings> <setting name="SettingTwo" serializeAs="String"> <value>DEF</value> </setting> </MyApp.WPF.Properties.Settings> <MyApp.WPF> <setting name="SettingTwo" serializeAs="String"> <value>DEF</value> </setting> </MyApp.WPF> </userSettings>
Насколько я могу судить, вторая запись (та, что с более коротким "MyApp.Пространство имен WPF) кажется совершенно избыточным. Это не проблема, но я хотел бы удалить его, если смогу, или, по крайней мере, понять, почему он там.
Кто-нибудь сталкивался с этим?
Что я уже пробовал:
Я попытался изменить настройки пользователя во время выполнения, и это создает ожидаемую запись в файле /%Username%/MyApp/.../user.config, но это не помогает мне понять, что происходит с основным файлом MyApp.exe.config в корневом каталоге приложения.
Maciej Los
Ну, я бы попробовал скопировать файл настроек и переименовать его (например, MyApp. config_copy). Затем я попытался бы удалить дублированные записи. Дай мне знать, это поможет?
Patrick Skelton
Спасибо за ответ. Я сделал нечто подобное-полностью удалил файл. Когда приложение воссоздает его в процессе сборки, записи снова дублируются.
J. Calhoun
Вы остановили функцию, которую используете для создания файла настроек? Я не знаю, как выглядит ваш код, но похоже, что вы вызываете его несколько раз при запуске, возможно, из-за какого-то наследования, вызывающего конструктор, который создает эти настройки несколько раз?
Patrick Skelton
Спасибо за ответ.
Я не совсем понимаю, где вы предлагаете поставить точку останова. Код генерируется автоматически. Я просто создаю настройки с помощью конструктора настроек. Остальное-магия Microsoft (или это была бы магия, если бы я понимал половину того, что она делает).
J. Calhoun
Приношу свои извинения, я пропустил часть «Конструктор настроек». Однако у меня есть еще один вопрос. Когда вы говорите, что создали одну область действия приложения и одну область действия пользователя, вы используете только дизайнер запускаемого проекта? Возможно ли, что у вас есть эти настройки более чем в одном проекте? Я создал проект и установил в своем стартовом проекте те же настройки, которые вы указали, и он создается правильно, работая над другими способами, чтобы попытаться воссоздать вашу проблему. Кроме того, в файле app.config вы должны увидеть только один набор настроек, если вы отредактировали его вручную и сделали это в дизайнере, что могло вызвать дублирование. Пока все, что мне удалось сделать, это создать одного пользователя и одну настройку приложения, без дубликатов: /
Patrick Skelton
Спасибо за эти предложения.
Ни одно из ваших предложений не оказалось плодотворным, когда я провел расследование. На самом деле тайна только углублялась. Несколько дней назад я экспериментировал с созданием нескольких файлов настроек (в конструкторе) для хранения групп настроек. Затем я выбросил это, и все же эти пространства имен все еще появлялись в файле App.exe.config. Я даже использовал инструмент поиска грубой силы в файлах, способный отображать шестнадцатеричный код, и я не мог найти нигде, где создавались эти пространства имен.
Теперь я это исправил. Я выложил то,что сделал, в ответ.
Спасибо за помощь.