• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

702
Views
Interoperabilidad de .NET core 3.0 y MS Office

Estoy tratando de usar el núcleo .NET lanzado recientemente con MS Office usando los ensamblajes de interoperabilidad

Tengo un archivo de proyecto mínimo

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

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

Desafortunadamente esto falla con

 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'

Cuando agregué el paquete al proyecto obtuve esto

 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

lo que implica 'compatible' pero no 'totalmente compatible'

¿Hay alguna manera de hacer esto o debo usar .NET Framework en lugar de Core?

Estoy usando Windows 10, .NET core 3.0.100 y MS Office 365 (Word es la versión 16.0.11929.20298)

over 3 years ago · Santiago Trujillo
5 answers
Answer question

0

Mención de pasos para migrar cualquier interoperabilidad o dll que no sea compatible con .net core

  1. Crear proyecto .net core
  2. Obtenga dll del proyecto anterior / a través del paquete nuget
  3. Si es dll de interoperabilidad, haga clic con el botón derecho en las dependencias
  4. Haga clic en Agregar referencia com
  5. Seleccione dll que desea agregar
  6. Después de agregar, seleccione esas dependencias y haga clic en la propiedad
  7. Dentro de la ventana de propiedades Establezca dos propiedades a) Copiar local - Sí, b) Incrustar tipos de interoperabilidad - Sí
  • Capturas de pantalla Ventana de propiedades
  1. Escribe tu código
  2. Ejecutalo
  3. ¡Funcionará para ti!

El paquete Nuget no funcionará. Consulte las capturas de pantalla. Paquete no compatible

¡Feliz codificación! Gracias

over 3 years ago · Santiago Trujillo Report

0

Simplemente elimine la referencia de Nuget al paquete Interop y agregue Microsoft Excel desde Reference Manager. ingrese la descripción de la imagen aquí

over 3 years ago · Santiago Trujillo Report

0

Los ensamblajes de interoperabilidad no son compatibles con .NET Core. Tienes que usar el marco completo.

Consulte también este problema de GitHub

Si desea crear documentos de Office mediante programación, es posible que desee echar un vistazo a Office OpenXML SDK .

over 3 years ago · Santiago Trujillo Report

0

La solución a esto es un poco peculiar, pero posible.

Cree un nuevo proyecto de .NET Framework 4.X. Agregue las referencias COM relevantes al proyecto. Edite el .csproj de su proyecto .NET Core 3.0 y agregue las referencias generadas desde el proyecto .NET Framework a la etiqueta <ItemGroup> .

Debería verse algo similar a:

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

No use los paquetes NuGet, no son compatibles con .NET Core.

Actualizar:

Ahora puede agregar las referencias COM directamente desde el IDE (desde Visual Studio 2019 v16.6):

ingrese la descripción de la imagen aquí

over 3 years ago · Santiago Trujillo Report

0

Tuve el mismo problema. Lo arreglé abriendo las propiedades de referencia y configurando "Copiar local" e "Incrustar tipos de interoperabilidad" en "Sí".

Actualización: esto en realidad hace lo mismo que agregar estas 2 líneas a la referencia COM en el archivo .csproj.

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

La etiqueta "Privado" no se menciona en las respuestas aceptadas, pero evita muchos problemas.

over 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error