I have a C# code which I need to compile, execute and decompile using the terminal.
How can I do so?
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It only takes a minute to sign up.
Sign up to join this communityI have a C# code which I need to compile, execute and decompile using the terminal.
How can I do so?
You need to install mono-complete if you want to run software for Mono or Microsoft .NET which you are not installing from a Debian package.
Install mono-complete. In all currently supported versions of Ubuntu open the terminal and type:
sudo apt install mono-complete
Save your C# code in a file called hello.cs. Example hello.cs code is:
using System;
namespace Project_1 {
class MainClass {
public static void Main (string[] args) {
Console.WriteLine ("Hello World!");
Console.ReadKey ();
}
}
}
Make hello.cs executable. Right-click the hello.cs file -> select Properties -> Permissions tab -> put a check mark to the left of Allow executing file as program.
Change directories using the cd
command to the directory that contains the hello.cs file.
Use the mcs compiler and create a Windows executable named hello.exe from the source hello.cs.
mcs -out:hello.exe hello.cs
Run the hello.exe program with mono.
mono hello.exe
The results of running your program in step 6. should be:
Hello World!
Press Enter to exit back to a default terminal prompt.
Decompile the executable file.
monodis --output=decompiled-hello.txt hello.exe
You can use mono
which is C#
implementation, having cross-platform support and is open source.
Open terminal and install mono:
sudo apt install gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update
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
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
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
Then type
sudo apt install mono-complete
Create a sample C#
file in the current directory
For example you can use the following code:
class GoodDay
{
public static void Main()
{
System.Console.WriteLine("Good Day!");
}
}
Use any text editor like gedit, type the following code and save the file as GoodDay.cs
The command to compile the code -
mcs -out:GoodDay.exe GoodDay.cs
An executable file GoodDay.exe
is generated.
The command to execute the .exe
file -
mono GoodDay.exe
The output will be -
Good Day!
The command to decompile the executable file -
monodis --output=GoodDay.txt GoodDay.exe
The decompiled code information is saved in the newly generated file GoodDay.txt