如何从文件运行程序,使用MonoDevelop,Gtk#,Ubuntu编码

时间:2019-02-18 04:25:42

标签: monodevelop ubuntu-18.04 gtk#

我使用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

1 个答案:

答案 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文件中说明必须放置的位置。

tons of possibilities