在Azure Web Service中使用MigraDoc WPF渲染PDF时遇BadImageFormatException错误
解决MigraDoc渲染时PresentationCore加载错误的方案
检查框架与包版本兼容性
旧版MigraDoc/PdfSharp依赖.NET Framework的WPF组件(如PresentationCore),若当前项目基于.NET Core/.NET 5+,需替换为适配跨平台的Core版本包:- 卸载旧包:
Uninstall-Package MigraDoc -Force、Uninstall-Package PdfSharp -Force - 安装Core版本:
Install-Package MigraDocCore.DocumentObjectModel、Install-Package PdfSharpCore
- 卸载旧包:
清理依赖与构建输出
残留的旧引用或构建文件可能导致错误,执行以下操作:- 删除项目根目录下的
bin和obj文件夹 - 执行命令:
dotnet clean→dotnet restore→dotnet build
或通过IDE右键项目选择「清理」后再「生成」
- 删除项目根目录下的
调整平台目标设置
项目平台目标与依赖程序集不匹配会触发BadImageFormatException:- 右键项目→属性→生成
- 确保「平台目标」设置为
x64或x86(与本地环境一致),若选Any CPU则关闭「首选32位」选项
移除不必要的PresentationCore引用
检查项目引用列表,若存在PresentationCore,直接删除该引用——MigraDoc的PDF渲染逻辑不需要WPF组件支持进阶:调整程序集加载策略(兜底方案)
若以上方法无效,可在项目入口处添加代码,阻止加载PresentationCore引用程序集:using System.Reflection; AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += (sender, args) => { if (args.Name.StartsWith("PresentationCore,")) { return null; } return Assembly.Load(args.Name); };
内容的提问来源于stack exchange,提问作者VDS
相关产品推荐
相关产品推荐

