我有 ac# 源文件。有什么方法可以放置像 #!/usr/bin/env mono 这样的东西,所以它将被编译然后作为可执行文件运行:
例如,对于 python,我会这样做:
#!/usr/bin/env python
实际上,我想要的是在编译后运行脚本而不调用“mono the.exe”。我想要类似“./the.exe”的东西。
编辑:我刚刚注意到您想为单个源文件执行此操作 - 对于单个源文件。这几乎得到了csharp
Mono 附带的 REPL 的支持。但是,REPL 会吐出语法错误,因为它不理解 shebang 行并将其视为预处理器定义。如果我误解并且您在谈论已编译的程序集,则以下文本仍然适用。/编辑
你不能使用 shebangs,因为 Mono 生成的 .exe 文件是 PE 可执行文件,就像在 Windows 上一样。它们包含 CIL,而不是脚本。
您可以做的是生成一个运行mono your.exe
和使用它的小型 shell 脚本,或者您可以使用 Linux 内核的 binfmts 支持,如此处所述。
我认为您可以使用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