Help us understand the problem. What is going on with this article?

【Ubuntu18.04, C#】UbuntuでC#プログラムをコンパイル・実行したい

目的

WindowsPCでC#プログラムを作成したが、それをUbuntuの仮想マシンで実行したくなった。
さらにソースコードにちょこちょこ変更を加えながら実行したくもなった。
よってC#プログラムを仮想マシン上でコンパイル・実行だけできるような環境を作ろうとした。

前提

・Windows10のPCでUbuntu18.04の仮想マシンを作成し、そこで作業

環境構築手順

やることの概略

「Mono」という、異なるプラットフォームで動く.NETアプリを作るためのソフトをUbuntuにインストールする。

手順

1.Ubuntuにログインする。

2.Mono公式の「Download」のページのLinuxタブを開いたところに実行すべきコマンドが記載されているので、ぞの通りに実行する。
記事執筆時点でのコマンドは以下の通りであった。

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-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update

 

サイトはこんな感じになっている↓
image.png

 
で、自身は1行目の「sudo apt install gnupg ca-certificates」で早速こけた。

root@ubuntu-VirtualBox:/home/ubuntu# apt install gnupg ca-certificate
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package ca-certificate

 
この場合は、「apt install gnupg ca-certificate」する前に「apt-get update」する必要があるのだそう
askubuntuの:"Ubuntu Docker Container update-ca-certificates: command not found"より)。
で、その通りにやってみたらうまくいった↓

コマンド実行し直し・・・

sudo apt-get update
sudo apt install gnupg ca-certificates

結果は?

root@ubuntu-VirtualBox:/home/ubuntu# apt install gnupg ca-certificates
Reading package lists... Done
Building dependency tree       
Reading state information... Done
ca-certificates is already the newest version (20180409).
gnupg is already the newest version (2.2.4-1ubuntu1.2).
0 upgraded, 0 newly installed, 0 to remove and 15 not upgraded.

 

3.以下のコマンドを実行してMonoをインストール。
しばらくログがだ~っと出力されて、いつの間にかインストールが終わる。

sudo apt install mono-devel

 

4.monoコマンドが使えるようになっているか確認するため、「mono --version」を実行する。
以下のような感じに出力されればOK。
image.png

コンパイル・実行の動作確認

適当な場所に簡単なC#ソースコードを作成して試してみる。
今回は「/home/[ユーザ名]/」配下に「Sources」ディレクトリを作り、その中にソースコードを置くことにした。

1.ディレクトリを移動してからviコマンドで新規ファイルを.cs拡張子で作り・・・

cd /home/[ユーザ名]/Sources
vi Hello.cs

 

2.手抜きコードを書いて保存して閉じる

using System;

namespace Hello
{
    class HelloWorld
    {
        static void Main()
        {
            Console.WriteLine("Hello World!!");
            Console.ReadLine();
        }
    }
}

 
3.以下のコマンドを実行してソースコードをコンパイルする。

msc Hello.cs

コマンド実行後に現在のディレクトリを見てみると、新たにソースコードのファイル名と同名のexeファイルが作られていることがわかる。
image.png

 
4.そしていよいよexeファイルを実行する

mono Hello.exe

ざわざわ・・・
image.png

((゚∀゚))

参考にさせて頂いたサイト

Monoの公式サイト
LinuxでもC#プログラミング(導入編)

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away