我有一个使用Open XML SDK的基本C#应用程序。我想使其在我的Nginx,Ubuntu和DigitalOcean服务器中运行。

该应用程序可以在Windows和装有单声道的Mac上编译并正常运行。然后,我在Ubuntu服务器中安装了mono,然后将.exe文件压缩到服务器中,并运行mono ConsoleApplication2.exe,它返回以下错误:

Unhandled Exception:
System.IO.FileNotFoundException: Could not load file or assembly 'DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
File name: 'DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
 at ConsoleApplication2.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.IO.FileNotFoundException: Could not load file or assembly 'DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
File name: 'DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
  at ConsoleApplication2.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0


我找到了this link,看来问题出在DocumentFormat.OpenXml的版本上。但是如何在Ubuntu服务器中安装正确的版本?

有人可以帮忙吗?

更新1:然后,我尝试安装Open XML SDK 2.6.1,但是有no makefile。否则,对于Open XML SDK 2.5,我不知道在哪里可以找到发行版本。

更新2:我应该尝试过build.open-xml-sdk.sh ...我试图在服务器中运行它,但是它提供了an error。有人知道这是怎么回事吗?

更新3:我卸载了mono,然后按照this link进行操作:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
echo "deb http://download.mono-project.com/repo/debian wheezy-apache24-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mono-complete


mono已成功重新安装。然后,我再次尝试,但它返回了the same error

更新4:根据ZagNut的评论,我尝试将DLL添加到GAC。我注意到两件事:

1)我下载了源代码并生成了build.open-xml-sdk.shDocumentFormat.OpenXml.dll,它们使我的程序在Visual Studio中可以很好地编译。但是,当我尝试通过System.IO.Packaging.dll将它们添加到GAC时,它告诉我它们需要一个强名称。

2)然后我尝试通过遵循this page为他们添加强名,我意识到新的2个dll在Visual Studio中将无法正常工作:

ubuntu - Ubuntu服务器中的DocumentFormat.OpenXml-LMLPHP

最佳答案

只需将所需的二进制文件放在应用程序可执行文件的旁边。

对于二进制文件,您可以自己构建:
https://github.com/OfficeDev/Open-XML-SDK

或从下面下载,然后使用Universal Extractor提取二进制文件或安装并找到它们。

2.0:https://www.microsoft.com/en-us/download/details.aspx?id=5124

2.5:https://www.microsoft.com/en-us/download/details.aspx?id=30425

07-28 01:43
查看更多