Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

97
Views
.NET core 3.0 and MS Office Interop

I am trying to use the recently-released .NET core with MS Office using the interop assemblies

I've got a minimal project file

<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>

and this C# program

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();
        }
    }
}

Unfortunately this fails with

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'

When I added the package to the project I got this

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 

implying 'compatible' but not 'fully compatible'

Is there a way to do this or must I use .NET Framework instead of Core?

I am using Windows 10, .NET core 3.0.100 and MS Office 365 (Word is version 16.0.11929.20298)

over 4 years ago · Santiago Trujillo
5 answers
Answer question

0

The Interop Assemblies are not compatible with .NET Core. You have to use the full framework.

See also this GitHub Issue

If you want to programmatically create Office documents, you might want to take a look at the Office OpenXML SDK.

over 4 years ago · Santiago Trujillo Report

0

The solution to this is a bit quirky, but possible.

Create a new .NET Framework 4.X project. Add the relevant COM references to the project. Edit the .csproj of your .NET Core 3.0 project and add the generated references from the .NET Framework project to the <ItemGroup> tag.

It should look something similar to:

<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>

Do not use the NuGet packages, they are not compatible with .NET Core.

Update:

You can now add the COM references straight from the IDE (since Visual Studio 2019 v16.6):

enter image description here

over 4 years ago · Santiago Trujillo Report

0

I had the same issue. I fixed it by opening the reference properties and setting both "Copy Local" and "Embed Interop Types" to "Yes".

Update: This actually does the same thing as adding these 2 lines to the COM reference in the .csproj file.

<COMReference Include="Microsoft.Office.Core">
    ...
    <EmbedInteropTypes>True</EmbedInteropTypes>
    <Private>true</Private>
</COMReference>

The "Private" tag isn't mentioned in the accepted answers, but it prevents a lot of problems.

over 4 years ago · Santiago Trujillo Report

0

Just Remove Nuget reference to the Interop package and Add Microsoft Excel from Reference Manager. enter image description here

over 4 years ago · Santiago Trujillo Report

0

Mentioning steps for to migrate any interop or dll which are not supporting into .net core

  1. Create .net core project
  2. Get dll from old project / through nuget package
  3. If it is interop dll then right click on dependencies
  4. Click on Add com reference
  5. Select dll which you want to add
  6. After adding select that dependencies and click on property
  7. Inside property window Set two properties a) Copy Local - Yes, b) Embed Interop Types - Yes
  • Screen shots Properties window
  1. Write your code
  2. Execute it
  3. It will works for you!

Nuget Package will not work, Please see blow screen shots. Package not Compatible

Happy Coding! Thanks

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!