我使用MonoDevelop和Gtk#2.0编写了HelloWorld.cs。它在调试器中运行良好,并生成HelloWorld.exe。当我从终端窗口“ mono ./HelloWorld.exe”运行时,程序将按预期运行,因此我知道它已按预期进行编码。但是,当我尝试通过从文件(Windows资源管理器的Linux版本)上双击该文件来运行它时,它将打开存档管理器,并显示错误“加载存档时发生错误”。
我正在使用Ubuntu 18.04.02 LTS,如果有帮助的话。
我尝试创建链接“ ln -s ./HelloWorld.exe ./meow”,然后双击喵,但是这也会打开存档管理器,并显示相同的错误。
我不希望最终产品要求用户打开终端窗口来运行我的程序,我该怎么做,以便用户可以从“文件”中双击我的程序来运行?
编辑:[18FEB2019] 谢谢一些程序员,我喜欢捆绑包的想法,因为我可以将此项目移植到另一种linux上,我希望这为我提供了一条实现之路。 但是,我得到了错误:
Failure to load i18n assemblies, the following directories were searched for the assemblies:
Path: .
In Custom mode, you need to provide the directory to lookup assemblies from using -L
ERROR: Couldn't load one or more of the i18n assemblies: Failed to load I18N.dll
我搜索并找到
https://www.mono-project.com/docs/tools+libraries/tools/mkbundle/
我遵循了这些指示,并停留在这一部分
mkbundle -o CacheServer --cross mono-5.8.0-ubuntu-16.04-x64 CacheServer.exe --machine-config /etc/mono/4.5/machine.config
我的错误是
ERROR: Unable to load assembly `gtk-sharp' referenced by `/home/amccombs/Projects/HelloWorld/HelloWorld/bin/Debug/HelloWorld.exe'
我尝试过
mkbundle --fetch-target gtk-sharp
有结果
Failure to download the specified runtime from https://download.mono-project.com/runtimes/raw/gtk-sharp
然后我尝试
sudo apt-get install gtk-sharp
有结果
E: Unable to locate package gtk-sharp
答案 0 :(得分:1)
文件正在将.exe
扩展名检测为存档,因此使用 File Roller 或类似文件将其打开。
只需右键单击文件HelloWorld.exe
并选择“使用其他应用程序打开”,单击“查找新应用程序”,然后键入“ mono”并按Enter。该应用程序将打开。
另一种可能性是创建一个.desktop
文件,并将其放在~/.local/share/applications
下,内容如下:
[Desktop Entry]
Exec=mono %F
MimeType=application/x-ms-dos-executable;
Name=mono
NoDisplay=true
Type=Application
MKBundle 从单声道应用程序创建一个本机应用程序。缺点是您必须同时编译应用程序及其所有依赖项,这可能很棘手。无论如何,您要查找的软件包都是gtk-sharp2
。
MKBundle 的替代方法是包括一个文本文件,例如HelloWorld.sh
,其内容为:
mono HelloWorld.exe
然后使用以下命令将其可执行:
chmod +x HelloWorld.sh
然后可以将两个文件打包在一起(使用一个.tar.gz
目标,该目标保留可执行文件之类的属性),并可能带有一个README
文件,说明双击HelloWorld.sh
或者也许您可以将.exe
与.desktop
文件一起打包,并在README
文件中说明必须放置的位置。