C# Can';似乎找不到创建Word文档的正确语法

C# Can';似乎找不到创建Word文档的正确语法,c#,ms-word,docx,C#,Ms Word,Docx,我正在寻找一个基本的控制台应用程序,创建一个新的Word文档,添加文本,然后保存到文件。起初我试图使用DocxNuget软件包,但我在某个地方读到它可能不再免费使用了。尝试使用该软件包时,我在尝试从头开始创建新的Docx文件时遇到了一个“找不到文件”错误,而在使用Microsoft.Office.Interop.Word尝试下面的代码时,我仍然会遇到相同的错误。我找到的每个在线解决方案都会返回相同的错误,所以我不确定我的问题是在引用中还是在一般情况下的文件访问中。提前谢谢你的帮助 错误: Sys

我正在寻找一个基本的控制台应用程序,创建一个新的Word文档,添加文本,然后保存到文件。起初我试图使用DocxNuget软件包,但我在某个地方读到它可能不再免费使用了。尝试使用该软件包时,我在尝试从头开始创建新的Docx文件时遇到了一个“找不到文件”错误,而在使用Microsoft.Office.Interop.Word尝试下面的代码时,我仍然会遇到相同的错误。我找到的每个在线解决方案都会返回相同的错误,所以我不确定我的问题是在引用中还是在一般情况下的文件访问中。提前谢谢你的帮助

错误:

System.IO.FileNotFoundException:'无法加载文件或程序集'office,版本=15.0.0.0,区域性=neutral,PublicKeyToken=71e9bce111e9429c'。系统找不到指定的文件。'

项目文件:

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RootNamespace>Document_Generation</RootNamespace>
  </PropertyGroup>

  <ItemGroup>
    <COMReference Include="Microsoft.Office.Word.dll">
      <Guid>00020905-0000-0000-c000-000000000046</Guid>
      <VersionMajor>8</VersionMajor>
      <VersionMinor>7</VersionMinor>
      <WrapperTool>tlbimp</WrapperTool>
      <Lcid>0</Lcid>
      <Isolated>false</Isolated>
    </COMReference>
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="DocX" Version="1.6.0" />
  </ItemGroup>

</Project>

Exe
netcoreapp3.1
文档生成
00020905-0000-0000-c000-0000000000 46
8.
7.
tlbimp
0
假的

如果您在Visual Studio中进行此操作(我建议这样做),我会执行以下操作(随意更改目录和文本):


必须向项目引用中添加两个Office互操作文件:

  • 核心Office命名空间由
    Office.dll
    库表示。这是一个提供共享功能的Microsoft Office对象库
  • 由Microsoft.Office.Word.dll库表示的Word对象模型
  • 
    Exe
    netcoreapp3.1
    文档生成
    00020905-0000-0000-c000-0000000000 46
    8.
    7.
    tlbimp
    0
    假的
    2DF8D04C-5BFA-101B-BDE5-00AA0044DE52
    2.
    8.
    tlbimp
    0
    假的
    
    例如,您可以尝试创建一个基于.Net framework的控制台应用程序示例,并尝试向Word添加COM引用。然后,您可以观察添加的所需引用(您还可以获取所需的互操作文件)


    您可以在页面上阅读有关Office互操作程序集的详细信息。

    看起来您缺少名为
    Office.dll的程序集。如果你愿意,你可以在GAC注册。或者,您需要添加对项目的引用,就像对
    word
    的引用一样。虽然您有COM引用,但我使用常规DLL引用来
    Microsoft.Office.Interop.Word.DLL
    Office。无法下载和使用库。Office应用程序必须安装在运行代码的计算机上。安装将在注册表中正确注册库。它还将在GAC中安装.NET PIA。Office“互操作”代码的执行依赖于能否运行应用程序。如果您想在不安装Office应用程序的情况下创建文档,请查看Office Open XML和Open XML SDK。我确实安装了word,但我在某个地方读到,当我安装它时,我应该选择一个选项来向计算机添加开发人员依赖项。我想这就是为什么我没有dll的原因。这并不能回答问题
    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <RootNamespace>Document_Generation</RootNamespace>
      </PropertyGroup>
    
      <ItemGroup>
        <COMReference Include="Microsoft.Office.Word.dll">
          <Guid>00020905-0000-0000-c000-000000000046</Guid>
          <VersionMajor>8</VersionMajor>
          <VersionMinor>7</VersionMinor>
          <WrapperTool>tlbimp</WrapperTool>
          <Lcid>0</Lcid>
          <Isolated>false</Isolated>
        </COMReference>
      </ItemGroup>
    
      <ItemGroup>
        <PackageReference Include="DocX" Version="1.6.0" />
      </ItemGroup>
    
    </Project>
    
    File.Create("C:/test.docx").Dispose();
    File.AppendAllText("D:/test.docx", "test text");
    
    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <RootNamespace>Document_Generation</RootNamespace>
      </PropertyGroup>
    
      <ItemGroup>
        <COMReference Include="Microsoft.Office.Word.dll">
          <Guid>00020905-0000-0000-c000-000000000046</Guid>
          <VersionMajor>8</VersionMajor>
          <VersionMinor>7</VersionMinor>
          <WrapperTool>tlbimp</WrapperTool>
          <Lcid>0</Lcid>
          <Isolated>false</Isolated>
        </COMReference>
    
        <COMReference Include="office.dll">
          <Guid>2DF8D04C-5BFA-101B-BDE5-00AA0044DE52</Guid>
          <VersionMajor>2</VersionMajor>
          <VersionMinor>8</VersionMinor>
          <WrapperTool>tlbimp</WrapperTool>
          <Lcid>0</Lcid>
          <Isolated>false</Isolated>
        </COMReference>
      </ItemGroup>
    
    </Project>