2011-02-03 6 views
14

Tengo dos proyectos:¿Cómo leer app.config desde otro ensamblado?

  • proyecto de consola (Prueba.exe)
  • proyecto de biblioteca de clases (Test.Data.dll)

Mi biblioteca de clases proyecto contiene un archivo 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> 

Desde el proyecto de consola quiero acceder a la configuración de la biblioteca de clases, por lo que he intentado:

var config = ConfigurationManager.OpenExeConfiguration("Test.Data.dll"); 
config.ConnectionStrings.ConnectionStrings[0].Name; // LocalSqlServer 
// seems to be the wrong assembly. 

Y:

var config = ConfigurationManager.OpenExeConfiguration("Test.Data.dll.config"); 
// invalid exePath 

Cómo puedo acceder a la DLL app.config?

+0

La respuesta correcta se da aquí. Funciona http://stackoverflow.com/questions/53545/get-the-app-config-of-another-exe –

Respuesta

10

La DLL no tiene su propia app.config en el tiempo de ejecución. App.config solo está disponible para el diseñador de Entity Framework.

Durante la ejecución, la DLL intentará leer los valores del archivo app.config de la Aplicación. Para las conexiones de Entity Framework, eso significa que debe copiar la información de conexión en la aplicación app.config.

5

.NET solo cargará como máximo un archivo App.config para un ensamblaje en ejecución. Si sus ensamblajes satelitales tienen archivos App.config, el ensamblaje en ejecución no los analizará.

Para obtener la configuración del App.config del ensamblaje satélite, debe mover (copiar) esas configuraciones al App.config de su ensamblaje de ejecución.

Cuestiones relacionadas