Ответ 1
Как указано в моем комментарии, добавьте файл App.Config в основное решение, а не в проект библиотеки классов.
Я разрабатываю простой проект class library, который даст мне dll.
Мне нужно, чтобы определенное значение читалось из файла конфигурации. Поэтому я добавил файл App.config в свой проект.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="serviceUrl" value="test value" />
</appSettings>
</configuration>
Выше мой файл App.config, и теперь я пытаюсь прочитать его как следующий
string strVal = System.Configuration.ConfigurationManager.AppSettings["serviceUrl"];
Но я не получаю никакого значения в своей строковой переменной.
Я сделал это для веб-приложения аналогичным образом, и он сработал. Но почему-то я не могу заставить эту работу работать.
Является ли идея иметь приложение App.config в проекте библиотеки классов в первую очередь?
Как указано в моем комментарии, добавьте файл App.Config в основное решение, а не в проект библиотеки классов.
Вам не нужно добавлять файл app.config. Если вы создаете библиотеку классов для веб-приложения, вы можете получить соединение строка непосредственно из файла web.config
ИЛИ
Вы можете добавить в него любой текстовый файл со строкой подключения и извлечь эту строку. используя этот
public static ConnectionStringSettings ConnSettings
{
get
{
string connectionStringKey = null;
connectionStringKey = ConfigurationManager.AppSettings.Get("DefaultConnectionString");
return ConfigurationManager.ConnectionStrings[connectionStringKey];
}
}
Предполагая, что вопрос запрашивает файл конфигурации, специфичный для проекта dll, а не файл конфигурации проекта приложения или веб-приложения, я использовал следующий код для получения значений из ключей в разделе "sqlSection". (один из предостережений заключается в том, что этот файл конфигурации - даже когда он настроен на копирование всегда - не копируется автоматически при частичной сборке веб-приложения, поэтому я использовал потрясающее однострочное предварительное действие для копирования файла, поскольку упомянутый в этом сообщении fooobar.com/info/437141/...).
вот весь конфигурационный файл dll
<?xml version="1.0" encoding="utf-8" ?>
<sqlSection>
<add key="sql1" value="--statement--"/>
</sqlSection>
это код С#.
string GetSqlStatement(string key)
{
string path = Path.GetDirectoryName(Assembly.GetCallingAssembly().CodeBase) + @"\DataLayer.dll.config";
XDocument doc = XDocument.Load(path);
var query = doc.Descendants("sqlSection").Nodes().Cast<XElement>().Where(x => x.Attribute("key").Value.ToString() == key).FirstOrDefault();
if (query != null)
{
return query.Attribute("value").Value.ToString();
}