針對 Windows Forms 和 WPF 專案,OutputType 不會從 Exe 變更為 WinExe

.NET 5 已針對 WPF 和 Windows Forms 應用程式進行變更,將 OutputTypeExe 自動變更為 WinExe。 我們會在 .NET 6 中還原該變更,且 SDK 將不會再變更 OutputType

導入的版本

.NET 6 RC 1

先前的行為

如果以 .NET 5 或更新版本 OutputType 為目標的項目設定為 Exe,且 UseWindowsFormsUseWPF 設定為 true,則 .NET SDK 會變更 OutputTypeWinExe

新的行為

OutputType 不會再從專案檔中的內容變更。

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

變更類別

這項變更可能會影響「來源相容性

變更原因

.NET 5 變更旨在簡化 .NET MAUI 應用程式,因此 OutputType 不需要在目標框架上設定條件。 但是:

  • 自動推斷 OutputType 會破換使用者預期,並讓開發人員感到挫折。 如需詳細資訊,請參閱 dotnet/sdk#16563 及其相關問題。
  • .NET MAUI 應用程式預設會使用 WinUI,而不是 Windows Forms 或 WPF,因此自動推斷甚至不適用於 .NET MAUI 應用程式。

若您需要 OutputTypeExe 變更為 WinExe,您應在專案檔中明確將其設定為 WinExe

如果您受到先前的中斷性變更影響,而且必須設定 DisableWinExeOutputInference,才能停用 .NET 5 中新增的邏輯,您可以立即移除該屬性。

受影響的 API

N/A

另請參閱