如何在 Ubuntu 终端中编译、运行和反编译 C# 代码?

Son*_*vol 11 mono command-line compiling c#

我有一个 C# 代码,需要使用终端编译、执行和反编译。

我怎么能这样做?

kar*_*rel 16

如果您想为 Mono 或 Microsoft .NET 运行不是从 Debian 软件包安装的软件,则需要安装mono-complete


  1. 安装mono-complete。在所有当前支持的 Ubuntu 版本中,打开终端并输入:

    sudo apt install mono-complete
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将 C# 代码保存在名为 hello.cs 的文件中。hello.cs 代码示例是:

    sudo apt install mono-complete
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使 hello.cs 可执行。右键单击 hello.cs 文件 -> 选择Properties -> Permissions选项卡 -> 在Allow execution of file as program左侧打勾。

  4. 使用cd命令将目录更改为包含 hello.cs 文件的目录。

  5. 使用 mcs 编译器并从源 hello.cs创建一个名为hello.exe的 Windows 可执行文件。

    mcs -out:hello.exe hello.cs
    
    Run Code Online (Sandbox Code Playgroud)
  6. 使用单声道运行 hello.exe 程序。

    mono hello.exe
    
    Run Code Online (Sandbox Code Playgroud)
  7. 在第 6 步中运行程序的结果应该是:

    Hello World!  
    
    Run Code Online (Sandbox Code Playgroud)
  8. Enter可返回到默认终端提示。

  9. 反编译可执行文件。

    monodis --output=decompiled-hello.txt hello.exe
    
    Run Code Online (Sandbox Code Playgroud)


Son*_*vol 10

您可以使用monowhich 是C#实现,具有跨平台支持并且是开源的。

打开终端并安装单声道:

对于 Ubuntu 20.04 (稳定版)

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
Run Code Online (Sandbox Code Playgroud)

对于 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
Run Code Online (Sandbox Code Playgroud)

对于 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
Run Code Online (Sandbox Code Playgroud)

对于 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
Run Code Online (Sandbox Code Playgroud)

然后输入

sudo apt install mono-complete
Run Code Online (Sandbox Code Playgroud)

C#在当前目录下创建示例文件

例如,您可以使用以下代码:

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
Run Code Online (Sandbox Code Playgroud)

使用任何文本编辑器(如 gedit),键入以下代码并将文件另存为 GoodDay.cs

编译代码的命令 -

mcs -out:GoodDay.exe GoodDay.cs
Run Code Online (Sandbox Code Playgroud)

GoodDay.exe 生成一个可执行文件。

执行.exe文件的命令-

mono GoodDay.exe
Run Code Online (Sandbox Code Playgroud)

输出将是 -

Good Day!
Run Code Online (Sandbox Code Playgroud)

反编译可执行文件的命令 -

monodis --output=GoodDay.txt GoodDay.exe
Run Code Online (Sandbox Code Playgroud)

反编译后的代码信息保存在新生成的文件中 GoodDay.txt