Tengo un paquete nuget pequeño que interactúa con una base de datos pequeña con 2 tablas. Lo he usado en 2 proyectos, 1 es dotnet 5 y el otro es un antiguo dotnet framework 4.6, por lo tanto, me he centrado en netstandard2.0 y funcionó bien hasta ahora.
Necesito actualizar todos los paquetes en dotnet 5 a la última, pero ef core 5 necesita dotnet standard 2.1. ¿Cuál es la mejor manera de lidiar con eso?
Pensé en la segmentación múltiple, pero primero no sé si es una buena idea o no y luego no sé cómo decir objetivo dot net estándar 2.1 con ef 5 y al mismo tiempo dotnet estándar 2 con el ef 3.1.
Dirigirse a varias versiones de EF Core (o cualquier otro paquete) puede estar bien, pero tenga en cuenta que afectará la capacidad de mantenimiento del paquete, por lo que solo usted puede decidir si vale la pena o no.
En cuanto a la implementación:
Puede resolver el problema de las referencias del proyecto utilizando Condition en el nivel de ItemGroup y verificando el valor de $(TargetFramework) .
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' "> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.13" /> </ItemGroup> <ItemGroup Condition=" '$(TargetFramework)' != 'netstandard2.0' "> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.4" /> </ItemGroup> En su código C#, deberá utilizar directivas de preprocesador ( #if NETSTANDARD2_0 ) para diferenciar ambas implementaciones.
Puede leer documentación más detallada sobre las soluciones .csproj y C# aquí .