Saltar al contenido

Blog de .NET | Cómo migrar aplicaciones de escritorio a .NET Core 3.0

En esta publicación, describiré cómo migrar una aplicación de escritorio de .NET Framework a .NET Core. Elegí una aplicación WinForms como ejemplo. Los pasos para la aplicación de WPF son similares y describiré lo que se debe hacer de manera diferente para WPF a medida que avanzamos. También mostraré cómo puede seguir usando el diseñador de WinForms en Visual Studio a pesar de que está en desarrollo y aún no está disponible para proyectos .NET Core.

Sobre la muestra

Para esta publicación, usaré una aplicación de juego de mesa estilo Memory. Contiene una interfaz de usuario de WinForms (MatchingGame.exe) y una biblioteca de clases con la lógica del juego (MatchingGame.Logic.dll), ambos dirigidos a .NET Framework 4.5. Puede descargar la muestra aquí. Transferiré el proyecto de la aplicación a .NET Core 3.0 y la biblioteca de clases a .NET Standard 2.0. Usar .NET Standard en lugar de .NET Core me permite reutilizar la lógica del juego para proporcionar la aplicación para otras plataformas, como iOS, Android o web.

Puede ver a Scott Hunter y a mí haciendo la conversión en el siguiente video, o puede seguir las instrucciones paso a paso a continuación. Por supuesto, no voy a tenerlo en tu contra, si fueras a hacer ambas cosas.

Proceso paso a paso

Sugiero hacer la migración en una rama separada o, si no está utilizando el control de versiones, crear una copia de su proyecto para que tenga un estado limpio al que volver si es necesario.

Antes de migrar la aplicación a .NET Core 3.0, primero necesito prepararme un poco.

Preparándose para babor

Portar proyecto principal

Crear nuevo proyecto

Incluir=“Newtonsoft.Json” Versión=“9.0.1” />

Manera rápida (reemplace el archivo de proyecto existente)

Primero, probemos la forma más rápida de portar. Asegúrese de tener una copia de su .csproj archivo, es posible que deba utilizarlo en el futuro. Reemplaza tu actual .csproj archivo con el .csproj archivo del proyecto que creó en el paso anterior y agregue en la parte superior <PropertyGroup>:

Crea tu aplicación. Si no tiene errores, felicidades, ha migrado correctamente su proyecto a .NET Core 3. Para migrar un proyecto dependiente (UI), consulte Portar interfaz de usuario sección, para usar el Diseñador, consulte Uso de WinForms Designer para proyectos .NET Core sección.

Modo lento (portabilidad guiada)

Si tiene errores (como hice yo con mi aplicación), significa que hay más ajustes que debe realizar. En lugar de la forma rápida descrita anteriormente, aquí haré un cambio a la vez y daré posibles soluciones para cada problema. Los pasos a continuación también ayudarían a comprender mejor el proceso de migración, por lo que si la forma rápida funcionó para usted pero tiene curiosidad por conocer todos los “por qué”, siga leyendo.

Tenga en cuenta que configuré <GenerateAssemblyInfo> a false. En los proyectos de nuevo estilo AssemblyInfo.cs se genera automáticamente de forma predeterminada. Así que si ya tienes AssemblyInfo.cs archivo en su proyecto (alerta de spoiler: sí), debe deshabilitar la generación automática o eliminar el archivo.

Ahora copie y pegue todas las referencias de la versión anterior de .csproj archivo en el nuevo. Por ejemplo:

Incluir=“.. MatchingGame.Core MatchingGame.Core.csproj” />

El proyecto debería construirse con éxito, ya que es solo una nueva forma de escribir lo mismo. Si tiene algún error, vuelva a verificar sus pasos.

También hay una herramienta de terceros, CsprojToVs2017, que puede realizar la conversión por usted. Pero después de usarlo, es posible que deba eliminar alguna referencia a mano, como:

Incluir=“Microsoft.CSharp” />

Incluir=“System.Net.Http” />

netstandard2.0

Crea tu aplicación. Es posible que obtenga algunos errores si utiliza API que no están incluidas en .NET Standard. Si no recibió ningún error con su aplicación, puede omitir los siguientes dos pasos.

Portar la interfaz de usuario

Para proyectos de WPF, usaría esto:

punto net nuevo wpf o caminoatusolución>Juego de correspondencias.Núcleo

Después de que se creó mi nuevo proyecto WinForms .NET Core, lo agregué a mi solución.

ágina>

Incluir=“.. WpfApp1 MainWindow.xaml.cs” Enlace=“MainWindow.xaml.cs” />

falso

Usar el diseñador de WinForms para proyectos de .NET Core

Como mencioné anteriormente, el diseñador de WinForms para proyectos .NET Core aún no está disponible en Visual Studio. Sin embargo, hay dos formas de solucionarlo:

En esta publicación de blog, le mostré cómo migrar una aplicación de escritorio que contiene varios proyectos de .NET Framework a .NET Core. En casos típicos, solo redirigir sus proyectos a .NET Core no es suficiente. Describí los problemas potenciales que podría encontrar y las formas de abordarlos. Además, demostré cómo aún puede usar el diseñador de WinForms para sus aplicaciones portadas mientras aún no está disponible para proyectos .NET Core.

Este contenido se publicó originalmente aquí.