2010-11-20 84 views
4

我有一个c#源文件。有没有什么办法可以把类似的东西#在/ usr/bin中/ env的单,所以它会被编译并运行可执行:单声道框架shebang linux

为Python例如,我会做这样的:

#!/usr/bin/env python 

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

回答

4

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

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

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

+0

谢谢你,它binfmts工作。 – 2010-11-20 18:44:08

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 
+0

我有fedora,我找不到update-binfmts。 – 2010-11-20 18:44:42