AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1100537
Accepted
Sonevol
Sonevol
Asked: 2018-12-13 22:03:47 +0800 CST2018-12-13 22:03:47 +0800 CST 2018-12-13 22:03:47 +0800 CST

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

  • 772

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

我该怎么做?

command-line compiling mono c#
  • 4 4 个回答
  • 31937 Views

4 个回答

  • Voted
  1. karel
    2018-12-13T22:11:30+08:002018-12-13T22:11:30+08:00

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


    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 文件 -> 选择Properties -> Permissions选项卡 -> 在Allow execution file as program左侧打勾。

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

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

      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
      
    • 17
  2. Best Answer
    Sonevol
    2018-12-13T22:03:47+08:002018-12-13T22:03:47+08:00

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

    打开终端并安装单声道:

    对于 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
    

    对于 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

    • 9
  3. phuclv
    2021-08-02T08:05:23+08:002021-08-02T08:05:23+08:00

    Microsoft的官方.NET Core于 2016 年问世。它是开源软件,支持多种平台。甚至 Mono 现在也与 .NET Core 共享一些代码,因此在 2018 年几乎没有理由使用 Mono

    直接去官网下载安装即可。如果您想从命令行安装,请访问在 Linux 上安装 .NET,特别是在 Ubuntu 上安装 .NET SDK 或 .NET 运行时。使用 apt 安装 SDK 和运行时

    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
    

    您也可以使用 snap 安装

    sudo snap install dotnet-sdk --classic --channel=5.0
    
    • 2
  4. Martin
    2021-10-26T03:20:34+08:002021-10-26T03:20:34+08:00

    截至 2021 年,真正的开源解决方案仍然是 Mono,可在其网站https://www.mono-project.com/上获得微软的实施不出所料地在 Linux 上运行不佳(缓慢、无响应)。这是意料之中的,因为微软长期以来一直是 Linux 及其免费、开源性质的克星。坚持使用 Mono,它仍在开发中且易于安装。在包含的链接上下载说明

    • 0

相关问题

  • 如何从命令行刻录双层 dvd iso

  • 我在哪里可以找到 F# 包?[关闭]

  • 如何从命令行判断机器是否需要重新启动?

  • 文件权限如何工作?文件权限用户和组

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve