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

.NET 8控制台应用自动化Office Word遇程序集加载错误求助

.NET 8控制台应用使用Office Word互操作时出现FileNotFoundException

问题场景

尝试在.NET 8控制台应用中实现Word自动化,代码如下:

internal class Program
{
    static void Main(string[] args)
    {            
        var appWord = new Microsoft.Office.Interop.Word.Application();

        Console.WriteLine("Hello, World!");
    }
}

.csproj配置:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <Reference Include="Microsoft.Office.Interop.Word">
      <HintPath>C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Word\15.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Word.dll</HintPath>
    </Reference>   
  </ItemGroup>

</Project>

运行时抛出错误:

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.'

已通过COM引用添加相关文件,但问题依旧。

原因分析

  1. 手动引用GAC程序集的局限性:直接引用GAC中的Microsoft.Office.Interop.Word.dll无法自动处理其依赖的Office.dll主程序集,.NET 8(属于.NET Core系列)对COM互操作的加载逻辑和传统.NET Framework不同,手动引用GAC文件容易遗漏依赖。
  2. Office版本与位数不匹配:项目平台目标(x86/x64/Any CPU)未与已安装的Office版本位数一致,或者未安装对应版本的Office(错误中版本15对应Office 2013)。
  3. COM互操作配置缺失:未正确启用或配置COM互操作所需的嵌入类型或运行时绑定设置。

解决方案

1. 改用NuGet包管理引用

放弃手动引用GAC中的dll,通过NuGet安装官方的互操作包,它会自动处理依赖和配置:

  • 在NuGet包管理器中搜索并安装Microsoft.Office.Interop.Word(选择与已安装Office匹配的版本,比如15.0.0.0对应Office 2013)
  • 安装后,项目会自动更新引用,无需手动添加HintPath。

2. 确认Office安装状态

  • 确保已安装完整版Office 2013(版本15),而非仅Office Viewer或精简版,这类版本缺少必要的COM组件。
  • 检查Office的位数(32位/64位),在项目属性的“生成”选项卡中,将“平台目标”设置为与Office一致的位数(比如Office是32位就设为x86,64位则设为x64),避免Any CPU导致的位数不匹配问题。

3. 配置COM互操作嵌入类型(可选)

如果使用NuGet包后仍有问题,可在项目的引用属性中,将Microsoft.Office.Interop.Word的“嵌入互操作类型”设置为True,这会将互操作类型嵌入到输出程序集中,减少运行时对外部程序集的依赖。

4. 验证Office COM组件注册

打开命令提示符(管理员权限),运行以下命令重新注册Office COM组件(以Office 2013 32位为例):

cd "C:\Program Files (x86)\Microsoft Office\Office15"
regsvr32.exe ole32.dll
regsvr32.exe oleaut32.dll

如果是64位Office,路径改为C:\Program Files\Microsoft Office\Office15。

内容的提问来源于stack exchange,提问作者Giorgos Betsos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 23:32:04