WPF 从 .net core 3.1 到 .net 5.0
Intro
昨天更新了一个简单的 asp.net core webapi 项目,从 3.1 更新到了 5.0,今天更新一个 WPF 应用到 net 5.0
项目文件更新
首先项目文件中的 SDK 发生了变化,原来是
Microsoft.NET.Sdk.WindowsDesktop
更新后变为Microsoft.NET.Sdk
,和普通的 Console 应用以及类库应用的 SDK 保持一致项目目标框架修改,从原来的
netcoreapp3.1
变为net5.0-windows
,WPF 中有很多API 都是 Windows 上才可以用的
在以前的 .NET Core 版本中,WinForms 和 WPF 应用使用单独的项目 SDK (Microsoft.NET.Sdk.WindowsDesktop)。从 .NET 5.0 开始,WinForms 和 WPF SDK 已与 .NET SDK (Microsoft.NET.Sdk) 统一。
![](https://i-blog.csdnimg.cn/blog_migrate/42b2a5477108c39a6453b1a69987474d.png)
持续集成配置更新
我目前使用的是 Azure DevOps 来做持续集成的,需要更新持续集成配置以保证 build 不会失败
原来使用的是 dotnet core sdk 3.1,现在更新成 net 5.0 sdk 也需要更新,需要注意的是默认不适用预览版 sdk,而 5.0 还未正式发布,所以需要配置使用预览版 sdk,安装 SDK 是使用的微软封装的一个 Task,详细可以参考文档 https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/tool/dotnet-core-tool-installer?view=azure-devops
修改如下:
![](https://i-blog.csdnimg.cn/blog_migrate/86c21b749f38d70098d17fdf9495aa5f.png)
More
我测试了一下,WPF 项目 Target 设置为 net5.0
也可以的,可能微软是想特别表示只能运行在 windows 上吧
于是尝试把项目设置为 net5.0
,但是 Azure 上的持续集成失败了,test 的项目需要是 net5.0-windows
,看起来是可以检测目标平台的,索性直接都改成了 net5.0-windows
了,有兴趣的童鞋可以自己尝试一下
Reference
https://docs.microsoft.com/en-us/dotnet/core/compatibility/3.1-5.0#windows-presentation-framework-wpf
https://docs.microsoft.com/zh-cn/dotnet/core/compatibility/3.1-5.0#windows-presentation-framework-wpf
https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/tool/dotnet-core-tool-installer?view=azure-devops
https://github.com/WeihanLi/DbTool
https://github.com/WeihanLi/DbTool/commit/2d78391d907bbec5137486984d0d057b7d9217c1
https://github.com/WeihanLi/DbTool/commit/ecd2fcb602a22d9dd9a6d0a2be038e07b4933492