4

我有 ac# 源文件。有什么方法可以放置像 #!/usr/bin/env mono 这样的东西,所以它将被编译然后作为可执行文件运行:

例如,对于 python,我会这样做:

#!/usr/bin/env python

实际上,我想要的是在编译后运行脚本而不调用“mono the.exe”。我想要类似“./the.exe”的东西。

4

2 回答 2

4

编辑:我刚刚注意到您想为单个源文件执行此操作 - 对于单个源文件。这几乎得到了csharpMono 附带的 REPL 的支持。但是,REPL 会吐出语法错误,因为它不理解 shebang 行并将其视为预处理器定义。如果我误解并且您在谈论已编译的程序集,则以下文本仍然适用。/编辑

你不能使用 shebangs,因为 Mono 生成的 .exe 文件是 PE 可执行文件,就像在 Windows 上一样。它们包含 CIL,而不是脚本。

您可以做的是生成一个运行mono your.exe和使用它的小型 shell 脚本,或者您可以使用 Linux 内核的 binfmts 支持,如此所述。

于 2010-11-20T15:16:13.647 回答
1

我认为您可以使用update-binfmts注册mono为(编译的)单声道程序的解释器。

尝试update-binfmts --display查看输出是否包含以下内容:

cli (enabled):
     package = mono-common
        type = magic
      offset = 0
       magic = MZ
        mask =
 interpreter = /usr/bin/cli
    detector = /usr/lib/cli/binfmt-detector-cli
于 2010-11-20T16:26:07.840 回答