2011-03-10 8 views
30

Estoy usando la aplicación de escritorio de Windows C# .net. También quiero ejecutar estas aplicaciones con otra plataforma. Por lo tanto, estoy utilizando Mono 2.10 como compilación cruzada. Mientras se ejecuta, inesperadamente mi aplicación finaliza diciendo el mensaje de error como¿Cómo incluir la referencia de DocumentFormat.OpenXml.dll en Mono2.10?

Error: No se pudo abrir la carpeta seleccionada.
No se pudo cargar un archivo o ensamblado 'DocumentFormat.OpenXml.dll, version = 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 poner mi aplicación EXE en el mismo lugar para el propósito de prueba ...

favor, me guía para resolver este problema ...

Respuesta

20

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

+1

Todavía obtengo el mismo mensaje de error ... – Saravanan

+1

He establecido una referencia de WindowsBase en C# .Net (4.0) a través de la ventana del explorador de proyectos. Pero hasta que no pueda resolver ese problema ... ¿qué hago ahora? – Saravanan

+1

si tiene más proyectos que uno dentro de la solución intente incluir también a otros. puede ser que esté incluyendo uno equivocado – merdan

0

Necesita 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 OpenXML SDK sea compatible con sistemas operativos que no sean de Windows; es posible que deba buscar una solución de terceros.

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

6

seleccione DocumentFormat.OpenXml bajo referencias, vea sus propiedades y establezca la opción Copiar local en True para que se copie en la carpeta de salida. Eso funcionó para mí.

0

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 en la carpeta Bin. Entonces, cuando la Aplicación se publica en un servidor externo, coloco DocumentFormat.OpenXml.dll siempre debajo de la carpeta Bin de forma manual. O establezca la propiedad de referencia "Copiar local" en verdadero.

15

ser nuevo en esto por mí mismo, esto es lo que hice:

estoy usando MS Visual Studio 2010 Pro.

  1. Descargar e instalar el SDK OpenXML
  2. Dentro de mi proyecto en Visual Studio, seleccione "Proyecto" y luego "Agregar referencia"
  3. Seleccione la pestaña "Examinar"
  4. En la opción "Buscar en:" tire hacia abajo, vaya a: C: \ archivos de programa (x86) \ Open XML SDK \ v2.0 \ lib y seleccione la opción "DocumentFormat.OpenXml.dll
  5. Hit OK
  6. en el "Explorador de soluciones"(en el correcto para mí), la carpeta "Referencias" ahora muestra la Docu mentFormat.OpenXML library.
  7. Haga clic derecho en él y seleccione Propiedades
  8. En el panel Propiedades, cambie "Copiar local" a "Verdadero".

Debería estar apagado y funcionando ahora con las clases DocumentFormat.

0

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

2

lo que funcionó para mí:

  1. Añadir una carpeta para el proyecto llamarlo ThirdParty.
  2. Añadir en la carpeta ThirdParty tanto DocumentFormat.OpenXML.dll y WindowsBase.dll
  3. Asegúrese de que el proyecto utiliza el ThirdParty dir como referencia tanto para la DLL
  4. Construir y publicado a un servidor externo.
6

Goto Nuget Administrador de paquetes y búsqueda de openxml. E instalo DocumentFormat.OpenXml

+0

este es mi trabajo – donstack

0

Encontré que cuando se mezclaba con bibliotecas PCL se presentaba el problema anterior, y si bien es cierto que la biblioteca de WindowsBase contiene System.IO.Packaging estaba usando la biblioteca OpenXMLSDK-MOT 2.6.0.0 que proporciona su propia copia de la biblioteca física System.IO.Packaging. La referencia que faltaba para mí se pudo encontrar 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> 

cambié mi versión de la XMLSDK a 2,6 que entonces parecía solucionar este problema para mí. Pero puede ver que hay un ensamblaje físico System.IO.Packaging.dll

Cuestiones relacionadas