OutputType no cambiado de Exe a WinExe para los proyectos de Windows Forms y WPF

En .NET 5, se ha realizado una modificación a fin de cambiar automáticamente OutputType de Exe a WinExe para aplicaciones WPF y Windows Forms. En .NET 6, se revierte esa modificación y el SDK ya no cambiará OutputType.

Versión introducida

.NET 6 RC 1

Comportamiento anterior

Si un proyecto tiene como destino .NET 5 o superior, OutputType se ha establecido en Exe y UseWindowsFormso UseWPF se ha establecido en true, el SDK de .NET cambiaría de OutputType a WinExe.

Comportamiento nuevo

OutputType ya no cambia de lo que se ha establecido en el archivo de proyecto.

<PropertyGroup>
  <OutputType>Exe</OutputType>
</PropertyGroup>

Cambio de categoría

Este cambio puede afectar a la compatibilidad de origen.

Motivo del cambio

El cambio de .NET 5 estaba pensado para simplificar las aplicaciones .NET MAUI, por lo que OutputType no tendría que estar condicionado en la plataforma de destino. Pero:

  • La inferencia automática OutputType interrumpió las expectativas del usuario y los desarrolladores frustrados. Para obtener más información, consulte dotnet/sdk#16563 y sus problemas vinculados.
  • Las aplicaciones .NET MAUI usarán WinUI de forma predeterminada, no Windows Forms ni WPF, por lo que la inferencia automática ni siquiera se les aplica.

Si se basaba en el hecho de que OutputType se cambió de Exe a WinExe, debe establecerlo explícitamente en WinExe en el archivo del proyecto.

Si el cambio importante anterior le afectó y ha tenido que establecer DisableWinExeOutputInference para deshabilitar la lógica que se agregó en .NET 5, ya puede quitar esa propiedad.

API afectadas

N/D

Consulte también