You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CefSharp.Core.Runtime.dll出现在bin根目录引发BadImageFormatException如何解决

CefSharp 冗余运行时文件输出问题修复方案

前置校验

  • 首先确认项目已禁用Any CPU生成配置,CefSharp 原生不支持 Any CPU 架构,必须分别配置独立的 x86、x64 生成平台,不要开启「首选32位」选项。

方案1:覆盖NuGet构建逻辑(推荐,不会随包更新丢失)

在你的 .csproj 项目文件末尾,</Project> 标签之前插入以下 MSBuild 配置,覆盖 CefSharp 默认的文件复制逻辑:

<Target Name="CefSharpCopyRuntimeDependencies" AfterTargets="AfterBuild">
  <!-- 仅将对应架构文件输出到子目录,禁用根目录输出 -->
  <ItemGroup>
    <CefSharpRuntimeFilesX86 Include="$(CefSharpCommonRootPath)x86\**\*.*" />
    <CefSharpRuntimeFilesX64 Include="$(CefSharpCommonRootPath)x64\**\*.*" />
  </ItemGroup>
  <Copy SourceFiles="@(CefSharpRuntimeFilesX86)" DestinationFolder="$(OutputPath)x86\%(RecursiveDir)" SkipUnchangedFiles="True" />
  <Copy SourceFiles="@(CefSharpRuntimeFilesX64)" DestinationFolder="$(OutputPath)x64\%(RecursiveDir)" SkipUnchangedFiles="True" />
</Target>

方案2:修改全局Targets文件(不推荐,包更新后会被覆盖)

找到你本地NuGet缓存中的CefSharp.Common.94.4.50\buildTransitive\CefSharp.Common.targets文件,删除所有将CefSharp.Core.Runtime.dll直接复制到$(OutputPath)根目录的逻辑,仅保留输出到x86、x64子目录的分支即可。

兜底方案:添加构建后事件自动清理

如果上述配置仍有遗漏,可以在项目生成事件的「生成后事件命令行」中添加以下命令,构建完成后自动删除根目录的冗余文件:

del "$(TargetDir)CefSharp.Core.Runtime.dll" /f /q

验证步骤

重新生成解决方案后检查bin目录:

  • 根目录无CefSharp.Core.Runtime.dll文件
  • bin\x86、bin\x64目录下各存在对应架构的CefSharp.Core.Runtime.dll
    分别运行x86、x64版本的程序,确认System.BadImageFormatException异常不再抛出。

注意:如果你使用的是支持多架构打包的发布逻辑,需要同步调整发布阶段的文件筛选规则,避免打包时把冗余文件带入发布包。

内容的提问来源于stack exchange,提问作者Uwe Keim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:06:02