我有一个使用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.sh
和DocumentFormat.OpenXml.dll
,它们使我的程序在Visual Studio中可以很好地编译。但是,当我尝试通过System.IO.Packaging.dll
将它们添加到GAC时,它告诉我它们需要一个强名称。2)然后我尝试通过遵循this page为他们添加强名,我意识到新的2个dll在Visual Studio中将无法正常工作:
最佳答案
只需将所需的二进制文件放在应用程序可执行文件的旁边。
对于二进制文件,您可以自己构建:
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