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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:50:44