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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> использование Settings.settings 
:(
    Опции темы
IGV
Дата 24.7.2009, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Значится так. Имеется exe проект в котором через Settings был создан файл app.config. В нем прописано следующее:

Код

    <applicationSettings>
        <MyProject.Properties.Settings>
            <setting name="Path" serializeAs="String">
                <value>\Folder1\Folder2\</value>
            </setting>
        </MyProject.Properties.Settings>
    </applicationSettings>


Затем имеется dll проект. В нем мне нужно обратится к этому файлу app.config и вытащить параметр Path. Здесь я добавил референс на System.Configuration. Но не понимаю как нужно обращаться к этому параметру. Пытался так:

Код

string path = ConfigurationManager.AppSettings["Path"];


Но я на выходе получаю пустую строчку. Как надо правильно?

P.S. где можно почитать хорошую статью по поводу использования Setting.settings. Я искал и там везде кусками и не очень понятно.
PM MAIL ICQ   Вверх
jonie
Дата 24.7.2009, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



обычно обращение напрямую в конфигурационный файл с чужого приложения каратеся смертной казнью удушением ... в общем не очень хорошо так делать.

По вашм настройка генерируется целый класс, который вы можете сделать публичным и использовать его в своей DLL (сделав референс на exe сборку).

тут про конфигурирование почитайте:
http://forum.vingrad.ru/faq/topic-149652/k...ation-user.html



--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
IGV
Дата 27.7.2009, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



тпрррр ничего не понял. У меня в рамках одного солушена несколько проектов один exe и dll. Почему это обращение из dll к app.config карается смертью? Я не совсем понял. Это же называется внешними параметрами приложения в соответствии со статьей. Поясните, если не сложно, что вы имели в виду.


В статье, кот. вы порекомендовали вообще ничего не понятно.
Существуют понятие "Внешние параметры приложения", вроде как они содержаться в файле "ИмяПриложения.exe.config", но далее написано что они содержаться вроде как и в app.config.
В данном случае приводится пример когда параметр расположен немного в других ветках
Код

    <appSettings>
        <add key="ИмяПараметраПриложения" value="ЗначениеПараметраПриложения"/>
    </appSettings>

В моем же случае самому параметру предшествует ещё и ветка, в которой содержится имя проекта, как я понимаю,
Код

<applicationSettings>
        <MyProject.Properties.Settings>    <---------------- вот эта
            <setting name="Path" serializeAs="String">
                <value>\Folder1\Folder2\</value>

Меня интересует централизованный подход хранения настроек, т.е. в той же директории, что и exe файл располагается файл *.config куда я сохраняю и настройки подключения, например к БД и ссылки на файлы внешние, кот. мне нужны. Обращаюсь к параметру я вроде также как и везде написано.
Файл сгенерен автоматически с использованием Settings.settings.

Это сообщение отредактировал(а) IGV - 27.7.2009, 10:46
PM MAIL ICQ   Вверх
IGV
Дата 12.8.2009, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



В общем начал подробно разбираться в этом вопросе
При вызове:
Код

conf.AppSettings.Settings

количество настроек возвращается 0.

Тогда я решил сохранить туда запись и посмотреть, что получилось
Код

            string exePath = Path.Combine(
                                       Environment.CurrentDirectory, "project.exe");
            Configuration config = ConfigurationManager.OpenExeConfiguration(exePath);

            // Get the count of the Application Settings.
            int appStgCnt = config.AppSettings.Settings.Count;


            string asName = "AppStg" + appStgCnt.ToString();


            // Add an Application Setting.
            config.AppSettings.Settings.Add(asName,
                     DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString());

            // Save the configuration file.
            config.Save(ConfigurationSaveMode.Modified);

            // Force a reload of a changed section.
            ConfigurationManager.RefreshSection("appSettings");


После того как я открыл файл project.exe.config (который как создается при компиляции или при запуске приложения?)
То увидел там следующее
Код

<appSettings>
        <add key="AppStg0" value="12 августа 2009 г. 14:26:54" /> 
</appSettings>
<applicationSettings>
         <project.Properties.Settings>
            <setting name="Path" serializeAs="String">
                <value>\Folder1\Folder2\</value>
            </setting>
        </MyProject.Properties.Settings>
  </applicationSettings>



Это что за фигня???
Почему если я его создаю через менеджер в VS2008 получаю совершенно другое?

Это сообщение отредактировал(а) IGV - 12.8.2009, 14:01
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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