Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

98
Vistas
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 4 years ago · Santiago Trujillo
5 Respuestas
Responde la pregunta

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 4 years ago · Santiago Trujillo Denunciar

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 4 years ago · Santiago Trujillo Denunciar

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 4 years ago · Santiago Trujillo Denunciar

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 4 years ago · Santiago Trujillo Denunciar

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 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda