Visual Studio C#目标平台设为x86时NuGet包疑似x64导致运行报错
解决ENet-CSharp NuGet包架构不匹配导致的BadImageFormatException
一、查看NuGet包的目标架构
- 本地已安装包的检查方法:
- 找到项目里的NuGet安装目录,一般是
项目根目录\packages\ENet-CSharp.[版本号]\ - 进入
lib或runtimes文件夹:- 如果能看到
win-x86、win-x64这类子文件夹,说明包自带了对应架构的原生库 - 直接检查.dll文件:用VS的开发者命令行运行
dumpbin /headers [dll文件名],输出里找machine字段——x86对应8664 (x86),x64对应8664 (AMD64)
- 如果能看到
- 找到项目里的NuGet安装目录,一般是
- NuGet官方页面检查:
搜ENet-CSharp的NuGet详情页,看"Assets"或"Dependencies"板块,这里会明确标注包支持的架构和运行时环境
二、获取x86架构的ENet-CSharp版本
- 找官方预编译的x86包:
- 在NuGet包管理器里搜ENet-CSharp,扫一遍版本列表,有些包会在版本号或描述里标注架构(比如带
x86后缀) - 查包的源码仓库(如果有公开仓库),确认官方有没有发布x86的预编译包
- 在NuGet包管理器里搜ENet-CSharp,扫一遍版本列表,有些包会在版本号或描述里标注架构(比如带
- 自己编译x86版本:
如果官方没提供x86包,就克隆源码仓库,在VS里把项目的目标平台改成x86,编译生成对应的库,替换项目里原来引用的包文件就行 - 注意原生依赖:
ENet-CSharp依赖原生的ENet库,不管是用预编译包还是自己编译,都要确保配套的enet.dll也是x86架构的,不然还是会报错
内容的提问来源于stack exchange,提问作者IgorManowar
相关产品推荐
相关产品推荐

