2010-11-20 4 views
4

나는 C# 소스 파일을 가지고있다. #! 같은 것을 넣을 수있는 방법은/usr/빈/ENV 모노 있는가, 그래서 컴파일 다음과 같은 실행 파일이 실행됩니다 :Mono framework shebang linux

예를 들어 파이썬를 들어, 나는 다음과 같이 할 수 있습니다 :

#!/usr/bin/env python 

사실 내가 원하는 것은 컴파일 한 후 "mono the.exe"를 호출하지 않고 스크립트를 실행하는 것입니다. "./the.exe"와 같은 것을 원합니다.

답변

4

EDIT : 단일 소스 파일 - 단일 소스 파일의 경우이 작업을 수행하려는 것으로 나타났습니다. 이는 모노와 함께 제공되는 csharp REPL에서 거의 지원됩니다. 그러나 REPL은 shebang 행을 이해하지 못하고이를 선행 처리기 정의로 간주하기 때문에 구문 오류가 발생합니다. 제가 오해하고 컴파일 된 어셈블리에 대해 이야기하고 있었다면 아래 텍스트가 여전히 적용됩니다. /EDIT

모노에서 생성 된 .exe 파일은 Windows와 마찬가지로 PE 실행 파일이기 때문에 shebangs를 사용할 수 없습니다. 여기에는 스크립트가 아닌 CIL이 포함되어 있습니다.

그래도 할 수있는 일은 mono your.exe을 실행하는 작은 쉘 스크립트를 생성하거나이를 사용하거나, here과 같이 Linux 커널의 binfmts 지원을 사용할 수 있습니다.

+0

이는 binfmts와 협력 해 주셔서 감사합니다. –

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를 찾을 수 없었다. –