Análisis de las dependencias para trasladar código de .NET Framework a .NET
Para identificar las dependencias de terceros no admitidas en el proyecto, primero debe comprender las dependencias. Las dependencias externas son los paquetes NuGet o archivos .dll
a los que hace referencia en el proyecto, pero que no compila por su cuenta.
Al trasladar el código a .NET Standard 2.0 o una versión inferior, se garantiza que se puede usar con .NET Framework y .NET. Pero si no necesita usar la biblioteca con .NET Framework, considere la posibilidad de establecer como destino la versión más reciente de .NET.
Migración de los paquetes NuGet a PackageReference
.NET no puede usar el archivo packages.config para las referencias de NuGet. Tanto .NET como .NET Framework pueden usar PackageReference para especificar dependencias de paquetes. Si usa packages.config para especificar los paquetes en el proyecto, debe convertirlo al formato PackageReference
.
Para obtener información sobre cómo migrar, consulte el artículo Migración de packages.config a PackageReference.
Actualización de los paquetes NuGet
Después de realizar la migración del proyecto al formato PackageReference
, compruebe si los paquetes son compatibles con .NET.
En primer lugar, actualice los paquetes a la versión más reciente posible. Esto se puede realizar con la interfaz de usuario del administrador de paquetes NuGet en Visual Studio. Es probable que las versiones más recientes de las dependencias del paquete ya sean compatibles con .NET Core.
Análisis de las dependencias de paquetes
Si aún no se ha comprobado que las dependencias de paquetes convertidas y actualizadas funcionan en .NET Core, hay dos formas de lograrlo:
Usar nuget.org
En la sección Dependencias de la página de un paquete de nuget.org puede ver los moniker de la plataforma de destino (TFM) que admite cada paquete.
Aunque el uso del sitio es un método más sencillo para comprobar la compatibilidad, la información de las Dependencias no está disponible en el sitio para todos los paquetes.
Usar el Explorador de paquetes NuGet
Los paquetes NuGet son un conjunto de carpetas que contienen ensamblados específicos de plataforma, Compruebe si hay una carpeta que contenga un ensamblado compatible dentro del paquete.
La manera más fácil de inspeccionar las carpetas de paquetes NuGet consiste en usar la herramienta NuGet Package Explorer. Después de instalarla, siga estos pasos para ver los nombres de las carpetas:
- Abra NuGet Package Explorer.
- Haga clic en Open package from online feed (Abrir paquete desde fuente en línea).
- Busque el nombre del paquete.
- Seleccione el nombre del paquete en los resultados de la búsqueda y haga clic en Open (Abrir).
- Expanda la carpeta lib de la derecha y examine los nombres de las carpetas.
Busque una carpeta con nombres en los que se use uno de los patrones siguientes: netstandardX.Y
, netX.Y
o netcoreappX.Y
.
Estos valores son los monikers de la plataforma de destino (TFM) que se asignan a versiones de .NET Standard, .NET y .NET Core, todas compatibles con .NET.
Importante
Al examinar los TFM que admite un paquete, tenga en cuenta que un TFM distinto de netstandard*
se destina a una implementación concreta de .NET, como .NET 5, .NET Core o .NET Framework. A partir de .NET 5, el TFM net*
(sin una designación de sistema operativo) reemplaza de manera efectiva a netstandard*
como un destino portátil. Por ejemplo, net5.0
tiene como destino la superficie de API de .NET 5 y es compatible con varias plataformas, pero net5.0-windows
tiene como destino la superficie de API de .NET 5 como se ha implementado en el sistema operativo Windows.
Modo de compatibilidad de .NET Framework
Después de analizar los paquetes NuGet, puede que observe que solo tienen como destino .NET Framework.
A partir de .NET Standard 2.0 se ha introducido el modo de compatibilidad de .NET Framework. Este modo de compatibilidad permite que los proyectos de .NET Standard y .NET Core hagan referencia a bibliotecas de .NET Framework. La acción de hacer referencias a bibliotecas de .NET Framework no funciona para todos los proyectos; por ejemplo, si la biblioteca usa API de Windows Presentation Foundation (WPF) pero desbloquea muchos escenarios de portabilidad.
Al hacer referencia a paquetes NuGet que tienen como destino .NET Framework en el proyecto, como Huitian.PowerCollections
, recibirá una advertencia de reserva de paquete (NU1701) similar al ejemplo siguiente:
NU1701: Package ‘Huitian.PowerCollections 1.0.0’ was restored using ‘.NETFramework,Version=v4.6.1’ instead of the project target framework ‘.NETStandard,Version=v2.0’. This package may not be fully compatible with your project.
Esta advertencia se muestra cuando agrega el paquete y cada vez que compila para asegurarse de que prueba ese paquete con el proyecto. Si el proyecto funciona según lo previsto, puede suprimir la advertencia editando las propiedades del paquete en Visual Studio o editando manualmente el archivo del proyecto en su editor de código favorito.
Para suprimir la advertencia editando el archivo del proyecto, busque la entrada PackageReference
del paquete del que quiere suprimir la advertencia y agregue el atributo NoWarn
. El atributo NoWarn
acepta una lista separada por comas de todos los identificadores de advertencia. En el ejemplo siguiente se muestra cómo suprimir la advertencia NU1701
del paquete Huitian.PowerCollections
editando manualmente el archivo del proyecto:
<ItemGroup>
<PackageReference Include="Huitian.PowerCollections" Version="1.0.0" NoWarn="NU1701" />
</ItemGroup>
Para más información sobre cómo suprimir advertencias del compilador en Visual Studio, vea Supresión de las advertencias para paquetes NuGet.
Si los paquetes NuGet no se van a ejecutar en .NET
Si un paquete NuGet del que depende no se ejecuta en .NET Core, puede hacer lo siguiente:
- Si el proyecto es de código abierto y está hospedado en algún lugar como GitHub, puede implicar directamente a los desarrolladores.
- Puede ponerse en contacto directamente con el autor en nuget.org. Busque el paquete y haga clic en Contact Owners (Póngase en contacto con los propietarios) a la izquierda de la página del paquete.
- Puede buscar otro paquete que se ejecute en .NET Core que efectúe la misma tarea que el paquete que estaba usando.
- Puede intentar volver a escribir el código de lo que hacía el paquete usted mismo.
- Puede eliminar la dependencia en el paquete mediante el cambio de la funcionalidad de la aplicación, al menos hasta que esté disponible una versión compatible del paquete.
No olvide que los mantenedores de los proyectos de código abierto y los publicadores de paquetes NuGet suelen ser voluntarios. Colaboran porque les importa un dominio determinado, lo hacen de forma gratuita y en muchas ocasiones tienen otro trabajo, Sea consciente de ello al ponerse en contacto con ellos para solicitar soporte técnico de .NET Core.
Si no puede resolver el problema con ninguna de estas opciones, puede que deba efectuar la portabilidad a .NET Core en otro momento.
Al equipo de .NET le gustaría saber qué bibliotecas son las más importantes para que sean compatibles con .NET Core. Puede enviar un correo electrónico a dotnet@microsoft.com indicando las bibliotecas que le gustaría usar.
Análisis de dependencias que no son de NuGet
Es posible que tenga una dependencia que no sea un paquete NuGet, como un archivo DLL, en el sistema de archivos. Puede determinar la portabilidad de esa dependencia con la herramienta Asistente para actualización de .NET.