ClickOnce部署Outlook加载项出现System.BadImageFormatException错误
解决方案
System.BadImageFormatException错误本质是程序集的架构(32位/64位)和运行环境不匹配,结合你使用SQLite Interop非托管程序集、更换VS版本后才出现问题的场景,可按以下步骤排查解决:
- 调整项目生成平台目标
Outlook加载项的运行架构完全取决于安装的Outlook位版本:- 若面向的用户侧Outlook是32位版本,必须将项目生成的平台目标固定为
x86,不要使用Any CPU配置,也不要勾选「首选32位」选项 - 若面向的用户侧Outlook是64位版本,必须将项目生成的平台目标固定为
x64
更换VS版本后默认生成配置会被重置,是此前运行正常、现在出问题的常见诱因。
- 若面向的用户侧Outlook是32位版本,必须将项目生成的平台目标固定为
- 确认SQLite Interop程序集的发布配置
SQLite组件分为托管封装层和对应平台的非托管SQLite.Interop.dll,你需要在发布配置中确保对应架构的Interop程序集被正确打包:
右键项目→属性→发布→应用程序文件,找到对应你目标架构的SQLite.Interop.dll,将发布状态设置为「包含」,同时不要打包其他架构的Interop程序集,避免运行时加载错版本。 - 本地预校验
推送FTP更新前,先在本地直接运行编译后的加载项安装包,确认不会触发格式错误后再上线,避免影响存量用户。
内容的提问来源于stack exchange,提问作者Fayaz M.D
相关产品推荐
相关产品推荐

