Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Es importante probar las compilaciones de lanzamiento de tu aplicación de la Plataforma Universal de Windows en sus plataformas de destino, ya que las configuraciones de depuración y lanzamiento son completamente diferentes. De forma predeterminada, la configuración de depuración usa el entorno de ejecución de .NET Core para compilar la aplicación, pero la configuración de versión usa .NET Native para compilar la aplicación en código nativo.
Importante
Para obtener información sobre cómo tratar con el
Compilaciones de depuración y lanzamiento
Cuando la compilación de depuración se ejecuta en el entorno de ejecución de .NET Core, no se ha compilado en código nativo. Esto hace que todos los servicios proporcionados normalmente por el tiempo de ejecución estén disponibles para la aplicación.
Por otro lado, la compilación de liberación se compila en código nativo para sus plataformas de destino, elimina la mayoría de las dependencias en entornos de ejecución y bibliotecas externas, y optimiza en gran medida el código para obtener el máximo rendimiento.
Al depurar compilaciones de versión creadas con .NET Native:
Puede usar el motor de depuración nativo de .NET, que es diferente de las herramientas de depuración normales de .NET.
El tamaño del archivo ejecutable se reduce tanto como sea posible. Una de las formas en que .NET Native reduce el tamaño de un archivo ejecutable es recortando significativamente los mensajes de excepción en tiempo de ejecución, un tema descrito con más detalle en la sección Mensajes de excepción en tiempo de ejecución sección.
El código está muy optimizado. Esto significa que la inserción se usa siempre que resulte posible. (La inserción mueve el código de las rutinas externas a la rutina de llamada). El hecho de que .NET Native proporciona un entorno de ejecución especializado e implementa una inserción agresiva afecta a la pila de llamadas que se muestra al depurar. Para obtener más información, consulte la sección
pila de llamadas en tiempo de ejecución.
Nota:
Puede controlar si las compilaciones de depuración y publicación se realizan con la herramienta nativa de .NET marcando o desmarcando la casilla Compilar con la herramienta nativa de .NET. Sin embargo, Microsoft Store siempre compilará la versión de producción de la aplicación con la cadena de herramientas de .NET Native.
Mensajes de excepción en tiempo de ejecución
Para minimizar el tamaño del archivo ejecutable de la aplicación, .NET Native no incluye el texto completo de los mensajes de excepción. Como resultado, es posible que las excepciones en tiempo de ejecución lanzadas en las compilaciones de lanzamiento no muestren el texto completo de los mensajes de excepción. En su lugar, el texto puede constar de una subcadena junto con un vínculo que se debe seguir para obtener más información. Por ejemplo, la información de excepción puede aparecer como:
Exception thrown: '$16_System.AggregateException' in Unknown Module.
Additional information: AggregateException_ctor_DefaultMessage
If there is a handler for this exception, the program may be safely continued.
Si necesita el mensaje de excepción completo, ejecute la compilación de depuración en vez de eso. Por ejemplo, la información de excepción anterior de la compilación de lanzamiento podría aparecer de la siguiente manera en la compilación de depuración:
Exception thrown: 'System.AggregateException' in NativeApp.exe.
Additional information: Value does not fall within the expected range.
Pila de llamadas en tiempo de ejecución
Debido a la inserción y otras optimizaciones, es posible que la pila de llamadas mostrada por una aplicación compilada por la cadena de herramientas nativa de .NET no le ayude a identificar claramente la ruta de acceso a una excepción en tiempo de ejecución.
Para obtener la pila completa, ejecute la compilación de depuración en su lugar.