升级CefSharp至111.2.20后MSI安装项目遇0x8007000B构建错误求助
解决CefSharp升级后MSI打包依赖缺失及0x8007000B错误
一、精准查看错误日志
- 开启MSBuild详细日志:打开Visual Studio,依次进入
工具→选项→项目和解决方案→生成并运行,将MSBuild项目生成输出详细程度设置为「详细」或「诊断」。重新执行MSI打包操作,从输出窗口中筛选error或warning关键字,定位具体缺失的依赖项名称及路径。 - 检查SetupActions项目的输出日志:右键点击
Test.Installer.SetupActions项目,选择「生成」,查看其输出日志,确认是否有依赖项未被正确复制到输出目录。
二、针对性修复步骤
统一项目平台目标
CefSharp 111.x版本不再支持Any CPU平台,需确保主WinForms项目、SetupActions项目及MSI安装项目的平台目标完全一致(均设为x86或x64)。操作:右键项目→属性→生成→平台目标,选择对应架构。修正SetupActions项目的依赖引用
- 确认
SetupActions项目已正确引用CefSharp.Common.NETCore和CefSharp.WinForms.NETCore111.2.20版本。 - 对于这两个引用,右键→属性,将复制本地设置为
True,确保依赖dll被复制到SetupActions的输出目录。
- 确认
确保MSI项目包含所有必要的CefSharp依赖
- 主项目输出的CefSharp核心dll(如
CefSharp.Core.dll、CefSharp.WinForms.dll)需被添加到MSI项目的「应用程序文件夹」中。 - CefSharp 111.x依赖的CEF原生运行时文件(如
libcef.dll、icudtl.dat、chrome_elf.dll等),会通过NuGet自动复制到主项目的输出目录,需将这些文件手动添加到MSI项目的文件列表中,确保安装时能部署到目标路径。
- 主项目输出的CefSharp核心dll(如
调整自定义动作的执行上下文
- 如果
SetupActions是安装自定义动作,进入MSI项目的「自定义动作」节点,选中对应的动作项,将工作目录设置为[TARGETDIR](应用程序安装目录),确保自定义动作执行时能找到依赖的dll。 - 检查自定义动作的平台属性,确保与项目架构匹配(如x64项目的自定义动作需设为x64)。
- 如果
验证依赖架构兼容性
错误0x8007000B本质是「格式不正确」,通常源于32位/64位组件混合运行。可通过以下方式验证:- 使用
dumpbin /headers命令(需安装VS的C++工具集)查看缺失dll的架构,确认与项目平台一致。 - 确保所有依赖项的目标框架与
SetupActions项目的.NET Core 3.1匹配,无跨框架引用。
- 使用
内容的提问来源于stack exchange,提问作者damian17
相关产品推荐
相关产品推荐

