Как включить ссылку 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 на одно и то же место для тестирования...
Пожалуйста, помогите мне решить эту проблему...
Ответы
Ответ 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