Одесса: 2°С (вода 8°С)
Киев: 0°С
Львов: -2°С

Тема: Проблема с config файлами в .NET 2.0

Ответить в теме
Показано с 1 по 6 из 6
  1. Вверх #1
    Новичок
    Пол
    Мужской
    Возраст
    33
    Сообщений
    39
    Репутация
    15

    По умолчанию Проблема с config файлами в .NET 2.0

    Необходима помощь в решении одной проблемы:

    Есть приложение, к примеру, MyApplication. Естественно, у него есть свой файл app.config (после компиляции MyApplication.exe.config), который содержит различные настройки этого приложения.

    Это приложение использует библиотеку классов (dll) MyLibrary. Библиотека в свою очередь содержит свой app.config (после компиляции MyLibrary.dll.config).

    Во время отладки (при запуске из VS) все отлично, приложение работает со своим конфигом, библиотека со своим. Но при запуске вне студии библиотека работает только с MyApplication.exe.config, а свой даже не видит. Естественно, не находя там "своих" свойств она грузит их default значения.

    Суть вопроса как заставить библиотеку грузить свой файл?

    К сожалению, решение: продублировать свойства из MyLibrary.dll.config в MyApplication.exe.config, не подходит.

    Заранее спасибо!


  2. Вверх #2
    Есть такая партия))
    Конфиги привязаны к домену приложения. Либу - в отдельный AppDomain.
    Или можно в либе конфиг просто парсить, как xml
    Не будите во мне Зверя, он и так не высыпается

  3. Вверх #3
    Новичок
    Пол
    Мужской
    Возраст
    33
    Сообщений
    39
    Репутация
    15
    Конфиг парсить как xml пробовал, но там есть другая проблема, т.е. совйства уровня Application (к ним же относятся и ConnectionStrings) только для чтения. Приходилось руками добавлять им метод set, в этом случае при каждом изменении свойств через дизайнер все затиралось и приходилось все делать по новой.

    А вот на счет либу в отдельный AppDomain -- спасибо. Попробую.
    А другие способы существуют?

  4. Вверх #4
    Постоялец форума Аватар для Guffy
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    43
    Сообщений
    1,364
    Репутация
    251
    Записей в дневнике
    3
    надо рыть в сторону написания наследника LocalFileSettingsProvider
    там есть метод
    Код:
    public override SettingsPropertyValueCollection GetPropertyValues(SettingsContext context, SettingsPropertyCollection properties)
    через который в, основном и грузятся настройки - его, в принципе можно переопределить
    был бы полезен в нем же метод
    Код:
    private SettingsPropertyValueCollection GetSettingValuesFromFile(string configFileName, string sectionName, bool userScoped, SettingsPropertyCollection properties)
    но он приватный...

    можно вообще написать ему аналог public class MyLocalFileSettingsProvider : SettingsProvider, IApplicationSettingsProvider


    либо плюнуть на всю богодельню с дизайнером и ApplicationSettingsBase - и писать в рукопашную своих наследников от ConfigurationSection (это не сложно), и потом самому разбираться с ConfigurationManager

    ИМХО: на AppDomain Вы получите кучу геммороя на кроссдоменных вызовах (междоменный ремотинг), естественно, с потерей производительности. если это не критично - вперед.
    Последний раз редактировалось Guffy; 17.06.2007 в 22:47.

  5. Вверх #5
    Новичок
    Пол
    Мужской
    Возраст
    33
    Сообщений
    39
    Репутация
    15
    Спасибо за помощь! Проблему решил.
    Написал свой SettingsProvider.

  6. Вверх #6
    the_crabolocker
    гость
    Есть другой способ: объявить и создать соответствующую секцию в основном файле конфигурации приложения, т.е. в файле MyApplication.exe.config.

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGrou p, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
    <section name="SettingsDemo.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="CustomLibrary.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
    </configSections>
    <applicationSettings>
    <SettingsDemo.Properties.Settings>
    <setting name="LocalString" serializeAs="String">
    <value>This is local string</value>
    </setting>
    </SettingsDemo.Properties.Settings>
    <CustomLibrary.Properties.Settings>
    <setting name="String1" serializeAs="String">
    <value>This is string1</value>
    </setting>
    <setting name="String2" serializeAs="String">
    <value>This is string2</value>
    </setting>
    </CustomLibrary.Properties.Settings>

    </applicationSettings>
    </configuration>

    А за подробностями сюда: http://infosysblogs.com/microsoft/20...et_fwk_20.html

    Удачи!


Ответить в теме

Похожие темы

  1. Таирово.Net
    от -=GDS=- в разделе Интернет
    Ответов: 28
    Последнее сообщение: 29.08.2004, 15:56
  2. Windows .NET Release и Windows 2003 Server
    от Maks Nikitin в разделе Интернет :: технические вопросы
    Ответов: 0
    Последнее сообщение: 16.07.2004, 17:34
  3. Программинг под .net compact framework
    от Яр в разделе Программирование
    Ответов: 3
    Последнее сообщение: 14.06.2004, 02:19
  4. Ответов: 3
    Последнее сообщение: 01.03.2004, 09:27
  5. .NET Что за зверь?
    от Яр в разделе Программное обеспечение
    Ответов: 2
    Последнее сообщение: 31.01.2004, 14:40

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения