.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引用添加相关文件,但问题依旧。
原因分析
- 手动引用GAC程序集的局限性:直接引用GAC中的
Microsoft.Office.Interop.Word.dll无法自动处理其依赖的Office.dll主程序集,.NET 8(属于.NET Core系列)对COM互操作的加载逻辑和传统.NET Framework不同,手动引用GAC文件容易遗漏依赖。 - Office版本与位数不匹配:项目平台目标(x86/x64/Any CPU)未与已安装的Office版本位数一致,或者未安装对应版本的Office(错误中版本15对应Office 2013)。
- 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
相关产品推荐
相关产品推荐

