Как читать app.config из другой сборки?
У меня есть два проекта:
- Консольный проект (Test.exe)
- Проект библиотеки классов (Test.Data.dll)
Проект My Class Library содержит файл app.config
.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="TestEntities" connectionString="metadata=res://*/DBNews.csdl|res://*/DBNews.ssdl|res://*/DBNews.msl;provider=System.Data.SqlClient;provider connection string="{0}"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
В проекте Console я хочу получить доступ к настройкам из библиотеки классов, поэтому я пробовал:
var config = ConfigurationManager.OpenExeConfiguration("Test.Data.dll");
config.ConnectionStrings.ConnectionStrings[0].Name; // LocalSqlServer
// seems to be the wrong assembly.
и
var config = ConfigurationManager.OpenExeConfiguration("Test.Data.dll.config");
// invalid exePath
Как я могу получить доступ к DLL app.config
?
Ответы
Ответ 1
У DLL нет собственного app.config во время выполнения. Файл app.config существует только для конструктора Entity Framework.
Во время выполнения DLL попытается прочитать значения из файла приложения app.config. Для соединений Entity Framework это означает, что вам нужно скопировать информацию о подключении в приложение app.config.
Ответ 2
.NET будет загружать не более одного файла App.config для исполняющей сборки. Если ваши спутниковые сборки имеют файлы App.config, они не будут анализироваться исполняющей сборкой.
Чтобы получить настройки со сборника спутников App.config, вы должны переместить (скопировать) эти настройки в свою исполняющую сборку App.config.