|
Конфигурационный файл для DLL
|
|||
---|---|---|---|
#18+
Доброго времени суток. Проект библиотеки (т.е. на выходе получаю DLL). В составе проекта присутствуют файлы app.config и Settings.settings. После компиляции проекта, на выходе получаю файлы HelloWorld.17.2.dll и HelloWorld.17.2.dll.config. Обозначенная библиотека используется в качестве расширения для внешнего exe-приложения (подгружается и расширяет стандартный функционал). Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Содержимое генерируемого XML файла следующее: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Каждый раз после запуска в приложении команды test, в настройках должно изменяться значение msg и сохраняться между сессиями. Изменение происходит. Однако я не пойму, где оно хранится. В файле HelloWorld.17.2.dll.config никаких изменений нет. Поиск по реестру оказался безуспешным. Вопросы: 1. Где сохраняется изменённое значение? 2. Если в файле HelloWorld.17.2.dll.config меняю текст "Hello, friends!", на "Hello, programmers!", то всё равно в консоль отправляется "Hello, friends!". Если вовсе удалить файл HelloWorld.17.2.dll.config, то всё по прежнему работает и счётчик продолжает накручиваться. Почему так происходит? С уважением, Андрей. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2014, 18:14 |
|
Конфигурационный файл для DLL
|
|||
---|---|---|---|
#18+
Compositum1. Где сохраняется изменённое значение? Environment\SpecialFolders.LocalApplicationData\[CompanyName] из атрибутов сборки\[имя_exe] (как ни странно)_AssemblyIdentity\[entry_assembly_version]\user.config Т.е. допустим, у меня есть сборка testdll версии 1.0.0.0 от компании Foo с таким классом: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
и основное приложение test.exe версии 1.0.0.1 от компании Bar с таким кодом: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Изменения свойства MySetting будут сохраняться в Environment\SpecialFolders.LocalApplicationData\Bar\test.exe_Url_sk4na0cjetcf3okk4knuzbx3l33bnumj\1.0.0.1\user.config. sk4na0cjetcf3okk4knuzbx3l33bnumj - это identity от entry assembly (разумеется, в каждом отдельном случае оно своё). Compositum2. Если в файле HelloWorld.17.2.dll.config меняю текст "Hello, friends!", на "Hello, programmers!", то всё равно в консоль отправляется "Hello, friends!". Если вовсе удалить файл HelloWorld.17.2.dll.config, то всё по прежнему работает и счётчик продолжает накручиваться. Почему так происходит? Если сохранялись изменения значений свойств, то, поскольку версия сборки и название компании (а тем более имя сборки) не изменились - программа продолжает считывать измененное (и сохраненное) значение из файла из п.1. Если не менялись - программа читает это значение из атрибута DefaultSettingValueAttribute класса настроек, т.к. по умолчанию у каждой настройки свойство GenerateDefaultValueInCode = True, а на сам конфиг приреференсированной сборки программа без доп. телодвижений не смотрит вообще. Подробности (чтобы программа смотрела) здесь . ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2014, 20:12 |
|
|
start [/forum/topic.php?fid=20&fpage=106&tid=1402379]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 338ms |
total: | 473ms |
0 / 0 |