我正在尝试从 .Net 8 控制台应用程序自动化 Office 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>
当我尝试从 VS 内部以调试模式运行应用程序时,出现以下错误:
System.IO.FileNotFoundException:'无法加载文件或程序集 '办公室,版本=15.0.0.0,文化=中性, PublicKeyToken=71e9bce111e9429c'。系统找不到该文件 指定。'
我不明白为什么会出现此错误。我已使用 COM 引用显式添加了该文件,如 .csproj 文件所示。任何帮助将不胜感激!
当我在参考文献中浏览单词时(正如您显然正在做的那样),我在项目文件中得到相同的内容。
但是如果我使用 COM 引用找到单词,我会在 ItemGroup 中获得另一个内容:
<ItemGroup>
<COMReference Include="Microsoft.Office.Interop.Word">
<WrapperTool>tlbimp</WrapperTool>
<VersionMinor>7</VersionMinor>
<VersionMajor>8</VersionMajor>
<Guid>00020905-0000-0000-c000-000000000046</Guid>
<Lcid>0</Lcid>
<Isolated>false</Isolated>
<EmbedInteropTypes>true</EmbedInteropTypes>
</COMReference>
</ItemGroup>
这在我的计算机上运行没有错误(其他版本确实返回与您的相同的错误)。
顺便说一句:请记住,代码实际上启动了 Word 的(隐藏)版本!