Parallels中ARM64架构运行.NET框架遇msvcr120.dll加载错误(错误码193)
问题核心分析
Error loading msvcr120.dll (ErrorCode: 193) 本质是架构不匹配:当前使用的是ARM64架构的Windows虚拟机,但找到的msvcr120.dll是x64版本(来自Framework64文件夹),ARM64环境无法加载x64原生dll;而FrameworkArm64里没有该dll,是因为VC++ 2013原生不支持ARM64,系统默认不会自带。
针对性解决方案
安装ARM64版VC++兼容运行库
微软在VC++ 2015-2022的ARM64运行库包中,包含了对VC++ 2013运行库的ARM64兼容支持。直接下载并安装VC++ Redistributable for Visual Studio 2015-2022 (ARM64),安装后系统会自动部署ARM64版的msvcr120.dll到正确路径。手动部署ARM64版dll到应用目录
从ARM64版VC++运行库的安装目录(通常是C:\Program Files (Arm64)\Microsoft Visual Studio\2022\Community\VC\Redist\MSVC\14.36.32532\arm64\Microsoft.VC120.CRT)提取msvcr120.dll,直接放到你的.NET应用的输出目录(和exe文件同目录),不要复制到系统的FrameworkArm64文件夹(权限和系统架构校验会导致加载失败)。统一项目依赖的架构版本
x64/x86架构运行时的依赖问题,说明项目引用了非ARM64的第三方库。检查所有NuGet包和本地引用的dll,替换为ARM64版本:- NuGet包:在包管理器中筛选ARM64版本,或在项目文件中指定
<RuntimeIdentifier>win-arm64</RuntimeIdentifier> - 本地dll:联系供应商获取ARM64版本,或确认是否有跨架构兼容的版本
- NuGet包:在包管理器中筛选ARM64版本,或在项目文件中指定
确认Parallels虚拟机配置
确保Parallels虚拟机是原生ARM64架构的Windows系统(不是x64模拟模式),并在虚拟机设置中启用“原生ARM应用支持”,避免模拟运行带来的架构冲突。
关键注意事项
不要复制Framework64中的x64版msvcr120.dll到FrameworkArm64文件夹,x64和ARM64架构不兼容,这正是触发错误193的原因。
内容的提问来源于stack exchange,提问作者Kruger

