C#中使用Microsoft.Office.Interop转Word到PDF遇程序集加载错误
Office Interop 转换PDF时找不到office程序集的解决方案
问题背景
已安装Office 365,通过NuGet安装了Microsoft.Office.Interop.Word/Excel 15.0.4795.1001,使用Interop代码转换Word到PDF时,触发以下错误:
System.IO.FileNotFoundException: Could not load file or assembly 'office, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'. The system cannot find the file specified.
解决方案
1. 匹配Office与项目平台位数
Office 365默认是64位,但多数.NET项目默认设为Any CPU或32位,会导致程序集加载不匹配:
- 右键项目 → 属性 → 生成 → 平台目标,设置为x64(对应64位Office)或x86(对应32位Office)
- 取消勾选“首选32位”选项(如有)
2. 安装Office .NET可编程性支持
NuGet的Interop包仅提供互操作层,需系统安装对应主互操作程序集(PIA):
- 打开控制面板 → 程序和功能 → 找到Microsoft Office 365 → 右键选择“更改”
- 选择“添加或删除功能” → 展开“Office共享功能”
- 找到“.NET Programmability Support”,设置为“从本机运行”,点击“继续”完成安装
3. 添加程序集绑定重定向
Office 365对应的PIA版本通常是16.0.0.0,与NuGet包依赖的15.0.0.0版本不匹配,可通过绑定重定向解决:
在项目的app.config或web.config中添加以下配置:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="office" publicKeyToken="71e9bce111e9429c" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-16.0.0.0" newVersion="16.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime>
4. 手动添加Office程序集引用
若项目未自动引用Office程序集,可手动添加:
- 右键项目 → 引用 → 添加引用 → 浏览
- 找到Office安装目录下的
office.dll(通常路径:C:\Program Files\Microsoft Office\root\Office16\OFFICE.DLL) - 添加后,设置该引用的“复制本地”为False(Office程序集为系统全局组件,无需复制到输出目录)
5. 修复Office安装
若以上步骤无效,尝试修复Office:
- 控制面板 → 程序和功能 → Microsoft Office 365 → 更改 → 选择“快速修复”,完成后重启测试;若无效,尝试“联机修复”
内容的提问来源于stack exchange,提问作者Susan
相关产品推荐
相关产品推荐

