На моей машине с Arch Linux у меня установлен Mono C # компилятор [версия 5.20.1.0]. Сегодня я создал простую программу Hello World на C # следующим образом:
using System;
public class Program
{
public static int Main()
{
Console.WriteLine("Hello world of C# !");
Console.WriteLine();
return 0;
}
}
Я подошел к своему терминалу bash и скомпилировал вышеуказанную программу как
$ mcs t.cs
Это создало имя файла t.exe в рабочем каталоге. Затем я ввел:
$ ./t.exe
А на выходе было
Hello world of C# !
Я был удивлен, увидев это, так как раньше этого не было. Вы НЕ МОЖЕТЕ выполнить моно-файл .exe напрямую из командной строки linux. Чтобы запустить полученный выше t.exe исполняемый файл, вам нужно было сделать что-то вроде:
$ mono t.exe
Для дальнейшего изучения (и проверки формата файла), создаваемого моно-компилятором, я запустил команду file , например,
$ file t.exe
Было получено следующее:
t.exe: PE32 executable (console) Intel 80386 Mono/.Net assembly, for MS Windows
Я искал в интернете, но не мог понять, почему это происходит. Не то чтобы я жалуюсь, я люблю это. Но как в командной строке Linux можно запустить исполняемый файл .net или mono, как это? Что происходит ??