c# mono openxml-sdk moma

c# - ¿Cómo incluir la referencia de DocumentFormat.OpenXml.dll en Mono2.10?



openxml-sdk moma (10)

Estoy utilizando la aplicación de escritorio de Windows C # .net. También quiero ejecutar esta aplicación con otra plataforma. Por lo tanto, estoy usando Mono 2.10 como un compilador cruzado. Mientras se ejecuta, inesperadamente mi aplicación termina diciendo el mensaje de error como

Error: No se pudo abrir la carpeta seleccionada.
No se pudo cargar un archivo o ensamblado ''DocumentFormat.OpenXml.dll, versión = 2.0.5022.0, culture = neutral, PublicKeyToken = 31bf3856ad364e35'' o una de sus dependencias.

No sé cuál es el problema aquí ... He instalado openxml sdk2.0 en c: / archivos de programa / abrir xml sdk / v2 / lib / DocumentFormat.OpenXml.dll.

y también pongo mi aplicación eXe en el mismo lugar para realizar pruebas ...

Por favor guíame para resolver este problema ...


Bueno, en mis aplicaciones solo necesito agregar una referencia a "DocumentFormat.OpenXml" en la pestaña .Net y ambas referencias (DocumentFormat.OpenXml y WindowsBase) siempre se agregan automáticamente. Pero no están incluidos dentro de la carpeta Bin. Entonces, cuando la aplicación se publica en un servidor externo, siempre coloco DocumentFormat.OpenXml.dll en la carpeta Bin de forma manual. O establezca la propiedad "Copiar Local" de referencia en true.


Debe tener DocumentFormat.OpenXML.dll en la misma carpeta que su aplicación, o en la ruta ''bin'' si está desarrollando una aplicación ASP.NET. Sin embargo, no estoy seguro de que el OpenXML SDK sea compatible con sistemas operativos que no sean Windows; es posible que deba buscar una solución de terceros.

Sí, esta respuesta es correcta, la única diferencia es que usted copia su .dll en la carpeta bin del proyecto.


Descubrí que cuando se mezclaba con las bibliotecas PCL, el problema anterior se presentaba por sí solo, y si bien es cierto que la biblioteca WindowsBase contiene System.IO. .IO.Paquete de libreria. La referencia que faltaba para mí se puede encontrar de la siguiente manera en el proyecto csharp

<Reference Include="System.IO.Packaging, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <HintPath>../../../../packages/OpenXMLSDK-MOT.2.6.0.0/lib/System.IO.Packaging.dll</HintPath> <Private>True</Private> </Reference>

Bajé mi versión de XMLSDK a 2.6, que luego pareció solucionar este problema. Pero puedes ver que hay un ensamblado físico System.IO.Packaging.dll


Después de ver y cambiar las propiedades a DocumentFormat.OpenXml, también tuve que cambiar la versión específica a falso.


El problema para mí fue que DocumentFormat.OpenXml.dll existía en el Global Assembly Cache (GAC) en mi caja de desarrollo de Win7. Entonces, al publicar mi proyecto en VS2013, encontró el archivo en el GAC y, por lo tanto, omitió que se copie en la carpeta de publicación.

Solución: eliminar la DLL del GAC.

  1. Abra la raíz de GAC en el Explorador de Windows (Win7: %windir%/Microsoft.NET/assembly )
  2. Búsqueda de OpenXml
  3. Elimine las carpetas adecuadas (o para estar seguro, recórtelas en su escritorio en caso de que desee restaurarlas)

Puede haber una forma más adecuada de eliminar un archivo GAC (a continuación), pero eso es lo que hice y funcionó. gacutil –u DocumentFormat.OpenXml.dll

¡Espero que ayude!


Lo que funcionó para mí:

  1. Agregue una carpeta al proyecto y ThirdParty .
  2. Agregue en la carpeta ThirdParty tanto DocumentFormat.OpenXML.dll como WindowsBase.dll
  3. Asegúrese de que el proyecto use el directorio ThirdParty como referencia para las DLL.
  4. Construir y publicar en un servidor externo.

Siendo nuevo en esto, esto es lo que hice:

Estoy usando MS Visual Studio 2010 Pro.

  1. Descargue e instale el SDK de OpenXML
  2. Dentro de mi proyecto en Visual Studio, seleccione "Proyecto" y luego "Agregar referencia"
  3. Seleccione la pestaña "Examinar"
  4. En el menú desplegable "Buscar en:", navegue hasta: C: / Archivos de programa (x86) / Abrir XML SDK / V2.0 / lib y seleccione "DocumentFormat.OpenXml.dll
  5. Pulsa OK
  6. En el "Explorador de soluciones" (a la derecha para mí), la carpeta "Referencias" ahora muestra la biblioteca DocumentFormat.OpenXML.
  7. Haz clic derecho en él y selecciona Propiedades
  8. En el panel Propiedades, cambie "Copiar local" a "Verdadero".

Debes estar apagado y funcionando ahora usando las clases DocumentFormat.


Vaya a Nuget Package manager y busque openxml. E instale DocumentFormat.OpenXml


seleccione DocumentFormat.OpenXml en las referencias, vea sus propiedades y configure la opción Copiar local en Verdadero para que lo copie en la carpeta de salida. Eso funcionó para mí.


También debe asegurarse de establecer una referencia a WindowsBase . Esto es necesario para usar el SDK ya que maneja System.IO.Packaging (que se usa para descomprimir y abrir el archivo comprimido .docx / .xlsx / .pptx como un documento OPC).