如何从 .Net 8 C# 控制台应用程序自动化 Office Word

问题描述 投票:0回答:1

我正在尝试从 .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 文件所示。任何帮助将不胜感激!

c# .net-core ms-word office-interop asp.net-core-8
1个回答
0
投票

当我在参考文献中浏览单词时(正如您显然正在做的那样),我在项目文件中得到相同的内容。

但是如果我使用 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 的(隐藏)版本!

© www.soinside.com 2019 - 2024. All rights reserved.