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...
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).
étant moi-même nouveau dans ce domaine, voici ce que j'ai fait:
J'utilise MS Visual Studio 2010 Pro.
- télécharger et installer le SDK OpenXML
- dans mon projet dans Visual Studio, sélectionnez "Project" puis "Add Reference"
- Sélectionnez l'onglet "Parcourir"
- 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
- Hit OK
- Dans le "Solution Explorer "(à droite pour moi), le dossier" References " affiche maintenant le Formatdocument.Bibliothèque OpenXML.
- cliquez sur le bouton droit de la souris et sélectionnez Propriétés
- dans le panneau Propriétés, remplacer "copier Local"par " True".
vous devriez être désactivé et lancé maintenant en utilisant les classes DocumentFormat.
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.
Goto Nuget Package manager et rechercher openxml. Et installez DocumentFormat.OpenXml
Ce qui a fonctionné pour moi:
- Ajouter un dossier au projet l'appeler
ThirdParty
. - Ajouter dans le
ThirdParty
classez les deuxDocumentFormat.OpenXML.dll
etWindowsBase.dll
- assurez-vous que le projet utilise le
ThirdParty
dir comme référence pour la Dll - compilation et publication sur un serveur externe.
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.
après avoir consulté et changé les propriétés en DocumentFormat.OpenXml, j'ai aussi dû changer la Version spécifique en false.
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.
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
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.
- ouvrez la racine GAC dans Windows Explorer (Win7:
%windir%\Microsoft.NET\assembly
) - Recherche
OpenXml
- 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!