.NET core 3.0 и MS Office Interop - PullRequest
       48

.NET core 3.0 и MS Office Interop

1 голос
/ 27 сентября 2019

Я пытаюсь использовать недавно выпущенное ядро ​​.NET с MS Office, используя сборки взаимодействия

У меня есть минимальный файл проекта

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Office.Interop.Word">
      <Version>15.0.4797.1003</Version>
    </PackageReference>
  </ItemGroup>

</Project>

и эта программа на C #

using System;
using Microsoft.Office.Interop.Word;
namespace ii
{
    class Program
    {
        static void Main(string[] args)
        {
            var app = new Application();
            Console.WriteLine(app.Version);
            app.Quit();
        }
    }
}

К сожалению, это не работает с

Unhandled exception. 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.
File name: 'office, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'

Когда я добавил пакет в проект, я получил

warn : Package 'Microsoft.Office.Interop.Word 15.0.4797.1003' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' instead of the project target framework '.NETCoreApp,Version=v3.0'. This package may not be fully compatible with your project.
info : Package 'Microsoft.Office.Interop.Word' is compatible with all the specified frameworks in project 

, что подразумевает «совместимость», но не «полную совместимость»'

Есть ли способ сделать это или я должен использовать .NET Framework вместо Core?

Я использую Windows 10, .NET core 3.0.100 и MS Office 365 (Word - этоверсия 16.0.11929.20298)

Ответы [ 2 ]

3 голосов
/ 27 сентября 2019

Решение этой проблемы немного странное, но возможно.

Создайте новый проект .NET Framework 4.X.Добавьте соответствующие ссылки COM в проект.Отредактируйте .csproj вашего проекта .NET Core 3.0 и добавьте сгенерированные ссылки из проекта .NET Framework в тег <ItemGroup>.

Он должен выглядеть примерно так:

<ItemGroup>
    <COMReference Include="Microsoft.Office.Core">
      <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
      <VersionMajor>2</VersionMajor>
      <VersionMinor>8</VersionMinor>
      <Lcid>0</Lcid>
      <WrapperTool>primary</WrapperTool>
      <Isolated>False</Isolated>
      <EmbedInteropTypes>True</EmbedInteropTypes>
    </COMReference>

... more references

</ItemGroup>

Не используйте пакеты NuGet, они не совместимы с .NET Core.

0 голосов
/ 27 сентября 2019

Сборки взаимодействия не совместимы с .NET Core.Вы должны использовать полную структуру.

См. Также GitHub Issue

Если вы хотите программно создавать документы Office, вы можете взглянуть на Office OpenXML SDK .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...