Как прочитать app.config из другой сборки? - PullRequest
15 голосов
/ 03 февраля 2011

У меня есть два проекта:

  • Консольный проект (Test.exe)
  • Проект библиотеки классов (Test.Data.dll)

МойПроект библиотеки классов содержит файл 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=&quot;{0}&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

Из проекта консоли я хочу получить доступ к настройкам из библиотеки классов, поэтому я попробовал:

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?

Ответы [ 2 ]

11 голосов
/ 03 февраля 2011

DLL не имеет собственного app.config во время выполнения.Файл app.config доступен только для дизайнера Entity Framework.

Во время выполнения DLL попытается прочитать значения из файла app.config приложения.Для соединений Entity Framework это означает, что вы должны скопировать информацию о соединении в app.config приложения.

6 голосов
/ 03 февраля 2011

.NET загружает не более одного файла App.config для исполняемой сборки. Если ваши сателлитные сборки имеют файлы App.config, они не будут проанализированы исполняющей сборкой.

Чтобы получить настройки из файла App.config спутниковой сборки, вы должны переместить (скопировать) эти параметры в файл App.config исполняющей сборки.

...