对于 Windows 窗体和 WPF 项目,OutputType 未从 Exe 更改为 WinExe
在 .NET 5 中,对 WPF 和 Windows 窗体应用进行了更改,以将 OutputType
从 Exe
自动更改为 WinExe
。 在 .NET 6 中,我们将还原此更改,OutputType
将不再被 SDK 更改。
引入的版本
.NET 6 RC 1
旧行为
如果项目面向 .NET 5 或更高版本,OutputType
已设置为 Exe
,并且 UseWindowsForms
或 UseWPF
设置为 true
,则 .NET SDK 将 OutputType
更改为 WinExe
。
新行为
OutputType
不再从项目文件中更改。
<PropertyGroup>
<OutputType>Exe</OutputType>
</PropertyGroup>
更改类别
此更改可能会影响源兼容性。
更改原因
.Net 5 更改旨在简化 .NET MAUI 应用,这样 OutputType
就不需要以目标框架为条件。 但是:
- 自动推断
OutputType
打破了用户的期望,并让开发人员感到沮丧。 有关详细信息,请参阅 dotnet/sdk#16563 及其链接的问题。 - .NET MAUI 应用将默认使用 WinUI,而不是 Windows 窗体或 WPF,因此自动推断甚至不适用于 .NET MAUI 应用。
建议的操作
如果你依赖于 OutputType
从 Exe
更改为 WinExe
这一事实,则应该在项目文件中显式地将其设置为 WinExe
。
如果受以前的中断性变更的影响且必须设置 DisableWinExeOutputInference
以禁用在 .NET 5 中添加的逻辑,则可以立即删除该属性。
受影响的 API
不可用
请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈