官方团队为了防逗比,默认将 OutputType 输出类型重定向为 WinExe 类型,这样能解决很多新手遇到的 WPF 项目显示出黑框控制台界面问题。而对于一些老司机来说,这个特点反而有点迷,特别是在尝试打开控制台调试的时候
在开始之前,先复习一下 OutputType 这个属性的作用,这个属性告诉了 SDK 程序集输出的文件是什么。可以选的值是 Library 类库和 Exe 控制台程序以及 WinExe 带界面的程序
而 Exe 和 WinExe 的差别对于 WPF 和 WinForms 程序来说就是是否在启动的时候显示出控制台出来。而在 dotnet 5 的时候,只要引用了 WPF 或 WinForms 的 SDK 内容,那么 SDK 默认将会重定向 OutputType 为 WinExe 类型
这个行为也能说明为什么引用了 WPF 之后,运行程序之后啥都没发生。因为如果原先是控制台程序,引用了 WPF 之后不显示控制台了,但是项目原先又没有显示如任何的窗口,就好像应用啥都不做一样
如果想要禁用这个默认的行为,只需要在 csproj 上添加 DisableWinExeOutputInference 属性修改为 true 就可以了,代码如下
<PropertyGroup>
<OutputType>Exe</OutputType>
<DisableWinExeOutputInference>true</DisableWinExeOutputInference>
<TargetFramework>net5.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
</PropertyGroup>
更多细节请看官方文档 Breaking change: OutputType set to WinExe for WPF and WinForms apps
本文会经常更新,请阅读原文: https://blog.lindexi.com/post/dotnet-5-%E7%A0%B4%E5%9D%8F%E6%80%A7%E6%94%B9%E5%8A%A8-WPF-%E5%92%8C-WinForms-%E7%9A%84-OutputType-%E8%BE%93%E5%87%BA%E7%B1%BB%E5%9E%8B%E9%87%8D%E5%AE%9A%E5%90%91%E4%B8%BA-WinExe-%E7%B1%BB%E5%9E%8B.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者前往 CSDN 关注我的主页
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。
无盈利,不卖课,做纯粹的技术博客