Comment inclure la référence de DocumentFormat.OpenXml.dll sur Mono2.10?

j'utilise C#.net Windows Desktop Application.Je veux exécuter ces applications avec d'autres plate-forme aussi. J'utilise donc Mono 2.10 comme compilateur croisé.En cours d'exécution,inopinément mon Application se termine en disant le message d'erreur comme

Erreur:impossible d'ouvrir le dossier sélectionné.

ne pouvait pas charger un fichier ou un document Formatd'assemblage.OpenXml.dll, version=2.0.5022.0, culture= neutre, PublicKeyToken = 31bf3856ad364e35 " ou l'un de ses dépendance.

je ne sais pas quel est le problème ici...J'ai installé openxml sdk2.0 sur c:program fichiersopen xml sdkv2libDocumentFormat.OpenXml.DLL.

et aussi mettre mon application eXe sur le même endroit pour le but de test...

Merci de me guider pour résoudre ce problème...

30
demandé sur Daniel Hilgarth 2011-03-10 13:29:32

10 réponses

vous devriez aussi vous assurer de définir une référence à WindowsBase. Ceci est nécessaire pour utiliser le SDK car il gère System.IO.Packaging (qui est utilisé pour décompresser et ouvrir le compressé .docx/.xlsx/.pptx en tant que document du CPVP).

20
répondu Todd Main 2011-03-10 17:31:44

étant moi-même nouveau dans ce domaine, voici ce que j'ai fait:

J'utilise MS Visual Studio 2010 Pro.

  1. télécharger et installer le SDK OpenXML
  2. dans mon projet dans Visual Studio, sélectionnez "Project" puis "Add Reference"
  3. Sélectionnez l'onglet "Parcourir"
  4. dans le "Look in:" tirez vers le bas, naviguez vers: C:\Program fichiers (x86)\Open XML SDK\V2.0\lib et sélectionnez le " DocumentFormat.OpenXml.dll
  5. Hit OK
  6. Dans le "Solution Explorer "(à droite pour moi), le dossier" References " affiche maintenant le Formatdocument.Bibliothèque OpenXML.
  7. cliquez sur le bouton droit de la souris et sélectionnez Propriétés
  8. dans le panneau Propriétés, remplacer "copier Local"par " True".

vous devriez être désactivé et lancé maintenant en utilisant les classes DocumentFormat.

16
répondu Imp1ety 2014-06-03 22:25:22

sélectionnez DocumentFormat.OpenXml sous Références, afficher ses propriétés, et définir L'option Copier Local à True pour qu'elle copie dans le dossier de sortie. Ce qui a fonctionné pour moi.

6
répondu Som 2013-08-06 20:58:05

Goto Nuget Package manager et rechercher openxml. Et installez DocumentFormat.OpenXml

6
répondu Hrishikesh T T 2016-01-05 05:44:49

Ce qui a fonctionné pour moi:

  1. Ajouter un dossier au projet l'appeler ThirdParty.
  2. Ajouter dans le ThirdParty classez les deuxDocumentFormat.OpenXML.dll et WindowsBase.dll
  3. assurez-vous que le projet utilise le ThirdParty dir comme référence pour la Dll
  4. compilation et publication sur un serveur externe.
2
répondu Juliean 2015-06-08 07:20:47

vous devez avoir DocumentFormat.OpenXML.dll dans le même dossier que votre application - ou dans le chemin " bin " si vous développez un ASP.NET application. Cependant, Je ne suis pas certain que le SDK D'OpenXML soit supporté sur les systèmes d'exploitation autres que Windows-vous devrez peut - être chercher une solution tierce.

Oui, cette réponse est juste, la seule différence est que vous copiez votre .dll dans le dossier bin du projet.

0
répondu Sean O'Brien 2013-11-06 11:46:10

après avoir consulté et changé les propriétés en DocumentFormat.OpenXml, j'ai aussi dû changer la Version spécifique en false.

0
répondu Randal Hicks 2014-09-24 16:18:27

eh Bien, Dans mes applications, j'ai juste besoin d'Ajouter une référence à "DocumentFormat.OpenXml" sous l'onglet .Net et les deux références (DocumentFormat.OpenXml et WindowsBase) sont toujours ajoutés automatiquement. Mais Ils ne sont pas inclus dans le dossier Bin. Ainsi, lorsque l'Application est publiée sur un serveur externe, je place toujours DocumentFormat.OpenXml.dll sous le dossier Bin manuellement. Ou définissez la propriété de référence" copier Local " à true.

0
répondu El Bayames 2014-10-31 18:01:02

j'ai trouvé que lorsque mélangé avec des bibliothèques PCL le problème ci-dessus s'est présenté, et alors qu'il est vrai que la bibliothèque WindowsBase contient le système.IO.Packaging j'utilisais la bibliothèque OpenXMLSDK-MOT 2.6.0.0 qui fournit elle-même sa propre copie du système physique.IO.Bibliothèque d'emballage. La référence qui manquait pour moi se trouvait comme suit dans le projet 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>

j'ai déclassé ma version du XMLSDK à 2.6 qui semblait alors résoudre ce problème pour je. Mais vous pouvez voir qu'il y a une assemblée physique System.IO.Packaging.dll

0
répondu The Senator 2016-12-23 18:00:26

Le problème pour moi est que DocumentFormat.OpenXml.dll existait dans la mémoire Cache de Global Assembly (GAC) sur ma boîte de développement Win7. Ainsi, lors de la publication de mon projet dans VS2013, il a trouvé le fichier dans le GAC et l'a donc omis d'être copié dans le dossier publier.

Solution: enlever la DLL du GAC.

  1. ouvrez la racine GAC dans Windows Explorer (Win7:%windir%\Microsoft.NET\assembly)
  2. Recherche OpenXml
  3. Supprimer tout les dossiers (ou pour être sûr, les couper à votre bureau si vous souhaitez les restaurer)

il peut y avoir une façon plus appropriée de supprimer un fichier GAC (ci-dessous), mais c'est ce que j'ai fait et ça a fonctionné. gacutil –u DocumentFormat.OpenXml.dll

j'Espère que ça aide!

0
répondu Kidquick 2018-03-13 14:20:29