Compartir a través de


Solución de problemas de migración de Windows Runtime 8.x a UWP

El tema anterior era Portar el proyecto.

Se recomienda leer al final de esta guía de portabilidad, pero también sabemos que está ansioso por avanzar y llegar a la fase en la que se compila y se ejecuta el proyecto. Para ello, puede realizar un progreso temporal mediante comentarios o código auxiliar de cualquier código no esencial y, a continuación, volver a pagar esa deuda más adelante. La tabla de solución de problemas de síntomas y remedios de este tema puede resultarle útil en esta fase, aunque no es un sustituto de leer los siguientes temas. Siempre puede hacer referencia a la tabla a medida que avanza a través de los temas posteriores.

Seguimiento de problemas

Las excepciones de análisis xaml pueden ser difíciles de diagnosticar, especialmente si no hay ningún mensaje de error significativo dentro de la excepción. Asegúrate de que el depurador está configurado para capturar las primeras excepciones (para probar y capturar la excepción de análisis desde el principio). Podrás inspeccionar la variable de excepción en el depurador para determinar si el mensaje o HRESULT tiene información útil. Asimismo, consulta la ventana de salida de Visual Studio para comprobar si presenta mensajes de error emitidos por el analizador XAML.

Si la aplicación finaliza y todo lo que sabe es que se produjo una excepción no controlada durante el análisis de marcado XAML, podría ser el resultado de una referencia a un recurso que falta (es decir, un recurso cuya clave existe para las aplicaciones universales 8.1 pero no para las aplicaciones de Windows 10, como algunas claves de estilo TextBlock del sistema). O bien, podría ser una excepción producida dentro de un UserControl, un control personalizado o un panel de diseño personalizado.

Un último recurso es una división binaria. Quite aproximadamente la mitad del marcado de una página y vuelva a ejecutar la aplicación. A continuación, sabrá si el error está en algún lugar dentro de la mitad que quitó (que ahora debe restaurar en cualquier caso) o en la mitad que no se quitó. Repite el proceso dividiendo la mitad que contiene el error y así sucesivamente, hasta que reduzcas a cero el problema.

TargetPlatformVersion

En esta sección se explica qué hacer si, al abrir un proyecto de Windows 10 en Visual Studio, verá el mensaje "Se requiere la actualización de Visual Studio. Uno o varios proyectos requieren una versión> del SDK <de plataforma que no está instalada o que se incluye como parte de una actualización futura de Visual Studio".

  • En primer lugar, determine el número de versión del SDK para Windows 10 que ha instalado. Vaya a C:\Archivos de programa (x86)\Windows Kits\10\Include\<versionfoldername y anote <versionfoldername>>, que estará en notación cuádruple, "Major.Minor.Build.Revision".
  • Abra el archivo del proyecto para editar y buscar los TargetPlatformVersion elementos y TargetPlatformMinVersion . Edítelos para que parezcan así, reemplazando <versionfoldername> por el número de versión de notación cuádruple que encontró en el disco:
   <TargetPlatformVersion><versionfoldername></TargetPlatformVersion>
    <TargetPlatformMinVersion><versionfoldername></TargetPlatformMinVersion>

Solución de problemas de síntomas y remedios

La información de remedio de la tabla está pensada para proporcionarle suficiente información para desbloquearse. Encontrará más detalles sobre cada uno de estos problemas a medida que lea los temas posteriores.

Síntoma Solución
Al abrir un proyecto de Windows 10 en Visual Studio, verá el mensaje "Se requiere la actualización de Visual Studio. Uno o varios proyectos requieren una versión> del SDK <de plataforma que no está instalada o que se incluye como parte de una actualización futura de Visual Studio". Consulte la sección TargetPlatformVersion de este tema.
Se produce una excepción System.InvalidCastException cuando se llama a InitializeComponent en un archivo xaml.cs. Esto puede ocurrir cuando tienes más de un archivo xaml (al menos uno de los cuales está calificado con MRT) que comparten el mismo archivo y elementos xaml.cs tienen atributos x:Name que son incoherentes entre los dos archivos xaml. Intente agregar el mismo nombre a los mismos elementos en ambos archivos xaml o omita nombres por completo.
Cuando se ejecuta en el dispositivo, la aplicación finaliza o cuando se inicia desde Visual Studio, aparece el error "No se puede activar la aplicación Windows Runtime 8.x [...]. No se pudo comunicar la solicitud de activación con el error "Windows no pudo comunicarse con la aplicación de destino. Esto suele indicar que se anuló el proceso de la aplicación de destino. […]”. El problema podría ser el código imperativo que se ejecuta en sus propias páginas o en propiedades enlazadas (u otros tipos) durante la inicialización. O bien, podría ocurrir al analizar el archivo XAML a punto de mostrarse cuando finalice la aplicación (si se inicia desde Visual Studio, será la página de inicio). Busque claves de recursos no válidas o pruebe algunas de las instrucciones de la sección "Seguimiento de problemas" de este tema.
El analizador o compilador XAML, o una excepción en tiempo de ejecución, proporciona el error "No se pudo resolver el recurso "<resourcekey>". La clave de recurso no se aplica a las aplicaciones de Plataforma universal de Windows (UWP) (es el caso de algunos recursos de Windows Phone, por ejemplo). Busque el recurso equivalente correcto y actualice el marcado. Algunos ejemplos que podría encontrar inmediatamente son claves del sistema, como PhoneAccentBrush.
El compilador de C# da el error "No se encontró el nombre de tipo o espacio de nombres '<name>' [...]" o "El nombre de tipo o espacio de nombres '<name>' no existe en el espacio de nombres [...]" o "El nombre de tipo o espacio de nombres '<name>' no existe en el contexto actual". Esto es probable que esto significa que el tipo se implementa en un SDK de extensión (aunque puede haber casos en los que el remedio no sea tan sencillo). Use el contenido de referencia de las API de Windows para determinar qué SDK de extensión implementa la API y, a continuación, use el comando Agregar> referencia de Visual Studio para agregar una referencia a ese SDK al proyecto. Si la aplicación tiene como destino el conjunto de API conocidas como la familia de dispositivos universales, es fundamental que use la clase ApiInformation para probar en tiempo de ejecución la presencia del SDK de extensión antes de llamarlas (esto se denomina código adaptable). Si existe una API universal, siempre es preferible a una API en un SDK de extensión. Para obtener más información, consulta SDK de extensión.

El tema siguiente es Migración de XAML y la interfaz de usuario.