33 votes

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

J'utilise une application de bureau Windows en C#.net et je veux faire fonctionner cette application sur d'autres plateformes également. J'utilise donc Mono 2.10 comme compilateur croisé. Pendant l'exécution, mon application se termine inopinément en affichant le message d'erreur suivant

Erreur : Impossible d'ouvrir le dossier sélectionné.
Impossible de charger un fichier ou un assemblage 'DocumentFormat.OpenXml.dll,version=2.0.5022.0, culture=neutral, PublicKeyToken=31bf3856ad364e35' ou l'une de ses dépendances.

Je ne sais pas quel est le problème ici... J'ai installé openxml sdk2.0 sur c : \program fichiers \open sdk xml \v2\lib\DocumentFormat.OpenXml.dll.

et j'ai aussi mis mon application eXe au même endroit pour faire des tests...

Veuillez me guider pour résoudre ce problème...

0voto

Randal Hicks Points 1

Après avoir consulté et changé les propriétés pour DocumentFormat.OpenXml, j'ai également dû changer la version spécifique à false.

0voto

The Senator Points 537

J'ai constaté qu'en mélangeant les bibliothèques PCL, le problème ci-dessus se présentait, et s'il est vrai que la bibliothèque WindowsBase contient System.IO.Packaging, j'utilisais la bibliothèque OpenXMLSDK-MOT 2.6.0.0 qui fournit elle-même sa propre copie de la bibliothèque physique System.IO.Packaging. 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 rétrogradé ma version du kit XMLSDK à 2.6, ce qui a semblé régler le problème pour moi. Mais vous pouvez voir qu'il y a un assemblage physique System.IO.Packaging.dll

0voto

IceTea Points 1

Le problème pour moi était que DocumentFormat.OpenXml.dll existait dans le Global Assembly Cache (GAC) sur mon poste de développement Win7. Ainsi, lorsque j'ai publié mon projet dans VS2013, il a trouvé le fichier dans le GAC et l'a donc omis d'être copié dans le dossier de publication.

Solution : supprimez la DLL du GAC.

  1. Ouvrez la racine du GAC dans l'Explorateur Windows (Win7 : %windir%\Microsoft.NET\assembly )
  2. Recherche de OpenXml
  3. Supprimez tous les dossiers appropriés (ou pour être sûr, découpez-les sur votre bureau au cas où vous voudriez les restaurer).

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

J'espère que cela vous aidera !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X