Migración de UWP a la SDK de Aplicaciones para Windows con el Asistente para actualización de .NET

El Asistente para actualización de .NET es una herramienta de línea de comandos que puede ayudar a migrar una aplicación de Plataforma universal de Windows de C# (UWP) a una aplicación de biblioteca de interfaz de usuario de Windows (WinUI) 3 que usa la SDK de Aplicaciones para Windows.

Consulte también el repositorio de GitHub del Asistente para actualizaciones . Las opciones de línea de comandos para ejecutar la herramienta se documentan allí.

Instalación del Asistente para actualización de .NET

Para obtener información sobre cómo instalar la herramienta, consulte Información general del Asistente para actualización de .NET.

Resumen

Al usar el Asistente para actualización de .NET para migrar la aplicación para UWP, estos son los pasos y fases de alto nivel del proceso de migración que lleva a cabo la herramienta.

  • Realiza una copia de seguridad (una copia) del proyecto en una carpeta nueva.
  • Migra el proyecto en contexto, en las mismas carpetas y archivos, sin cambiar el nombre de las carpetas.
  • Actualiza el proyecto al formato del SDK más reciente y limpia las referencias de paquetes NuGet.
  • Tiene como destino .NET 6 y el SDK de Aplicaciones para Windows.
  • Actualiza de WinUI 2 a WinUI 3.
  • Agrega nuevos archivos de plantilla, como App.Xaml, MainWindow.Xamly perfiles de publicación.
  • Actualice los espacios de nombres y agregue la navegación MainPage .
  • Intenta detectar y corregir las API que son diferentes entre UWP y la SDK de Aplicaciones para Windows, y usa todos de lista de tareas para marcar las API que ya no se admiten.

A medida que se ejecuta, la herramienta también tiene como objetivo proporcionar instrucciones de migración en forma de mensajes de advertencia dentro de la salida de la herramienta y todos de lista de tareas en forma de comentarios en el código fuente del proyecto (por ejemplo, en casos en los que no es posible realizar la migración completamente automatizada del código fuente de UWP). Un todo de lista de tareas típico incluye un vínculo a un tema de esta documentación de migración. Como desarrollador, siempre está en control del proceso de migración.

Sugerencia

Para ver todos los TODOs que ha generado la herramienta, busque en la lista Tareas de Visual Studio.

Nota

Una vez finalizada la ejecución de la herramienta, hay algunos pasos de seguimiento que puede elegir si es necesario. Puede mover el código de App.xaml.old.cs a App.xaml.csy puede restaurar AssemblyInfo.cs desde la copia de seguridad que crea la herramienta.

Qué admite la herramienta

Esta versión del Asistente para actualización de .NET está actualmente en versión preliminar y recibe actualizaciones frecuentes. Actualmente, la herramienta solo admite el lenguaje de programación C#; no C++. Y en la mayoría de los casos con esta versión, el proyecto requerirá un esfuerzo adicional para completar la migración.

La herramienta tiene como objetivo migrar el proyecto y el código para que se compile. Sin embargo, algunas características requieren que investigue y corrija (a través de todos de lista de tareas). Para obtener más información sobre lo que hay que tener en cuenta antes de migrar, vea ¿Qué se admite al migrar de UWP a WinUI 3?

Debido a las siguientes limitaciones de la versión actual del Asistente para actualización de .NET, puede optar por esperar a una versión futura antes de migrar la aplicación:

Siempre que sea posible, la herramienta intenta generar una advertencia; y hace que el código no se compile intencionadamente hasta que lo cambie.

  • No se admiten vistas personalizadas. Por ejemplo, no recibirá una advertencia ni una corrección para un cuadro de diálogo personalizado que extiende MessageDialog y llama a una API incorrectamente.
  • no se admiten Windows Runtime componentes.
  • Es posible que las aplicaciones de varias ventanas no se migren correctamente.
  • Es posible que un proyecto que siga una estructura de archivos no estándar (como App.xaml y App.xaml.cs que no esté en la carpeta raíz) no se migre correctamente.

El repositorio de GitHub del Asistente para actualizaciones documenta sugerencias de solución de problemas y problemas conocidos. Si encuentra algún problema durante el uso de la herramienta, notifiquelos en ese mismo repositorio de GitHub, etiquetelos con una etiqueta de área de UWP. ¡Lo agradecemos!

Nota

Para obtener instrucciones sobre el proceso de migración y las diferencias entre las características y las API de UWP y SDK de Aplicaciones para Windows, consulta Migrar de UWP a la SDK de Aplicaciones para Windows.

Sugerencia

Para ver qué versión de la herramienta tiene, emita el comando upgrade-assistant --version.

Versión de prueba de la herramienta con el ejemplo photoLab para UWP

Vamos a tomar el Asistente para actualización de .NET para una versión de prueba.

Como material de origen, migraremos la aplicación de ejemplo PhotoLab para UWP. PhotoLab es una aplicación de ejemplo para ver y editar archivos de imagen. Muestra las características de personalización de la interfaz de usuario, el enlace de datos y el diseño XAML.

Comience por clonar o descargar el código fuente de ejemplo photoLab del vínculo anterior.

Tenga en cuenta que después de haber usado la herramienta para automatizar la migración de la aplicación, se necesitará un esfuerzo manual adicional para completar la migración.

Nota

Puedes ver un caso práctico del ejemplo photoLab que se está migrando manualmente en una SDK de Aplicaciones para Windows migración de la aplicación de ejemplo PhotoLab para UWP.

Fase de análisis

Nota

En la versión actual del Asistente para actualización de .NET, el analyze comando todavía está en desarrollo y aún no funciona según lo previsto.

El analyze comando realiza una ejecución seca simplificada de la migración de la aplicación. Esta fase puede proporcionar información sobre los cambios que es posible que necesite realizar en el proyecto antes de continuar con la migración adecuada.

En un símbolo del sistema, vaya a la carpeta donde está el .sln archivo del ejemplo photoLab. Como se muestra a continuación, para realizar la fase de analyis, emita el comando upgrade-assistant analyzey pase el nombre del proyecto o la solución que desea analizar. En esta versión de prueba, queremos analizar PhotoLab.sln.

> upgrade-assistant analyze PhotoLab.sln

[17:36:32 INF] Loaded 8 extensions
[17:36:34 INF] Using MSBuild from C:\Program Files\dotnet\sdk\6.0.400\
[17:36:34 INF] Using Visual Studio install from D:\Program Files\Microsoft Visual Studio\2022\Enterprise [v17]
[17:36:39 INF] Writing output to D:\Windows-appsample-photo-lab-master\AnalysisReport.sarif
[17:36:40 INF] Skip minimum dependency check because Windows App SDK cannot work with targets lower than already recommended TFM.
[17:36:40 INF] Recommending Windows TFM net6.0-windows because the project either has Windows-specific dependencies or builds to a WinExe
[17:36:40 INF] Marking package Microsoft.NETCore.UniversalWindowsPlatform for removal based on package mapping configuration UWP
[17:36:40 INF] Adding package Microsoft.WindowsAppSDK based on package mapping configuration UWP
[17:36:40 INF] Adding package Microsoft.Graphics.Win2D based on package mapping configuration UWP
[17:36:40 INF] Marking package Microsoft.UI.Xaml for removal based on package mapping configuration UWP
[17:36:41 WRN] No version of Microsoft.Toolkit.Uwp.UI.Animations found that supports ["net6.0-windows"]; leaving unchanged
[17:36:41 INF] Package Microsoft.UI.Xaml, Version=2.4.2 does not support the target(s) net6.0-windows but a newer version (2.8.1) does.
[17:36:41 INF] Package Microsoft.WindowsAppSDK, Version=1.1.0 does not support the target(s) net6.0-windows but a newer version (1.1.4) does.
[17:36:41 INF] Reference to .NET Upgrade Assistant analyzer package (Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers, version 0.4.336902) needs to be added
[17:36:42 INF] Adding Microsoft.Windows.Compatibility 6.0.0 helps with speeding up the upgrade process for Windows-based APIs
[17:36:44 WRN] Unable to find a supported WinUI nuget package for Microsoft.Toolkit.Uwp.UI.Animations. Skipping this package.
[17:36:45 INF] Running analyzers on PhotoLab
[17:36:54 INF] Identified 0 diagnostics in project PhotoLab
[17:36:54 INF] Winforms Updater not applicable to the project(s) selected
[17:36:54 INF] Analysis Complete, the report is available at D:\Windows-appsample-photo-lab-master\AnalysisReport.sarif

Hay bastante información de diagnóstico interno en la salida, pero parte de esa información resulta útil. Observe que el análisis indica que la migración recomendará que el proyecto tenga como destino el net6.0-windows moniker de la plataforma de destino (TFM) (consulte Plataformas de destino en proyectos de estilo SDK). Una aplicación de consola probablemente obtendría la recomendación de actualizar directamente a net6.0 del TFM, salvo que usara algunas bibliotecas específicas de Windows.

Para PhotoLab, la salida indica que no es necesario realizar ningún cambio en el proyecto antes de migrar.

Sugerencia

Al analizar sus propios proyectos de UWP, si se notifican errores o advertencias, te recomendamos que te encargas de ellos antes de pasar a la siguiente fase.

Fase de migración

Como se muestra a continuación, para realizar la fase de migración, emita el comando upgrade-assistant upgradey pase el nombre del proyecto o la solución que desea migrar. En esta versión de prueba, queremos migrar PhotoLab.sln.

Por lo tanto, todavía en un símbolo del sistema y sigue navegando a la carpeta donde está el .sln archivo del ejemplo PhotoLab, emita este comando:

upgrade-assistant upgrade PhotoLab.sln

Sugerencia

Para esta versión de prueba, la solución contiene solo un proyecto. Como alternativa, puede pasar el nombre de un proyecto a la herramienta, en lugar del nombre de una solución. Sin embargo, si pasa el nombre de una solución que contiene varios proyectos, la herramienta le pedirá que indique qué proyecto es el proyecto de inicio (la herramienta lo llama el punto de entrada de actualización). En función de ese proyecto, la herramienta crea un gráfico de dependencias y sugiere un orden en el que actualizar los proyectos.

El Asistente para actualización de .NET se ejecuta e imprime los pasos de migración que realizará. Aproveche esta oportunidad para leer la lista de pasos para hacerse una idea de lo que implica el proceso de migración.

Después de la lista de pasos, la herramienta imprime un menú de comandos entre los que elegir. Puedes aplicar o omitir el siguiente paso (por ejemplo, el primer paso es hacer una copia de seguridad de tu proyecto para UWP). O bien, puede obtener más información sobre el siguiente paso, ajustar la configuración de registro o detener la actualización y salir.

Puede escribir un número y presionar Entrar. O simplemente presione Entrar para seleccionar el primer comando en el menú.

A medida que comienza cada paso, la herramienta puede proporcionar información sobre lo que probablemente ocurrirá si aplica el paso.

Copia de seguridad del proyecto

En este paso, acepte la ruta de acceso predeterminada (simplemente presione Entrar) o escriba una ruta de acceso personalizada.

Después del paso, presione Entrar de nuevo para continuar.

Cuando la herramienta pasa al paso siguiente, imprime de nuevo el mismo conjunto de pasos, con indicaciones de qué pasos se han completado y qué pasos aún no se han realizado.

Después de la lista de pasos, la herramienta vuelve a imprimir el menú de comandos entre los que elegir.

Sugerencia

Si desea dejar que la herramienta se ejecute desatendida sin necesidad de interactuar repetidamente con ella, puede ejecutar la herramienta en modo no interactivo. Para ello, proporcione la --non-interactive opción de línea de comandos. Sin embargo, cuando se ejecuta upgrade-assistant en modo interactivo (predeterminado), tiene control sobre los cambios o actualizaciones realizados en los proyectos. Mientras que el uso upgrade-assistant de con --non-interactive puede dejar el proyecto en estado roto. Le recomendamos que use la opción a su propia discreción. Todas las opciones de línea de comandos para ejecutar la herramienta se documentan en el repositorio de GitHub del Asistente para actualización .

Conversión del archivo de proyecto al estilo del SDK

En este paso, el proyecto se actualiza desde el formato del proyecto de .NET Framework al formato del proyecto del SDK de .NET. Esta es una salida típica de este paso.

[17:39:52 INF] Applying upgrade step Convert project file to SDK style
[17:39:52 INF] Converting project file format with try-convert, version 0.4.336902+3799b6849a9457619660a355ca9111c050b0ef79
[17:39:53 INF] Skip minimum dependency check because Windows App SDK cannot work with targets lower than already recommended TFM.
[17:39:53 INF] Recommending Windows TFM net6.0-windows because the project either has Windows-specific dependencies or builds to a WinExe
[17:39:55 INF] Converting project D:\Windows-appsample-photo-lab-master\PhotoLab\PhotoLab.csproj to SDK style
[17:39:55 INF] Project file converted successfully! The project may require additional changes to build successfully against the new .NET target.
[17:40:00 INF] Upgrade step Convert project file to SDK style applied successfully

Sugerencia

Al migrar sus propios proyectos de UWP, te recomendamos que prestes atención a la salida de cada paso. Si se notifican errores o advertencias, se recomienda que se ocupe de ellos antes de pasar al paso siguiente.

Limpieza de referencias de paquetes NuGet

En este paso (y sus posibles subprocesos), la herramienta limpia las referencias de paquetes NuGet.

Además de los paquetes a los que hace referencia la aplicación, el packages.config archivo contiene referencias a las dependencias de esos paquetes. Por ejemplo, si agregó referencia al paquete A, que depende del paquete B, se hará referencia a ambos paquetes en el packages.config archivo. En el nuevo sistema de proyectos, solo hace falta la referencia al paquete A. Por lo tanto, este paso analiza las referencias del paquete y quita las que no son necesarias.

La aplicación sigue haciendo referencia a los ensamblados de .NET Framework. Algunos de esos ensamblados podrían estar disponibles como paquetes NuGet. Por lo tanto, este paso analiza esos ensamblados y hace referencia al paquete NuGet adecuado.

Sugerencia

Una vez más, cuando migren sus propios proyectos de UWP, preste atención a la salida para ver si hay alguna acción para usted.

Actualizar TFM

A continuación, la herramienta cambia el moniker de la plataforma de destino (TFM) (consulte Plataformas de destino en proyectos de estilo SDK) de .NET Framework al SDK sugerido. En este ejemplo, es net6.0-windows.

[17:44:52 INF] Initializing upgrade step Update TFM
[17:44:53 INF] Skip minimum dependency check because Windows App SDK cannot work with targets lower than already recommended TFM.
[17:44:53 INF] Recommending Windows TFM net6.0-windows10.0.19041 because the project either has Windows-specific dependencies or builds to a WinExe

Actualización de paquetes NuGet

Después, la herramienta actualiza los paquetes de NuGet del proyecto a las versiones que admiten el TFM actualizado, net6.0-windows.

[17:44:53 INF] Initializing upgrade step Update NuGet Packages
[17:44:53 INF] Initializing upgrade step Duplicate reference analyzer
[17:44:53 INF] No package updates needed
[17:44:53 INF] Initializing upgrade step Package map reference analyzer
[17:44:53 INF] No package updates needed
[17:44:53 INF] Initializing upgrade step Target compatibility reference analyzer
[17:44:53 INF] No package updates needed
[17:44:53 INF] Initializing upgrade step Upgrade assistant reference analyzer
[17:44:53 INF] No package updates needed
[17:44:53 INF] Initializing upgrade step Windows Compatibility Pack Analyzer
[17:44:53 INF] No package updates needed
[17:44:53 INF] Initializing upgrade step MyDotAnalyzer reference analyzer
[17:44:53 INF] No package updates needed
[17:44:53 INF] Initializing upgrade step Newtonsoft.Json reference analyzer
[17:44:53 INF] No package updates needed
[17:44:53 INF] Initializing upgrade step Windows App SDK package analysis
[17:44:53 INF] No package updates needed
[17:44:53 INF] Initializing upgrade step Transitive reference analyzer
[17:44:53 INF] No package updates needed
[17:44:53 INF] Applying upgrade step Update NuGet Packages
[17:44:53 INF] Upgrade step Update NuGet Packages applied successfully

Agregar archivos de plantilla

Sugerencia

Al analizar sus propios proyectos de UWP, la herramienta puede omitir automáticamente los pasos siguientes si determina que no hay nada que hacer para el proyecto en particular.

Este paso implica actualizar cualquier plantilla, configuración y archivos de código. En este ejemplo, la herramienta agrega automáticamente los perfiles de publicación necesarios, App.xaml.cs, MainWindow.xaml.cs, MainWindow.xamly otros.

[17:44:53 INF] Initializing upgrade step Add template files
[17:44:54 INF] 9 expected template items needed
[17:49:44 INF] Applying upgrade step Add template files
[17:49:44 INF] Added template file app.manifest
[17:49:44 INF] Added template file Properties\launchSettings.json
[17:49:44 INF] Added template file Properties\PublishProfiles\win10-arm64.pubxml
[17:49:44 INF] Added template file Properties\PublishProfiles\win10-x64.pubxml
[17:49:44 INF] Added template file Properties\PublishProfiles\win10-x86.pubxml
[17:49:44 INF] File already exists, moving App.xaml.cs to App.xaml.old.cs
[17:49:44 INF] Added template file App.xaml.cs
[17:49:44 INF] Added template file MainWindow.xaml.cs
[17:49:44 INF] Added template file MainWindow.xaml
[17:49:44 INF] Added template file UWPToWinAppSDKUpgradeHelpers.cs
[17:49:44 INF] 9 template items added
[17:49:44 INF] Upgrade step Add template files applied successfully

Actualizar proyecto de escritorio de Windows (cambios específicos de UWP)

En este paso, la herramienta actualiza el proyecto de UWP al nuevo proyecto de escritorio de Windows.

Importante

Puede optar por omitir el subproceso para la inserción del botón Atrás si es mejor para el proyecto. La inserción de la funcionalidad del botón Atrás puede hacer que la interfaz de usuario se comporte de forma diferente. Si esto sucede, quite el StackPanel que se inserta como elemento primario del botón Atrás y cambie la posición del botón Atrás donde parezca mejor.

[17:56:53 INF] Applying upgrade step Update WinUI namespaces
[17:56:53 INF] Upgrade step Update WinUI namespaces applied successfully

[17:58:45 INF] Applying upgrade step Update WinUI Project Properties
[17:58:46 INF] Upgrade step Update WinUI Project Properties applied successfully

[17:59:11 INF] Applying upgrade step Update package.appxmanifest
[17:59:11 INF] Upgrade step Update package.appxmanifest applied successfully

[17:59:11 INF] Applying upgrade step Update package.appxmanifest
[17:59:11 INF] Upgrade step Update package.appxmanifest applied successfully

[17:59:37 INF] Applying upgrade step Remove unnecessary files
[17:59:37 INF] Deleting .\source\repos\Windows-appsample-photo-lab\PhotoLab\Properties\AssemblyInfo.cs as it is not required for Windows App SDK projects.
[17:59:37 INF] Upgrade step Remove unnecessary files applied successfully

[18:00:22 INF] Applying upgrade step Update animations xaml
[18:00:22 INF] Upgrade step Update animations xaml applied successfully

[18:00:42 INF] Applying upgrade step Insert back button in XAML
[18:00:42 INF] Upgrade step Insert back button in XAML applied successfully
[18:00:42 INF] Applying upgrade step Update Windows Desktop Project
[18:00:42 INF] Upgrade step Update Windows Desktop Project applied successfully

Actualización del código fuente

En este paso importante, la herramienta intentará migrar el código fuente de UWP a WinUI 3, realizando cambios de código específico del origen.

La migración de código para la aplicación de ejemplo PhotoLab incluye:

  • Cambios en las API del selector para guardar archivos y el cuadro de diálogo de contenido.
  • Actualización XAML para el paquete Animaciones.
  • Muestra mensajes de advertencia y agrega toDOs de lista de tareas en DetailPage.xaml, DetailPage.xaml.csy para el MainPage.xaml.cs botón Atrás personalizado.
  • Implementar la funcionalidad del botón Atrás y agregar una lista de tareas TODO para personalizar el botón XAML.
  • Se proporciona un vínculo a la documentación que puede usar para obtener más información sobre la implementación del botón Atrás.

Esta es la salida consolidada de los siguientes subpasos:

[18:05:45 INF] Applying upgrade step Apply fix for UA307: Custom back button implementation is needed
[18:05:45 WRN] D:\VisualStudioProjects\Windows-appsample-photo-lab-master\PhotoLab\MainPage.xaml.cs
            TODO UA307 Default back button in the title bar does not exist in WinUI3 apps.
            The tool has generated a custom back button in the MainWindow.xaml.cs file.
            Feel free to edit its position, behavior and use the custom back button instead.
            Read: https://learn.microsoft.com/windows/apps/windows-app-sdk/migrate-to-windows-app-sdk/case-study-1#restoring-back-button-functionality
[18:05:45 INF] Diagnostic UA307 fixed in D:\VisualStudioProjects\Windows-appsample-photo-lab-master\PhotoLab\MainPage.xaml.cs
[18:05:45 WRN] D:\VisualStudioProjects\Windows-appsample-photo-lab-master\PhotoLab\DetailPage.xaml.cs
            TODO UA307 Default back button in the title bar does not exist in WinUI3 apps.
            The tool has generated a custom back button in the MainWindow.xaml.cs file.
            Feel free to edit its position, behavior and use the custom back button instead.
            Read: https://learn.microsoft.com/windows/apps/windows-app-sdk/migrate-to-windows-app-sdk/case-study-1#restoring-back-button-functionality
[18:05:45 INF] Diagnostic UA307 fixed in D:\VisualStudioProjects\Windows-appsample-photo-lab-master\PhotoLab\DetailPage.xaml.cs
[18:05:45 INF] Running analyzers on PhotoLab
[18:05:48 INF] Identified 4 diagnostics in project PhotoLab
[18:05:48 WRN] D:\VisualStudioProjects\Windows-appsample-photo-lab-master\PhotoLab\DetailPage.xaml.cs
            TODO UA307 Default back button in the title bar does not exist in WinUI3 apps.
            The tool has generated a custom back button in the MainWindow.xaml.cs file.
            Feel free to edit its position, behavior and use the custom back button instead.
            Read: https://learn.microsoft.com/windows/apps/windows-app-sdk/migrate-to-windows-app-sdk/case-study-1#restoring-back-button-functionality
[18:05:48 INF] Diagnostic UA307 fixed in D:\VisualStudioProjects\Windows-appsample-photo-lab-master\PhotoLab\DetailPage.xaml.cs
[18:05:48 INF] Running analyzers on PhotoLab
[18:05:51 INF] Identified 3 diagnostics in project PhotoLab
[18:05:51 INF] Upgrade step Apply fix for UA307: Custom back button implementation is needed applied successfully

[18:06:06 INF] Applying upgrade step Apply fix for UA309: ContentDialog API needs to set XamlRoot
[18:06:06 INF] Diagnostic UA309 fixed in D:\VisualStudioProjects\Windows-appsample-photo-lab-master\PhotoLab\DetailPage.xaml.cs
[18:06:06 INF] Diagnostic UA309 fixed in D:\VisualStudioProjects\Windows-appsample-photo-lab-master\PhotoLab\MainPage.xaml.cs
[18:06:06 INF] Running analyzers on PhotoLab
[18:06:09 INF] Identified 1 diagnostics in project PhotoLab
[18:06:09 INF] Upgrade step Apply fix for UA309: ContentDialog API needs to set XamlRoot applied successfully

[18:06:27 INF] Applying upgrade step Apply fix for UA310: Classes that implement IInitializeWithWindow need to be initialized with Window Handle
[18:06:27 INF] Diagnostic UA310 fixed in D:\VisualStudioProjects\Windows-appsample-photo-lab-master\PhotoLab\DetailPage.xaml.cs
[18:06:27 INF] Running analyzers on PhotoLab
[18:06:31 INF] Identified 0 diagnostics in project PhotoLab
[18:06:31 INF] Applying upgrade step Update source code
[18:06:31 INF] Upgrade step Update source code applied successfully
[18:06:31 INF] Upgrade step Apply fix for UA310: Classes that implement IInitializeWithWindow need to be initialized with Window Handle applied successfully

Pasar al siguiente proyecto y Finalizar actualización

Para PhotoLab, no hay más proyectos para migrar. Pero al analizar sus propios proyectos de UWP, es posible que no siempre sea el caso (en cuyo caso la herramienta ahora le permitiría seleccionar qué proyecto actualizar a continuación). Puesto que no hay más proyectos para actualizar, la herramienta le lleva al paso Finalizar actualización :

[18:07:00 INF] Applying upgrade step Finalize upgrade
[18:07:00 INF] Upgrade step Finalize upgrade applied successfully

[18:07:04 INF] Upgrade has completed. Please review any changes.
[18:07:04 INF] Deleting upgrade progress file at D:\Windows-appsample-photo-lab-master\.upgrade-assistant

En este momento, después de realizar la mayor parte de la migración de la aplicación para UWP a la aplicación WinUI 3, el archivo resultante .csproj tiene este aspecto (con algunos de los grupos de propiedades de configuración de compilación quitados para mayor brevedad):

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
    <OutputType>WinExe</OutputType>
    <DefaultLanguage>en-US</DefaultLanguage>
    <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
    <RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
    <UseWinUI>true</UseWinUI>
    <ApplicationManifest>app.manifest</ApplicationManifest>
    <EnableMsixTooling>true</EnableMsixTooling>
    <Platforms>x86;x64;arm64</Platforms>
    <PublishProfile>win10-$(Platform).pubxml</PublishProfile>
  </PropertyGroup>
  <ItemGroup>
    <AppxManifest Include="Package.appxmanifest">
      <SubType>Designer</SubType>
    </AppxManifest>
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.1.0" />
    <PackageReference Include="Microsoft.Graphics.Win2D" Version="1.0.0.30" />
    <PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.4.346201">
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.Windows.Compatibility" Version="6.0.0" />
    <PackageReference Include="CommunityToolkit.WinUI.UI.Animations" Version="7.1.2" />
  </ItemGroup>
  <ItemGroup>
    <Compile Remove="App.xaml.old.cs" />
  </ItemGroup>
  <ItemGroup>
    <None Include="App.xaml.old.cs" />
  </ItemGroup>
</Project>

Como puede, el proyecto ahora hace referencia al SDK de Aplicaciones para Windows, WinUI 3 y .NET 6. Ahora que PhotoLab se ha migrado, puedes aprovechar todas las nuevas características que las aplicaciones winUI 3 tienen que ofrecer y hacer crecer tu aplicación con la plataforma.

Además, el Asistente para actualización de .NET agrega analizadores al proyecto que ayudan a continuar con el proceso de actualización. Por ejemplo, el paquete NuGet Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers .

Migración manual de seguimiento

En este momento puede abrir el proyecto o la solución PhotoLab migrada y ver los cambios realizados en el código fuente. El proyecto se compila y ejecuta, pero necesita un poco más trabajo para terminar de enlazar elementos antes de que la versión de WinUI 3 tenga un aspecto y se comporte como la versión de UWP.

Consulte la lista de tareas en Visual Studio (Ver>lista de tareas) para los TODOs que debe realizar para completar manualmente la migración.

Es posible que la versión de UWP (.NET Framework) de la aplicación contenga referencias de biblioteca que el proyecto no esté usando realmente. Tendrá que analizar cada referencia y determinar si es necesario o no. Es posible que la herramienta también haya agregado o actualizado una referencia de paquete NuGet a la versión incorrecta.

Sugerencias de solución de problemas

Hay varios problemas conocidos que pueden producirse al usar el Asistente para actualización de .NET. En algunos casos, se trata de problemas con la herramienta try-convert, que el Asistente para actualización de .NET usa internamente.

Pero para obtener más sugerencias de solución de problemas y problemas conocidos, consulte el repositorio de GitHub del Asistente para actualizaciones .