Al migrar una aplicación de .NET Framework a .NET Core 3.1 y al tener pruebas MSTest, es posible que notes que ConfigurationManager no está leyendo la configuración del archivo app.config como lo hacía antes.
Para solucionar esto y asegurarte de que ConfigurationManager funcione correctamente en tus pruebas MSTest en .NET Core, necesitas copiar el archivo app.config al directorio de salida de tu proyecto de prueba y renombrarlo como testhost.dll.config. Esto permitirá que el assembly de prueba lea la configuración correctamente y la utilice para llenar ConfigurationManager con los datos adecuados.
Pasos a seguir:
- Agrega el siguiente código al archivo .csproj de tu proyecto de prueba MSTest:
<Target Name="CopyAppConfig" AfterTargets="Build" DependsOnTargets="Build">
<CreateItem Include="$(OutputPath)$(AssemblyName).dll.config">
<Output TaskParameter="Include" ItemName="FilesToCopy" />
</CreateItem>
<Copy SourceFiles="@(FilesToCopy)" DestinationFiles="$(OutputPath)testhost.dll.config" />
</Target>
- Guarda los cambios y vuelve a compilar tu proyecto de prueba.
- Ahora, cuando ejecutes tus pruebas MSTest, ConfigurationManager debería funcionar correctamente y leer la configuración del archivo
testhost.dll.config
.
Con estos pasos, puedes asegurarte de que ConfigurationManager funcione correctamente en tus pruebas MSTest en .NET Core, permitiéndote mantener la configuración en el archivo app.config como lo hacías antes de migrar a .NET Core.
Problemas con las cadenas de conexión de Entity Framework
En ocasiones, al utilizar Entity Framework 6 y el archivo app.config para almacenar las cadenas de conexión, puede que experimentes problemas donde EF no lee la cadena de conexión correctamente, lo que resulta en errores como «The default DbConfiguration instance was used by the Entity Framework before the ‘…’ type was discovered». Aquí te explicamos cómo solucionar este problema:
- Identifica el problema: Si estás utilizando LINQPad u otro entorno y te encuentras con el error mencionado anteriormente, es probable que EF no esté reconociendo la configuración de DbConfiguration correctamente desde el archivo app.config.
- Agrega el atributo codeConfigurationType al elemento entityFramework en el archivo web.config: Para resolver este problema, necesitas especificar explícitamente la clase que hereda de DbConfiguration y su paquete en el archivo web.config.
Antes:<entityFramework> ... </entityFramework>
Después:<entityFramework codeConfigurationType="MyProject.MyPackage.MyCustomDBConfiguration, MyProject.MyPackage"> ... </entityFramework>
Asegúrate de reemplazar «MyProject», «MyPackage» y «MyCustomDBConfiguration» con los nombres reales de tu proyecto, paquete y clase, donde MyCustomDBConfiguration es la clase que hereda de DbConfiguration.
Esta adición al archivo web.config le indica a EF dónde encontrar la configuración de DbConfiguration necesaria para tu proyecto. - Verifica la ruta del archivo de configuración en LINQPad: Si has movido tu proyecto a una nueva ubicación en el disco, también debes asegurarte de actualizar la ruta al archivo de configuración en LINQPad. Si esta ruta es incorrecta, puede provocar errores similares.
Con estos pasos, deberías poder resolver el problema y permitir que EF lea correctamente la configuración de la cadena de conexión desde el archivo app.config en tu proyecto de Entity Framework 6.
¡Espero que esta solución te sea útil! Si tienes alguna pregunta, no dudes en preguntar.