Как включить ссылку DocumentFormat.OpenXml.dll на Mono2.10? - PullRequest
31 голосов
/ 10 марта 2011

Я использую C # .net Windows Desktop Application. Я хочу запустить это приложение и на другой платформе.Итак, я использую Mono 2.10 в качестве кросс-компилятора. Во время работы мое приложение неожиданно завершает работу, сообщая об ошибке, например

Ошибка: не удалось открыть выбранную папку.
Не удалось загрузить файл или сборку 'DocumentFormat.OpenXml.dll, версия = 2.0.5022.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35' или одна из ее зависимостей.

Не могузнаете, в чем здесь проблема ... Я установил openxml sdk2.0 на c: \ program files \ open xml sdk \ v2 \ lib \ DocumentFormat.OpenXml.dll.

, а также включил eXe своего приложения нато же самое место для целей тестирования ...

Пожалуйста, помогите мне решить эту проблему ...

Ответы [ 10 ]

21 голосов
/ 10 марта 2011

Вы также должны убедиться, что вы установили ссылку на WindowsBase.Это необходимо для использования SDK, так как он обрабатывает System.IO.Packaging (который используется для распаковки и открытия сжатого .docx / .xlsx / .pptx в качестве документа OPC).

18 голосов
/ 04 июня 2014

Будучи новичком в этом деле, вот что я сделал:

Я использую MS Visual Studio 2010 Pro.

  1. Загрузите и установите OpenXML SDK
  2. В моем проекте в Visual Studio выберите «Проект», затем «Добавить ссылку»
  3. Выберите вкладку «Обзор»
  4. В выпадающем меню «Просмотр:» перейдите к: C:\ Program Files (x86) \ Откройте XML SDK \ V2.0 \ lib и выберите «DocumentFormat.OpenXml.dll
  5. Нажмите OK
  6. в« Обозревателе решений »(справа дляme), папка «References» теперь отображает библиотеку DocumentFormat.OpenXML.
  7. Щелкните правой кнопкой мыши на ней и выберите «Properties»
  8. . На панели «Свойства» измените «Copy Local» на «True»..

Теперь вы должны быть выключены и работать с использованием классов DocumentFormat.

7 голосов
/ 07 августа 2013

выберите DocumentFormat.OpenXml под ссылками, просмотрите его свойства и установите для параметра Копировать локально значение True, чтобы он копировал его в выходную папку. Это сработало для меня.

6 голосов
/ 05 января 2016

Goto Nuget Менеджер пакетов и поиск openxml.И установите DocumentFormat.OpenXml

3 голосов
/ 08 июня 2015

Что сработало для меня:

  1. Добавьте папку в проект, назовите ее ThirdParty.
  2. Добавьте в папку ThirdParty DocumentFormat.OpenXML.dll и WindowsBase.dll
  3. Убедитесь, что в проекте используется каталог ThirdParty в качестве справочного материала для обеих библиотек DLL
  4. Сборка и публикация на внешнем сервере.
1 голос
/ 03 марта 2014

Ну, в моих приложениях мне просто нужно добавить ссылку на «DocumentFormat.OpenXml» на вкладке .Net, и обе ссылки (DocumentFormat.OpenXml и WindowsBase) всегда добавляются автоматически.Но они не включены в папку Bin.Поэтому, когда приложение публикуется на внешнем сервере, я всегда помещаю DocumentFormat.OpenXml.dll в папку Bin вручную.Или установите для свойства «Копировать локальное» значение true.

0 голосов
/ 13 марта 2018

Проблема для меня заключалась в том, что DocumentFormat.OpenXml.dll существовал в глобальном кеше сборок (GAC) на моей коробке разработки Win7. Поэтому при публикации моего проекта в VS2013 он обнаружил файл в GAC и, следовательно, исключил его копирование в папку публикации.

Решение: удалите DLL из GAC.

  1. Открыть корень GAC в проводнике Windows (Win7: %windir%\Microsoft.NET\assembly)
  2. Поиск OpenXml
  3. Удалите все соответствующие папки (или, для безопасности, вырежьте их на рабочем столе на случай, если вы захотите восстановить их)

Возможно, есть более правильный способ удаления файла GAC (ниже), но это то, что я сделал, и это сработало. gacutil –u DocumentFormat.OpenXml.dll

Надеюсь, это поможет!

0 голосов
/ 23 декабря 2016

Я обнаружил, что при смешивании с библиотеками PCL вышеупомянутая проблема проявляется, и хотя это правда, что библиотека WindowsBase содержит System.IO.Packaging Я использовал библиотеку OpenXMLSDK-MOT 2.6.0.0, которая сама предоставляет свою собственную копиюфизическая библиотека System.IO.Packaging.Ссылка, которая отсутствовала для меня, могла быть найдена следующим образом в проекте 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>

Я понизил свою версию XMLSDK до версии 2.6, которая, казалось, затем исправила эту проблему для меня.Но вы можете видеть, что есть физическая сборка System.IO.Packaging.dll

0 голосов
/ 24 сентября 2014

После просмотра и изменения свойств на DocumentFormat.OpenXml мне также пришлось изменить Определенную версию на false.

0 голосов
/ 22 января 2013

Вам необходимо, чтобы DocumentFormat.OpenXML.dll находился в той же папке, что и ваше приложение, или в пути bin, если вы разрабатываете приложение ASP.NET. Однако я не уверен, что OpenXML SDK поддерживается в операционных системах, отличных от Windows, - вам может понадобиться стороннее решение.

Да, этот ответ верный, единственное отличие состоит в том, что вы копируете свой .dll в папку bin проекта.

...