ARM64笔记本升级ASP.NET Core 3.1至8.0后加载hostfxr.dll异常
问题诊断与解决方案
核心原因
你的问题本质是ARM64架构笔记本上,.NET运行时位数不匹配+VS/IIS Express默认调用x86运行时,导致系统错误地去x86路径下寻找不匹配版本的hostfxr.dll,而非使用ARM64版本的.NET 8运行时。
分步解决方案
1. 强制项目使用ARM64架构调试
- 打开项目属性 → 生成 → 平台目标,直接选择ARM64(不要用
Any CPU,ARM64机器上Any CPU可能默认走x86兼容层) - 切换到调试选项卡,取消勾选「启用本机代码调试」(若不需要),避免架构冲突干扰调试流程
2. 修正VS与IIS Express的运行架构配置
- 打开VS2022安装器,确认已安装**.NET 8.0 ARM64 SDK**(之前可能误装了x86版本)
- 修改IIS Express配置文件:
找到路径%USERPROFILE%\Documents\IISExpress\config\applicationhost.config,编辑文件,在<applicationPoolDefaults>节点中添加/修改:
强制IIS Express使用64位(ARM64)运行模式<processModel enable32BitAppOnWin64="false" />
3. 验证并修复.NET运行时环境
- 以管理员身份打开命令提示符,运行:
确认输出中存在ARM64架构的.NET 8.0 SDK和运行时,示例如下:dotnet --info.NET SDK: Version: 8.0.16 Architecture: arm64 .NET Runtime: Version: 8.0.16 Architecture: arm64 - 若未显示ARM64版本,卸载现有.NET 8 SDK,重新下载ARM64专属版本安装
- 运行全局缓存清理:
dotnet clean --all
4. 调整环境变量优先级
- 打开「此电脑」→ 属性 → 高级系统设置 → 环境变量
- 在系统变量的
PATH中,将C:\Program Files\dotnet\(ARM64版本的dotnet路径)移至C:\Program Files (x86)\dotnet\(x86版本路径)之前,确保系统优先调用ARM64的dotnet host
5. 极端情况:禁用VS的x86兼容层
- 右键VS2022快捷方式 → 属性 → 兼容性
- 取消勾选「以兼容模式运行这个程序」,勾选「以管理员身份运行此程序」
- 进入「更改高DPI设置」,勾选「替代高DPI缩放行为」,选择「应用程序」
内容的提问来源于stack exchange,提问作者Ego Placebo
相关产品推荐
相关产品推荐

