Подтвердить что ты не робот

Как включить ссылку DocumentFormat.OpenXml.dll на Mono2.10?

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

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

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

а также поставить приложение eXe на одно и то же место для тестирования...

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

  • Загрузите и установите SDK OpenXML
  • В рамках моего проекта в Visual Studio выберите "Проект", затем "Добавить ссылку"
  • Выберите вкладку "Обзор"
  • В "Look in:" pull down, перейдите к: C:\Program Files (x86)\Open XML SDK\V2.0\lib и выберите "DocumentFormat.OpenXml.dll
  • Нажмите OK
  • В "Обозревателе решений" (справа для меня) папка "Ссылки" теперь отображает библиотеку DocumentFormat.OpenXML.
  • Щелкните его правой кнопкой мыши и выберите "Свойства"
  • На панели "Свойства" измените "Копировать локальную" на "True".

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

Ответ 3

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

Ответ 4

Откройте диспетчер пакетов Nuget и найдите openxml. И установите DocumentFormat.OpenXml

Ответ 5

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

  • Добавить папку в проект, назовите ее ThirdParty.
  • Добавьте в папку ThirdParty как DocumentFormat.OpenXML.dll, так и WindowsBase.dll
  • Убедитесь, что проект использует директорию ThirdParty в качестве ссылки для библиотек DLL
  • Построить и опубликовать на внешний сервер.

Ответ 6

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

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

Ответ 7

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

Ответ 8

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

Ответ 9

Я обнаружил, что при смешивании с библиотеками 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