Microsoft anunció recientemente en Build 2019 que la próxima versión principal de .NET unificará .NET Core 3.* y .NET Framework 4.* en una única plataforma .NET, cuyo número de versión principal será 5.
No lo entendí bien, ¿significa que usando .NET 5 podré agregar referencias a bibliotecas escritas en ambas versiones de .NET?
Por ejemplo, un proyecto .NET 5 que hace referencia a 2 ensamblajes, uno que se compiló para .NET Core 3 y otro compilado para .NET Framework 4.5 (en este caso, como hace referencia a una biblioteca de .NET Framework, creo que solo podría para ejecutar en Windows).
Esta es una gran pregunta y he pasado una buena cantidad de tiempo tratando de responder por mí mismo. Una cosa que realmente me ayudó fue darme cuenta de que .NET 5.0 es realmente solo la próxima versión de .NET Core.
Este video en la marca de las 24:30 realmente aclara este punto: https://youtu.be/4WJHCvwE2VM?t=1470
Con eso en mente, podemos ver que las cosas seguirán funcionando como lo hacen en .NET Core 2.0 y versiones anteriores, donde si desea utilizar el código clásico de .NET Framework, primero debe mover ese código a una clase de .NET Standard. Biblioteca.
Será lo mismo que hoy: podrá hacer referencia a las bibliotecas de .NET Standard. .NET 5 no contiene todo el marco clásico, por lo tanto, no será posible hacer referencia a un ensamblado .NET 4.x directamente. Por lo tanto, comience a escribir bibliotecas en .NET Standard.
Sin embargo, en .NET Core 2.0, Microsoft implementó la corrección de compatibilidad que permite el reenvío de tipos de tpyes faltantes en ensamblajes antiguos al nuevo tipo. Mientras su biblioteca no use ninguna clase que no sea compatible con .NET 5, estará a salvo.
.NET 5 tendrá la misma capa de compatibilidad que tiene actualmente .NET Core.
Esto le permite hacer referencia a archivos DLL de .NET Framework con la advertencia de que es posible que el archivo DLL no se cargue ni ejecute en tiempo de ejecución. Si es una biblioteca lógica, puede funcionar bien. No tanto si se basa en, por ejemplo, System.Web . Esto es especialmente útil para bibliotecas de terceros para las que no tiene el código fuente. Puede usar The .NET Portability Analyzer para verificar cualquier uso de API no compatibles en dichas bibliotecas.
Dicho esto, debe intentar cambiar sus bibliotecas de .NET Framework existentes a .NET Standard o varios objetivos a .NET Framework y .NET Standard.
Since.Net no tiene todas las funcionalidades que tenía .net classic. Puede cualquier DLL desde la versión clásica hasta una versión más nueva, aunque también he usado bibliotecas de VB en C # y viceversa.
Sin embargo, hay un problema, siempre que las bibliotecas no llamen a ninguna API no admitida o API que hayan dejado de ser compatibles o hayan sido cerradas, será un problema.