Добрый день.
Есть некий контрол, который получает динамические проперти из app.config, а так же есть некое winApp которое юзает данный контрол, где и как надо разместить данные проперти в этом winApp, чтобы контрол работал (конкретно строка соединения с БД )
Не очень понятен Ваш вопрос... Что значит "где и как надо разместить данные проперти в этом winApp, чтобы контрол работал", если Вы сами написали "динамические проперти из app.config"?
Если проребилбить отдельно контрол, то файл с пропертями генериться автоматически. Но когда я использую этот контрол в другом winApp, то при добавление его на форму появляется ошибка "не найден данный ключ", добавление руками сгенерированный конфиг файл в winApp не помогает, что и где надо прописать, чтобы избавиться от этой ошибки??
В том то и дело, устанавливаю данное свойство в конфиг файле winApp, а контрол его не понимает.
<add key="sqlConnection1.ConnectionString" value="workstation id=KORAL;packet size=4096;integrated security=SSPI;data source="KORAL\SQLEXPRESS";persist security info=False;initial catalog=KladezMain" />
при добавление контрола через дизайнер на форму VS генерит ошибку, что данный ключ не найден.
Я думаю имелось ввиду то, что Вам нужно из контрола не напрямую через AppSettings читать конфиг, а создать пропертю в этом контроле, которую инициализить из приложения
Не совсем так, мне необходимо, чтобы контрол получал указанный ключ из конфиг файла приложения. Т.к. это приложение будет частью системы, настраеваемой админом посредством конфиг файлов.
Дело в том, что так и делаю, но при добавление контрола через дизайнер на форму, VS генерит ошибку, что данный ключ не найден в конфиг файле. Вот это и является точкой приткновения.
Спасибо, насколько я понял, Вы предлагаете устанавливать данное свойство из основного приложения, а не из самого контрола. Дело в том, что данный контрол не зависит от приложения и хотелось бы все настройки делать внутри него и при этом все динамические свойства для всех контролов и приложения прописывать в одном конфиг файле.
Здравствуйте, Аноним, Вы писали:
А>Добрый день. А>Есть некий контрол, который получает динамические проперти из app.config, а так же есть некое winApp которое юзает данный контрол, где и как надо разместить данные проперти в этом winApp, чтобы контрол работал (конкретно строка соединения с БД )
А>данное сообщение получено с www.gotdotnet.ru А>ссылка на оригинальное сообщение
Данная проблема до сих пор не решена, есть ли у кого еще предложения? За ранее всем спасибо.
App Config
От:
Аноним
Дата:
08.02.05 17:02
Оценка:
Нет ли у кого еще каких-нибудь предложений??..проблема до сих пор не решена, заранее спасибо.
Здравствуйте, Crutch, Вы писали:
C>Данная проблема до сих пор не решена, есть ли у кого еще предложения? За ранее всем спасибо.
Насколько я понял, нужно просто скопировать секцию с этими проперти из app.config в .config этого аппликейшна, не забыв скопировать и определения обработчиков секции. Если нечсно — нужен пример app.config для пояснения.
Never underestimate those behind you...
App Config
От:
Аноним
Дата:
08.02.05 22:01
Оценка:
Можно так:
System.Configuration.ConfigXmlDocument reader = new System.Configuration.ConfigXmlDocument();
reader.Load( System.Reflection.Assembly.GetExecutingAssembly().FullName + ".config" );
потом пройтись по нодам и прочитать значения.
Но по моему это слишком!!
Создай текстовый файл и читай строчки с настройками!!!!
Проблема ваша в следующем.
При работе в дизайнере ваш файл конфигурации никаким боком не участвует. При попытке прочитать что-то из файла конфигурации, среда пытается читать это из файла devenv.exe.config — потому что это имя исполняемого файла текущего процесса (студии).
Из design time до файла конфигурации добраться будет трудновато.
Вариант решения такой: в design time просто не читать ничего из файла конфигурации, а делать это только в runtime.
Данная информация предоставляется на условиях «КАК ЕСТЬ», без предоставления каких-либо гарантий и прав. Используя данную информацию, вы соглашаетесь с тем, что (i) Майкрософт не несет ответственности за использование вами данной информации и (ii) вы принимаете на себя весь риск, связанный с использованием данной информации.
Можно так:
System.Configuration.ConfigXmlDocument reader = new System.Configuration.ConfigXmlDocument();
reader.Load( System.Reflection.Assembly.GetExecutingAssembly().FullName + ".config" );
Думается, что такой вариант не прокатит, так как при работе в дизайнере метод GetExecutingAssembly вернёт null.
Данная информация предоставляется на условиях «КАК ЕСТЬ», без предоставления каких-либо гарантий и прав. Используя данную информацию, вы соглашаетесь с тем, что (i) Майкрософт не несет ответственности за использование вами данной информации и (ii) вы принимаете на себя весь риск, связанный с использованием данной информации.
Спасибо.
Насколько я понял, все обращения к конфиг файлу надо выполнять в самом приложение, а не в контроле. Если это не правильно, поправте меня, Name.
Поправляю: это неправильно.
Разницы, откуда обращаться к конфигурации, нет никакой, и
ваш контрол должен нормально работать. Ведь загвоздка, как я понял из ваших сообщений, в том, что он не работает только в дизайнере.
Так ведь? Вот я и написал, почему в дизайнере он не работает и как это побороть.
Данная информация предоставляется на условиях «КАК ЕСТЬ», без предоставления каких-либо гарантий и прав. Используя данную информацию, вы соглашаетесь с тем, что (i) Майкрософт не несет ответственности за использование вами данной информации и (ii) вы принимаете на себя весь риск, связанный с использованием данной информации.
наверно самое простое решение:
в дизайн-тайме пропишите строку подключения в окне свойств
и все заработает.
а в режиме выполнение подставите строку из конфига.
Дело в том, что в приложении будет использоваться много контролов и установка св-в каждого — довольно трудоемкая задача, к тому же есть вероятность забыть установить какое-нибудь св-во одному из контролов, кроме этого некоторые контролы будут использоваться в нескольких приложениях (для этого в общем то и создаются) и в каждом приложение устанавливать одно и тоже св-во — медвежья, на мой взгляд, работа. Каждый контрол должен сам "следить за собой" и устанавливать нужные ему св-ва.