在不输入“mono foo.exe”的情况下运行单声道程序

dan*_*son 13 mono

在 Ubuntu 上运行 .net 程序时,我必须输入“mono foo.exe”而不仅仅是 foo.exe 或双击图标。有没有办法只运行 foo.exe?

小智 17

这个链接有帮助吗?运行单声道

从 Mono 项目中使用 binfmt:

将 .exe 注册为非本地二进制文件(仅限 Linux)

由于这是 Linux 特定的功能,我们不建议开发人员部署此解决方案,因为这会限制其脚本的可移植性。

此外,此机制无法按应用程序部署指南的预期工作。

您还可以进行系统范围的更改,并使用 binfmt 将 exe 文件注册为非本地二进制文件。然后,当试图启动一个 exe 文件时,内核将运行单声道解释器来处理命令。Binfmt 还可用于使用 WINE 启动 Windows 可执行文件,或使用 JVM 启动 Java .class 文件。向内核注册 exe:

成为 root 并使用以下命令打开内核中的 binfmt 模块:

sudo apt-get install binfmt-support
modprobe binfmt_misc
Run Code Online (Sandbox Code Playgroud)

此外,您可能希望将modprobe命令添加到您的/etc/rc.local引导脚本中,以便在引导时执行。

将以下行添加到您的/etc/fstab文件中:

binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc none
Run Code Online (Sandbox Code Playgroud)

然后,让您的系统在启动时运行以下命令:

echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register
Run Code Online (Sandbox Code Playgroud)

请务必将您的 .exe 文件也标记为文件系统中的可执行文件:

chmod +x myprogram.exe
Run Code Online (Sandbox Code Playgroud)

请注意,这不会更改您的内核,只会更改您启动系统时加载的模块。换句话说,您仍然可以升级内核而不必担心丢失这些更改。同样,您可以升级 Mono 运行时而不影响本节中列出的任何调用方法。


j-g*_*tus 10

创建启动脚本。

打开纯文本编辑器,添加以下内容:

#!/bin/bash
mono foo.exe &
Run Code Online (Sandbox Code Playgroud)

根据您的设置,您可能需要使用 foo.exe 的完整路径。

例如将文件另存为foo.sh.

使其可执行:

sudo chmod a+x foo.sh
Run Code Online (Sandbox Code Playgroud)

您现在应该可以通过双击 来启动 foo.exe foo.sh