使用Any CPU编译正常,切换x64/x86时提示Windows.Devices.WiFi无公开成员
问题原因及解决方案
核心原因
Windows.Devices.WiFi属于Windows Runtime (WinRT) API,这类API最初为UWP应用设计。你的项目在Any CPU模式下能正常编译运行,是因为该模式下.NET会自动适配运行环境,且默认启用了对WinRT API的兼容机制;但切换到x86或x64架构时,项目的平台配置丢失了对WinRT API集的显式引用,导致编译器无法识别这些类型。
如果你的项目是传统.NET Framework桌面项目(如WinForms、WPF),这个问题会更明显——因为桌面项目并非原生支持WinRT API,Any CPU模式下的兼容是隐式的,指定具体架构后需要手动配置引用。
解决方案
确认目标框架版本
右键项目 → 属性 → 应用程序,确保目标框架为.NET Framework 4.6.1或更高版本(从该版本开始,.NET Framework添加了对WinRT API的官方兼容支持)。显式添加WinRT API引用
- 右键项目 → 添加 → 引用 → 点击「浏览」按钮。
- 导航到Windows SDK的UnionMetadata目录,路径通常为:
C:\Program Files (x86)\Windows Kits\10\UnionMetadata\[SDK版本号]\Windows.winmd(替换[SDK版本号]为你安装的具体版本,比如10.0.22621.0)。 - 选择
Windows.winmd文件并添加引用,这会让编译器识别所有WinRT API类型,包括Windows.Devices.WiFi。
检查架构配置
右键项目 → 属性 → 生成,确认平台目标设置为x86或x64,同时确保未禁用WinRT相关的编译选项(默认情况下不需要额外调整)。更新Windows SDK
如果找不到对应版本的Windows.winmd,请安装最新的Windows SDK(通过Visual Studio安装器的「单个组件」选项添加),确保API定义文件完整。
内容的提问来源于stack exchange,提问作者tmighty
相关产品推荐
相关产品推荐

