2011-03-10 12 views
30

我正在使用C#.net Windows桌面應用程序。我想與其他平臺一起運行這些應用程序。因此,我使用Mono 2.10作爲交叉編譯器。在運行時,意外地我的應用程序被終止,說錯誤消息如如何在Mono2.10中包含DocumentFormat.OpenXml.dll的引用?

錯誤:無法打開選定的文件夾。
無法加載文件或程序集'DocumentFormat.OpenXml.dll,version = 2.0.5022.0,culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其某個依賴項。

我不知道這裏有什麼問題...我在c:\ program files \ open xml sdk \ v2 \ lib \ DocumentFormat.OpenXml.dll上安裝了openxml sdk2.0。

,也把我的應用程序的EXE上測試用的同一個地方......

請指導我解決這個問題...

回答

20

您還應該確保您設置爲WindowsBase參考。在處理System.IO.Packaging(用於解壓縮和打開壓縮的.docx/.xlsx/.pptx作爲OPC文檔)時,需要使用SDK。

+1

我仍然收到相同的錯誤信息... – Saravanan 2011-03-11 06:36:09

+1

我已經通過項目瀏覽器窗口在C#.Net(4.0)中設置了WindowsBase的引用。但直到我無法解決這個問題......我接下來做什麼? – Saravanan 2011-03-17 07:32:13

+1

如果您的解決方案中包含的項目多於其他項目,請嘗試將其納入其他項目。可能是你包括錯了一個 – merdan 2014-10-03 05:32:54

0

如果您正在開發ASP.NET應用程序,則需要將DocumentFormat.OpenXML.dll放在與應用程序相同的文件夾中 - 或在「bin」路徑中。但是,我不確定OpenXML SDK在非Windows操作系統上是否受支持 - 您可能需要查看第三方解決方案。

是的,這個答案是正確的,唯一的區別是您將.dll複製到項目的bin文件夾中。

6

在引用下選擇DocumentFormat.OpenXml,查看其屬性,並將Copy Local選項設置爲True,以便將其複製到輸出文件夾。這對我有效。

0

嗯,在我的應用程序中,我只需要在.Net選項卡中添加對「DocumentFormat.OpenXml」的引用,並且兩個引用(DocumentFormat.OpenXml和WindowsBase)都會自動添加。但是它們不包含在Bin文件夾中。所以當應用程序發佈到外部服務器時,我總是手動將DocumentFormat.OpenXml.dll放在Bin文件夾下。或者將參考「Copy Local」屬性設置爲true。

15

作爲新的這個我,這裏是我所做的:

我使用微軟的Visual Studio 2010的專業版。

  1. 下載並安裝的OpenXML SDK
  2. 在我的Visual Studio項目,選擇「項目」,然後「添加引用」
  3. 選擇「瀏覽」選項卡
  4. 在「查找範圍」拔下來,定位到: C:\ Program Files文件(x86)的\打開XML SDK \ V2.0 \ lib和選擇「DocumentFormat.OpenXml.dll
  5. 點擊OK
  6. 在 「解決方案資源管理」(上我的權利),「參考」文件夾現在顯示Docu mentFormat.OpenXML庫。
  7. 右鍵單擊它並選擇屬性
  8. 在「屬性」面板中將「複製本地」更改爲「True」。

您應該使用DocumentFormat類關閉並運行。

0

查看並將屬性更改爲DocumentFormat.OpenXml後,我還必須將特定版本更改爲false。

2

什麼工作對我來說:

  1. 的文件夾添加到項目中調用它ThirdParty
  2. 添加在ThirdParty文件夾都DocumentFormat.OpenXML.dllWindowsBase.dll
  3. 確保該項目採用ThirdParty目錄作爲兩個DLL文件
  4. 構建參考,併發布到外部服務器。
6

Goto Nuget包管理器和搜索openxml。並安裝DocumentFormat.OpenXml

+0

這是一個適合我的作品 – donstack 2016-12-20 13:54:20

0

我發現,當與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

相關問題