必须选WPF Application (.NET)模板,而非过时的.NET Framework版本;安装需勾选“.NET桌面开发”工作负载,创建时框架选.NET 8.0/10.0-windows,项目文件须为SDK风格且含<UseWPF>true</UseWPF>。

直接用 Visual Studio 2022 或 2025(含)创建 WPF 应用项目,必须选 WPF Application (.NET) 模板,而不是 WPF Application (.NET Framework) —— 后者已过时,不支持 .NET 6+ 新特性,且默认无 SDK 风格项目文件。
选错模板:.NET Framework vs .NET(LTS)
Visual Studio 安装时若勾选了“.NET 桌面开发”工作负载,会同时提供两类模板,但它们本质不同:
-
WPF Application (.NET Framework):基于旧版 .NET Framework(如 4.8),项目文件是.csproj但非 SDK 风格,TargetFramework写成net48,不兼容Microsoft.Extensions.*、现代 DI、源生成等 -
WPF Application (.NET):面向 .NET 6/8/10(LTS),默认使用 SDK 风格项目,TargetFramework为net8.0-windows或net10.0-windows,支持单文件发布、AOT 编译、Windows App SDK 集成
搜索模板时输入 wpf,务必确认右侧语言栏下显示的是 C# 或 Visual Basic,且模板图标下方标注 “.NET”,不是 “.NET Framework”。如果只看到后者,说明你没安装最新版 .NET SDK 或未启用对应工作负载。
创建后立即检查项目文件是否为 SDK 风格
新建项目成功后,右键项目 → “编辑项目文件”,看开头是否类似这样:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net10.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
</PropertyGroup>
</Project>
关键点:
Visual Studio 18.8.1 官方固定版本安装引导程序,当前条目使用微软发布历史中的 Professional Web Installer,适合旧项目兼容、环境回退、复现特定构建链和排查版本差异等场景。
- 必须有
Sdk="Microsoft.NET.Sdk" -
<UseWPF>true</UseWPF>不可省略,否则编译器不识别 XAML -
TargetFramework值末尾带-windows(如net10.0-windows),这是 WPF 必需的平台标识
如果打开的是 App.xaml 但报错 “找不到资源” 或设计视图空白,大概率是漏了 <UseWPF> 或用了旧框架。
常见失败场景与绕过方式
以下情况不会弹出错误,但后续开发会卡住:
- 在“配置新项目”页误选
.NET Framework 4.8—— 即使界面显示“WPF Application”,实际仍是旧模板;应主动切换下拉框到.NET 10.0 (long-term support) - 安装 VS 时没勾选 “.NET 桌面开发” 工作负载,或没单独安装
.NET 10 SDK—— 此时模板列表为空或仅剩 Framework 版本;需运行 Visual Studio Installer → 修改 → 勾选对应项并重启 - 项目创建后
MainWindow.xaml设计器打不开,提示 “XAML 分析失败” —— 先关掉所有设计器标签页,清理解决方案(Build → Clean Solution),再重新加载项目
特别注意:StartupUri 在 App.xaml 中仍有效,但不再推荐硬编码;现代写法倾向在 Program.cs 中用 Application.Start() 手动启动,这对测试和模块化更友好。
真正容易被忽略的是:WPF 项目一旦用错框架,后期几乎无法平滑升级 —— 不是改个 TargetFramework 就能跑通的,XAML 编译行为、依赖注入容器初始化时机、甚至窗口生命周期事件顺序都可能变化。宁可删掉重来,别在旧模板上硬改。

















