Tengo un código de biblioteca que se utiliza desde mi aplicación y también es utilizado por una acción personalizada de .NET en un proyecto de instalador de Visual Studio. El código de la biblioteca a su vez usa el bloque de registro Enterprise Library para hacer su registro. ¿Cómo puedo obtener información de configuración para Enterprise Library en el contexto de mi acción personalizada ejecutándose dentro de msiexec? ¿Es posible arrancar el mecanismo de configuración en el código antes de realizar cualquier llamada al EntLib?Cómo usar el registro de la biblioteca de la empresa en una acción personalizada de .NET
Actualización: He producido un truco que parece funcionar, pero se basa en establecer un campo estático no público mediante la reflexión. Es una pena que EntLib esté tan estrechamente vinculado al .NET ConfigurationManager.
var factory = new LogWriterFactory(new FakeConfigSource("foo.config"));
var field = typeof (Logger).GetField("factory", BindingFlags.Static | BindingFlags.NonPublic);
field.SetValue(null, factory);
Logger.Write("Test");
Actualización 2: A pesar de que el truco funciona en un banco de pruebas, cuando se ejecuta en el contexto de msiexec, el cargador de montaje no encuentra los ensamblados de referencia en el archivo de configuración. Fuslogvw indica que AppBase es el directorio de windows system32, lo que tiene sentido. Lo que no entiendo es por qué se encuentran las dependencias de manifiesto del ensamblado de acción personalizado (que están en el directorio [TargetDir] junto con el ensamblaje de acción personalizado), pero los ensamblados cargados dinámicamente llamados en el archivo de configuración no lo son. No puedo ver ninguna forma de evitar esto.
Sí, gracias, pero no es realmente lo que estoy buscando. Estoy usando un código de biblioteca que usa la biblioteca de la empresa. En realidad, no necesito iniciar sesión en ninguna parte, es simplemente que el código profundamente anidado que usa entlib está intentando inicializarse desde la configuración. – jlew