Windows 11下WinUI 3项目无法找到Microsoft.Windows.SDK.BuildTools包求助
问题描述
环境配置
- 操作系统:Windows 11
- Visual Studio版本:2022社区版17.4.5
- 已安装工作负载:.NET桌面开发、通用Windows平台开发
- 安装详情:包含.NET桌面开发工具、Windows 11 SDK(10.0.22621.0)
错误现象
创建**带Windows应用打包项目的空白应用(桌面版WinUI 3)**后,出现两类问题:
- NuGet包还原错误,所有相关包均报如下提示:
Unable to find package Microsoft.Windows.SDK.BuildTools. No packages exist with this id in source(s): Microsoft Visual Studio Offline Packages, Package source App3 C:\Users\Moshe\source\repos\App3\App3\App3.csproj
- 代码编译错误:
The Type 'Window was not found'
现有信息
- NuGet包源指向
C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\microsoft.windows.sdk.buildtools,该路径下存在10.0.22621.1版本目录,bin目录包含缺失的包文件 - 项目.csproj引用的包版本:
Microsoft.WindowsAppSDK:1.2.221109.1Microsoft.Windows.SDK.BuildTools:10.0.22621.755
- 已尝试无效操作:卸载重装VS、切换Windows 10 SDK、更换WinUI3模板
解决建议
1. 修正NuGet包源配置
- 打开Visual Studio,依次点击工具 > NuGet包管理器 > 包管理器设置
- 在包源列表中,添加并启用官方NuGet.org源(地址:
https://api.nuget.org/v3/index.json) - 调整本地离线包源路径为
C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages(无需指向单个包子目录),保存设置
2. 匹配SDK与NuGet包版本
项目引用的Microsoft.Windows.SDK.BuildTools版本(10.0.22621.755)与本地安装的Windows 11 SDK版本(10.0.22621.0)不匹配,可二选一处理:
- 更新本地SDK:打开Visual Studio安装程序,选择修改,在单个组件中安装
Windows 11 SDK (10.0.22621.755),重启VS后重新还原包 - 降低包版本:编辑项目.csproj文件,将
Microsoft.Windows.SDK.BuildTools的版本改为本地已有的10.0.22621.1,保存后右键项目选择还原NuGet包
3. 清理缓存并重新还原
- 打开命令提示符,执行清理NuGet缓存命令:
nuget locals all -clear
- 回到Visual Studio,右键解决方案选择清理解决方案,再选择生成解决方案触发自动包还原
4. 调整TargetFramework版本
项目当前TargetFramework为net6.0-windows10.0.19041.0,建议修改为与本地SDK匹配的版本:
<TargetFramework>net6.0-windows10.0.22621.0</TargetFramework> <TargetPlatformMinVersion>10.0.22621.0</TargetPlatformMinVersion>
保存后重新生成项目,可解决Window类型找不到的问题
5. 重置VS组件缓存
- 关闭所有Visual Studio实例
- 删除以下目录缓存:
%LOCALAPPDATA%\Microsoft\VisualStudio\17.0_<随机字符>\ComponentModelCache%USERPROFILE%\.nuget\packages(建议备份后删除)
- 重启VS并打开项目,重新生成
内容的提问来源于stack exchange,提问作者Moshe Yalovsky
相关产品推荐
相关产品推荐

