Estoy tratando de terminar este controlador de excepciones:
if (ConfigurationManager.ConnectionStrings["ConnectionString"]==null)
{
string pathOfActiveConfigFile = ...?
throw new ConfigurationErrorsException(
"You either forgot to set the connection string, or " +
"you're using a unit test framework that looks for "+
"the config file in strange places, update this file : "
+ pathOfActiveConfigFile);
}
Este problema parece que solo me sucede cuando estoy usando nUnit.
c#
.net
nunit
app-config
configurationmanager
MatthewMartin
fuente
fuente
Estrictamente hablando, no hay un solo archivo de configuración. Excluyendo ASP.NET 1 , puede haber tres archivos de configuración utilizando el
System.Configuration
soporte inbuilt ( ). Además de la configuración de la máquina:app.exe.config
usuario itinerante y usuario local.Para obtener la configuración "global" ( exe .config):
Use
ConfigurationUserLevel
valores diferentes para los archivos de configuración de roaming y no roaming por uso.1 Que tiene un modelo completamente diferente en el que el contenido de las carpetas secundarias (IIS-virtual o sistema de archivos)
web.config
puede (según la configuración) agregar o anular el de los padresweb.config
.fuente
Si quiere decir que solo obtiene un retorno nulo cuando usa NUnit, entonces probablemente necesite copiar el valor de ConnectionString su app.config de su aplicación en app.config de su biblioteca de prueba.
Cuando lo ejecuta el cargador de prueba, el ensamblaje de prueba se carga en tiempo de ejecución y se verá en su propia aplicación.config (renombrada a testAssembly.dll.config en tiempo de compilación) en lugar de su archivo de configuración de aplicaciones.
Para obtener la ubicación del ensamblaje que está ejecutando, intente
fuente
Asegúrate de hacer clic en las propiedades del archivo y configurarlo para "copiar siempre" o no estará en la carpeta Debug \ con tus felices lil dll para configurar dónde debe estar y agregar más cencerro
fuente
La primera vez que me di cuenta de que el proyecto de prueba de la Unidad hacía referencia a la aplicación.config en ese proyecto en lugar de la aplicación.config asociada con mi proyecto de código de producción (por supuesto, DOH), acabo de agregar una línea en el Evento posterior a la compilación del proyecto Prod eso copiará el archivo app.config a la carpeta bin del proyecto de prueba.
Problema resuelto
No he notado ningún efecto secundario extraño hasta ahora, pero no estoy seguro de que esta sea la solución correcta, pero al menos parece funcionar.
fuente
Falta una opción más que vi aquí:
fuente
Dependiendo de la ubicación de su archivo de configuración,
System.Reflection.Assembly.GetExecutingAssembly().Location
podría hacer lo que necesita.fuente
Intenté una de las respuestas anteriores en una aplicación web (en realidad, un rol web de Azure que se ejecuta localmente) y no funcionó. Sin embargo, este enfoque similar funcionó:
El archivo de configuración resultó estar en C: \ Archivos de programa \ IIS Express \ MyComponent.dll.config. Lugar interesante para ello.
fuente