C#项目发布版本添加SimConnect.dll及解决发布报错问题
解决SimConnect.dll在Release x64模式下的BadImageFormatException并完成发布
异常核心原因
System.BadImageFormatException本质是进程运行架构与依赖DLL架构不匹配,Debug x64正常说明Debug配置的架构逻辑与DLL一致,Release配置存在架构设置或文件复制的问题。
具体解决与发布步骤
确认SimConnect.dll的架构版本
- 右键项目中的
Microsoft.FlightSimulator.SimConnect.dll,查看属性→详细信息;或使用VS命令行工具执行dumpbin /headers Microsoft.FlightSimulator.SimConnect.dll,确认该DLL为x64架构。如果是32位版本,必须替换为对应x64版本的SimConnect.dll(可从微软模拟飞行SDK中获取)。
- 右键项目中的
修正Release配置的架构设置
- 打开项目属性→生成选项卡:
- 切换到Release配置,将“平台目标”设置为x64,禁用“首选32位”选项(若存在)。
- 打开“配置管理器”,确认Release对应的平台为x64,无混合其他架构的配置项。
- 打开项目属性→生成选项卡:
配置DLL的复制与发布规则
- 在解决方案资源管理器中,找到引用的
Microsoft.FlightSimulator.SimConnect.dll,右键→属性:- 将“复制本地”设置为True,确保Release编译时DLL会自动复制到
bin\Release\x64目录。 - 确认“特定版本”设为False,避免版本绑定导致的兼容问题。
- 将“复制本地”设置为True,确保Release编译时DLL会自动复制到
- 在解决方案资源管理器中,找到引用的
完成项目发布
- 文件夹发布(推荐):
- 右键项目→选择发布,目标选择“文件夹”。
- 在发布配置中,选择Release x64作为当前配置。
- 点击“文件发布选项”,检查“应用程序文件”列表中,
Microsoft.FlightSimulator.SimConnect.dll的发布状态为“包含”,确认后启动发布。
- ClickOnce发布:
- 选择Release x64配置进入发布流程。
- 在“应用程序文件”设置中,将
Microsoft.FlightSimulator.SimConnect.dll的发布状态设为“包含(自动)”,确保其被打包进发布包。
- 文件夹发布(推荐):
额外排查点
- 检查项目是否存在其他32位依赖DLL,导致进程强制以32位运行。可通过Process Explorer查看运行中Release进程的架构(右键进程→属性→图像→架构)。
- 发布完成后,确认发布目录中存在
Microsoft.FlightSimulator.SimConnect.dll,且版本与开发时一致。
内容的提问来源于stack exchange,提问作者Fred Novack
相关产品推荐
相关产品推荐

