OutputType non cambia da Exe a WinExe per i progetti Windows Form e WPF

In .NET 5 è stata apportata una modifica per cui OutputType cambia automaticamente da Exe a WinExe per le app WPF e Windows Form. In .NET 6 questa modifica viene annullata e OutputType non verrà più cambiato dall'SDK.

Versione introdotta

.NET 6 RC 1

Comportamento precedente

Se un progetto era destinato a .NET 5 o versione successiva, OutputType veniva impostato su Exe e UseWindowsForms oppure UseWPF veniva impostato su true, quindi .NET SDK cambiava OutputType in WinExe.

Nuovo comportamento

OutputType non viene più cambiato rispetto all'impostazione del file di progetto.

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

Categoria di modifiche

Questa modifica può influire sulla compatibilità dell'origine.

Motivo della modifica

La modifica di .NET 5 è stata pensata per semplificare le app MAUI .NET, in modo che OutputType non debba essere condizionato nel framework di destinazione. Tuttavia:

  • L'inferenza automatica di OutputType non soddisfaceva le aspettative degli utenti e creava frustrazione negli sviluppatori. Per altre informazioni, vedere dotnet/sdk#16563 e i relativi problemi collegati.
  • Per impostazione predefinita, le app MAUI .NET useranno WinUI, non Windows Form o WPF, quindi l'inferenza automatica non si applica nemmeno alle app MAUI .NET.

Se ci si basava sul fatto che OutputType venisse cambiato da Exe a WinExe, sarà necessario impostarlo in modo esplicito su WinExe nel file di progetto.

Se a causa della modifica di rilievo precedente è stato necessario impostare DisableWinExeOutputInference per disabilitare la logica aggiunta in .NET 5, è ora possibile rimuovere tale proprietà.

API interessate

N/D

Vedi anche