Как я могу скомпилировать, запустить и декомпилировать код C# в терминале Ubuntu?

У меня есть код C#, который мне нужен для компиляции, выполнения и декомпиляции с использованием терминала.

Как я могу это сделать?

4 ответа

Решение

Ты можешь использовать mono который C# реализация, имеющая кроссплатформенную поддержку и с открытым исходным кодом.

Откройте терминал и установите моно:

Для Ubuntu 18.04

sudo apt install apt-transport-https dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu vs-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-vs.list
sudo apt update

Для Ubuntu 16.04

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
sudo apt install apt-transport-https
echo "deb https://download.mono-project.com/repo/ubuntu vs-xenial main" | sudo tee /etc/apt/sources.list.d/mono-official-vs.list
sudo apt update

Для Ubuntu 14.04

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
sudo apt install apt-transport-https
echo "deb https://download.mono-project.com/repo/ubuntu vs-trusty main" | sudo tee /etc/apt/sources.list.d/mono-official-vs.list
sudo apt update

Затем введите

sudo apt install mono-complete

Создать образец C# файл в текущем каталоге

Например, вы можете использовать следующий код:

class GoodDay
{
    public static void Main()
    {
        System.Console.WriteLine("Good Day!");
    }
}

Используйте любой текстовый редактор, например gedit, введите следующий код и сохраните файл как GoodDay.cs

Команда для компиляции кода -

mcs -out:GoodDay.exe GoodDay.cs

Исполняемый файл GoodDay.exe генерируется.

Команда для выполнения .exe файл -

mono GoodDay.exe

Выход будет -

Good Day!

Команда для декомпиляции исполняемого файла -

monodis --output=GoodDay.txt GoodDay.exe

Информация о декомпилированном коде сохраняется во вновь созданном файле GoodDay.txt

Вам нужно установить mono-complete, если вы хотите запустить программное обеспечение для Mono или Microsoft .NET, которое вы не устанавливаете из пакета Debian.


  1. Установить моно-комплект. Во всех поддерживаемых в настоящее время версиях Ubuntu откройте терминал и введите:

    sudo apt install mono-complete
    
  2. Сохраните ваш код C# в файле с именем hello.cs. Пример кода hello.cs:

    using System;
    
    namespace Project_1 {
        class MainClass {
            public static void Main (string[] args) {
                Console.WriteLine ("Hello World!");
                Console.ReadKey ();
            }
        }
    }
    
  3. Сделайте hello.cs исполняемым. Щелкните правой кнопкой мыши файл hello.cs -> выберите Свойства -> вкладка Разрешения -> поставьте галочку слева от Разрешить выполнение файла как программы.

  4. Изменить каталоги с помощью cd Команда в каталог, который содержит файл hello.cs.

  5. Используйте компилятор mcs и создайте исполняемый файл Windows с именем hello.exe из исходного файла hello.cs.

    mcs -out:hello.exe hello.cs
    
  6. Запустите программу hello.exe с моно.

    mono hello.exe
    
  7. Результаты запуска вашей программы на шаге 6 должны быть:

    Hello World!  
    
  8. Нажмите Enter, чтобы вернуться к терминалу по умолчанию.

  9. Декомпилируйте исполняемый файл.

    monodis --output=decompiled-hello.txt hello.exe
    

Официальный .NET Core от Microsoft существует с 2016 года. Это программное обеспечение с открытым исходным кодом , которое поддерживает множество платформ. Даже Mono теперь имеет общий код с .NET Core, поэтому в 2018 году почти нет причин использовать Mono.

Просто зайдите на официальный сайт , чтобы скачать и установить. Если вы хотите выполнить установку из командной строки, посетите страницу Установка .NET в Linux , в частности Установка .NET SDK или среды выполнения .NET в Ubuntu . Чтобы установить SDK и среду выполнения с помощью apt

      sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-5.0

Вы также можете установить с оснасткой

      sudo snap install dotnet-sdk --classic --channel=5.0

Настоящим решением с открытым исходным кодом по состоянию на 2021 год по-прежнему является Mono, доступное на их сайте https://www.mono-project.com/ . Неудивительно, что реализация Microsoft плохо работает (медленно, не отвечает) в Linux. Этого следовало ожидать, поскольку Microsoft долгое время является врагом Linux и его бесплатной природы с открытым исходным кодом. Придерживайтесь Mono, он все еще разрабатывается и легко устанавливается. Инструкции по загрузке по включенной ссылке

Другие вопросы по тегам