Saltar al contenido

System.Data.SqlClient no es compatible con esta plataforma

Solución:

Me encontré con el mismo problema hace un par de días; no estoy seguro de cuál es el problema subyacente, pero revertir algunos de los EntityFrameworkCore Los paquetes nuget de nuevo a 2.0.0 parecen haber resuelto el problema para mí. Estos son los paquetes que rebajé:

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" />

El mismo problema aquí, pero para mí es una falla por parte de System.Data.SqlClient para cargar dinámicamente como parte de un complemento. Nuestras DLL de complementos se cargan dinámicamente a través de Autofac y un servicio de control selecciona la correcta en tiempo de ejecución. Desafortunadamente, System.Data.SqlClient no se cargará dinámicamente de esta manera, lo que dará como resultado el mensaje de error anterior. Entonces tuve que cargarlo cuando se inicia el servicio de control. Obviamente, esto no es ideal, pero por ahora es una solución útil ya que todos nuestros complementos aún están bajo nuestro control.

Seré más específico, siguiendo una pregunta en los comentarios.

Un servicio selecciona complementos en tiempo de ejecución. Los complementos registran sus propias dependencias a través de Autofac y si esa dependencia es un paquete Nuget, también incluirán el paquete como una dependencia normal de Nuget.

El servicio de control registra las DLL de complementos en el inicio y la primera vez que se utilizan, también se cargan las dependencias de complementos. Cuando se intenta cargar System.Data.SqlClient después de una llamada al complemento que usa SqlClient, se produce el error “no admitido”.

Establecer System.Data.SqlClient como una dependencia de Nuget en el servicio de control funciona bien y la biblioteca se carga correctamente sin errores. Sin embargo, esto no es ideal porque el servicio de control siempre debe cargar la biblioteca SqlClient, incluso si el complemento seleccionado para ejecutarlo no lo necesita.

En otras palabras, la biblioteca SqlClient siempre se carga en el inicio del servicio ocupando recursos, etc., cuando ni siquiera se necesita. Pero al menos funciona.

Me encontré con este problema recientemente con las clases .net estándar 2.0 consumidas por una aplicación de marco .net normal. (.net 4.7.x). Lo único que finalmente solucionó mi problema fue la migración de packages.config a PackageReference en la aplicación .net normal.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *