VB のたまご

作成日: 2017/08/09, 更新日: 2017/08/13


Linux で VB.NET を書いて動かそう!

  •  ※2017年8月現在での確認です。数か月後には各ソフトウェアが最新になっていることが予想されるため、 この記事が古い内容になっている可能性があります、注意してください。

  •  ここ数年、Microsoft は、「Microsoft Loves Linux」ということで、OSS との親和性に力を入れていますね。私も習って、 「Linux 上で VB.NET 言語でプログラミングしたソースを、Linux 上でビルドして、Linux 上で実行」 するまでをやってみました!


全体関係図

  •  実験環境は以下の通りです。
  • イメージ
  •  Linux 上で .NET Framework に当たるのは、①サードベンダーが開発している Mono か、②Microsoft が開発している .NET Core の2つに分かれます。 ここでは、両方とも使えるように解説しています。

  •  具体的なバージョンは以下の通りです。


  • 環境
    ホストOS Windows 8.1 Pro(x64)
    仮想化ソフト VirtualBox 5.1.26
    ゲストOS Ubuntu 17.04 日本語 Remix(x64)
    実行基盤1 Mono 5.0.1
    実行基盤2 .NET Core 2 Preview2

  •  .NET Core は、バージョン2になってから VB.NET に対応しました。ただし、2017年8月現在では、まだプレビュー版ですので、 正式な環境下での採用および運用は控えた方がいいのではと思います。


0.構築手順の確認

  •  Linux 環境の準備まではググってもらうか迷いました。しかし Linux に関わる記事はこのサイトでは初めてなのと、 実際にやってみたら簡単にインストールできたし、操作方法もそんなに難しくないよ。というのを伝えたいため、 簡単ですがこの記事でも OS のインストールから解説することにしました。

  •  ここでは、仮想化ソフトは VirtualBox を使って仮想マシンを管理しますが、VMWare や Hyper-V など、 普段使われている仮想化ソフトでも OK です。VirtualBox のインストール方法、及び使用方法は割愛します。 仮想化ソフトが分からない方は「仮想化ソフトとは」、「仮想化ソフトとは メリット」、 「windows virtualbox インストール」とかでググってインストールしておきましょう! さらに「virtualbox extension pack」とかもググってインストールしておきましょう!

  •  次に、仮想マシンに Linux をインストールします。OS は Ubuntu という Debian 系 Linux をインストールしますが、 こちらに関しても、CentOS や OpenSUSE 等、お好きな Linux で OK です。

  •  以降は、Ubuntu 内での作業になります。 後は実行基盤をインストールして、プログラム書いて動けば完成です!簡単そうですね。


1.Ubuntu 17.04 をインストールする

  •  まずは、Ubuntu のサイト を訪問して、 ubuntu-ja-17.04-desktop-amd64.iso をクリックして、OS のインストールイメージファイルをダウンロードします。

  •  仮想化ソフト側では、Ubuntu 17.04 用の仮想マシン枠を作成しておきます。 あれこれ入れて、ディスク容量が重くなっても大丈夫なように、ハードディスクは 126 GB くらいに割り当てておきます。 ダウンロードが終わったら、【仮想マシン側】の CD ドライブに iso ファイルをセットして、仮想マシンを実行します。

  • 参考
    エンジニアの入り口
    【初心者でもわかる】Ubuntuのインストール方法まとめ
    https://eng-entrance.com/ubuntu-install
    

  •  画面が表示されるまで、しばらく待ちます。

  • イメージ
  •  「日本語」が選択されていることを確認して、「Ubuntu をインストール」を押します。

  • イメージ
  •  リリース後に提供された修正プログラムもついでに組み込みたいため、 「Ubuntu のインストール中にアップデートをダウンロードする」にチェックを付けます。

  • イメージ
  •  「ディスクを削除して Ubuntu をインストール」が選択されていることを確認して、 「インストール」を押します。

  •  これは、「ハードディスク内を全削除して、パーティション構成を自動割り当てにお任せする」という意味ですが、 通常は運用に合わせた割り当てを手動で設定するべきです。 例えば「ubuntu パーティション 区切り方」とかでググって調べた方が良いかなと思っています。

  • イメージ
  •  ハードディスクを初期化する(データがある場合は消えてしまう!)がそれでもいいか、という確認メッセージです。 「続ける」を押します。

  • イメージ
  •  ロケール情報(タイムゾーン)の確認です。「Tokyo」と入力されていることを確認して、 「続ける」を押します。

  • イメージ
  •  キーボードの設定です。日本語用キーボードに選択されているので、英字、かな入力できることを確認して、 「続ける」を押します。

  • イメージ
  •  ユーザー名とマシン名を設定します。選択されている「ログイン時にパスワードを要求する」という設定の場合、 Ubuntu 起動時にパスワードを入力しないと Ubuntu に入ることが出来ません。

  •  これは、セキュリティ向上のためですが、Windows に慣れてしまっていると煩わしく感じるかもしれません。 もう一つの「自動的にログインする」に切り替えるとパスワード入力不要で入れます。

  • イメージ
  •  インストールが終わるまで、しばらく待ちます。 ※VirtualBox の場合、仮想マシンは初期値として NAT 接続によるネットワークにつなぐように設定されています。 もしも実機にインストールする場合は、最初にネットワーク設定を行わなければならないかもしれません。 この場合は、「ubuntu インストール ネットワーク設定」などでググって設定してください。

  • イメージ
  •  インストールが完了したので「今すぐ再起動する」を押します。

  • イメージ
  •  ここがハマりポイントな気がしていますが、この画面が出てきたら「Enter」を押します。 勝手に再起動されるものだと思っていたのですが、ずっとこの画面のまま進みません。

  •  画面に薄く書かれた英文は、和訳すると「インストールメディアを取り出して、Enterキーを押してください。」 的なことが書かれていますので、その通りに操作します。(medium ではなく media の間違い?)。

  •  VirtualBox の場合は、自動的に iso ファイルの設定が外されますので「Enter」を押すだけです。

  • イメージ
  •  ログイン画面が表示されたらひとまず Linux の準備は完了です。 パスワードを入力して Ubuntu に入りましょう。

  • イメージ
  •  初回起動時は表示するまでに時間がかかります。ユーザーアカウント関連のデータを準備していそうです。 Ubuntu では、「Unity」というウィンドウマネージャーを採用しています。

  •  VB を動かすことを優先しているので、セキュリティ関連の設定を何もしてません。 例えば「ubuntu インストール後 やること」とかでググって調べた方が良いかなと思っています。


1の2.Guest Addtions のインストール

  •  VirtualBox の場合、さらに Guest Addtions をインストールして操作性を向上します。

  • 参考
    Narrow Escape
    Ubuntu 16.04: VirtualBox上のUbuntu 16.04にGuest Additionsをインストールする
    https://www.hiroom2.com/2016/05/07/virtualbox%E4%B8%8A%E3%81%AEubuntu-16-04%E3%81%ABguest-additions%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/
    

    イメージ
  •  VirtualBox メニュー内にある、デバイス→Guest Additions CD イメージの挿入をクリック

  • イメージ
  •  「実行する」を押します。

  • イメージ
  •  パスワードを入力して、「認証する」を押します。

  • イメージ
  •  しばらく待ちます。「Press Return to close this window...」と表示されたら、 インストールが完了したということなので「Enter」を押します。

  • イメージ
  •  CD を取り外します。マウスカーソルを左のバーに持っていき、CDアイコン上で右クリック→「取り出し」を押します。


2.Ubuntu 17.04 の操作に慣れる

  •  2-1.フォルダを見る

  • イメージ
  •  机の引き出しみたいなアイコンをクリックします。

  • イメージ
  •  または右クリックして一覧を表示します。

  • イメージ
  •  するとエクスプローラーが開きます。操作方法は Windows とほぼ同様です。

  • イメージ
  •  全体化している場合、マウスカーソルを画面上部に移動することで、メニューバー表示に切り替わります。 任意のソフトウェアの場合、最大化していなくてもメニューバーが画面上部に独立して表示されている場合があります。

  •  2-2.コントロールパネル的な画面を見る

  • イメージ
  •  歯車アイコンをクリックして、システム設定画面を開きます。

  • イメージ
  •  Windows で言うコントロールパネルのような画面になります。

  • イメージ
  •  ディスプレイアイコンをクリック(ダブルクリックではない)して、解像度を上げましょう! 解像度を「1024x768」など任意の大きさに切り替えて、見切れている「適用」を押します。

  • イメージ
  •  この設定を継続するかどうか聞いてくるので、「この設定のままにする」を押します。

  •  2-3.プログラム一覧やファイルを横断して検索する

  • イメージ
  •  プログラム一覧を見る場合は、Ubuntu アイコンをクリックします。

  • イメージ
  •  最近使ったアプリの履歴?が表示されます。

  • イメージ
  •  画面下のA文字みたいなアイコンをクリックすると、より詳細に見ることが出来ます。 インストール済み項目にある「さらに79個の結果を見る」をクリックすると非表示のアプリアイコンが 表示されるようになります。

  •  2-4.プログラムを探して、インストール、アンインストールする

  • イメージ
  •  買い物の紙袋みたいなアイコンをクリックします。

  • イメージ
  •  初回起動時は、ロード処理が走りますので、しばらく待ちます。

  • イメージ
  •  カテゴリから選択するか、画面右上にある検索入力欄から、プログラム名を入力して検索、 インストールやアンインストールをします。

  •  2-5.画面ロックを解除する

  •  何も操作せずに5分くらい経つと、画面がロックされる(ログイン画面待ちになってしまう)設定を解除します。 システム設定→「画面の明るさとロック」を開きます。

  • イメージ
  •  「次の時間アイドル状態が続けば画面をオフにする」を「しない」に変更します。 それだけで OK だと思います。

  •  2-6.シャットダウン、再起動する

  • イメージ
  •  画面右上にある歯車アイコンをクリック→「シャットダウン...」をクリックします。

  • イメージ
  •  マウスカーソルを右側に当てると、シャットダウンと表示されるので、クリックします。

  • イメージ
  •  マウスカーソルを左側に当てると、再起動と表示されるので、クリックします。

  •  2-7.端末を開く、エディタを開く

  •  最近の Linux は、GUI の操作性が向上しているので、マウス操作だけで何でもできるくらいになっていますが、 昔からあるコマンド入力による操作もまだまだ主流です。

  •  ここでは、Windows で言うコマンドプロンプト画面の出し方、メモ帳の出し方を説明します。

  •  2-7-1.コマンドプロンプト画面の出し方

  •  Linux では、「端末(たんまつ)」と言います。

  •  Ubuntu アイコンをクリックして、コンピューターの検索画面を表示します。 ここで、「端末」と入力すると、「端末」と表示されたアイコンが出るのでそれをクリックすることで表示することができます。

  •  「端末」の他にも、「ターミナル」「terminal」と入力しても表示されます。日本語変換が手間のため、 以下では「terminal」と入力した結果を表示しています。

  • イメージ


  •  2-7-2.メモ帳の出し方

  •  Linux では、「テキストエディター」と言います。

  •  今度は「エディタ」と入力すると「テキストエディター」と表示されたアイコンが出るのでそれをクリックすることで表示することができます。

  •  「エディタ」の他にも、「text」「editor」「gedit」と入力しても表示されます。日本語変換が手間のため、 以下では「gedit」と入力した結果を表示しています。

  • イメージ
  •  この他にも、vim や emacs などありますが省略します。


3.Mono 上で動かすための環境準備と動作テスト

  •  本家のサイトから OS 別の手順に習って、 ダウンロード&インストールします。

  •  ここでは、「Linux」タブの「Ubuntu」タブにある、「Ubuntu 16.04」用のコマンドを使って Mono をインストールしていきましょう。 端末を開いてコマンドを入力していきます。コマンドが長いものは、コピペした方が入力ミスしなくていいかもしれません。

  •  apt コマンドに、Ubuntu 16.04 用のパッケージリポジトリを登録する
  • $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
    $ echo "deb http://download.mono-project.com/repo/ubuntu xenial main" | sudo tee /etc/apt/sources.list.d/mono-official.list
    $ sudo apt-get update
    

  •  Mono をインストールする
  • $ sudo apt-get install -y mono-complete
    

  •  しばらく待ちます。

  •  インストールの検証をする
  • $ mozroots --import --sync
    

  •  インストールした Mono のバージョンを確認する
  • $ mono --version
    

  •  こういうふうな文字列が返って来れば OK
  • Mono JIT compiler version 5.0.1.1 (2017-02/5077205 Thu May 25 09:19:18 UTC 2017)
    Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
           TLS:                __thread
           SIGSEGV:        altstack
           Notifications:   epoll
           Architecture:   amd64
           Disabled:         none
           Misc:               softdebug 
           LLVM:             supported, not enabled.
           GC:                 sgen (concurrent by default)
    

  •  コンパイラのダウンロード&インストール

  •  C# 用のコンパイラは一緒についてくるのですが、VB.NET 用のコンパイラは付いてきません。
  • $ mcs --version
    Mono C# compiler version 5.0.1.1
    
    $ vbnc --version
    プログラム 'vbnc' はまだインストールされていません。 次のように入力することでインストールできます:
    sudo apt install mono-vbnc
    

  •  提案文の通り、VB.NET 用のコンパイラを別途、ダウンロード&インストールします。
  • $ sudo apt install -y mono-vbnc
    

  •  インストール後、動作確認
  • $ vbnc
    

  •  こういうふうな文字列が返って来れば OK
  • Visual Basic.Net Compiler version 0.0.0.5943 (Mono 4.6 - tarball)
    Copyright (C) 2004-2010 Rolf Bjarne Kvinge. All rights reserved.
    
    vbnc : Command line : error VBNC2011: No files to compile! Cannot do anything!
    Compilation took 00:00:00.2644870
    

  •  VB.NET ソースを作成する、その1

  •  ちょっと面倒くさいですが、全てを手入力してソースを作成してみましょう。 そこで、現在いる場所に、ソースを作成してしまうと後々扱いにくくなるので、フォルダを作成してその中で作業していきましょう。

  •  現在いるフォルダには、以下のファイルやフォルダが入っています。(本当は日本語から英語のフォルダ名に変えたいが省略)。
  • $ ls
    examples.desktop  テンプレート  ドキュメント  ピクチャ      公開
    ダウンロード      デスクトップ  ビデオ        ミュージック
    

  •  この場所に、mono_vbnet_hello というフォルダを作成します。
  • $ mkdir mono_vbnet_hello
    

  •  すると、「mono_vbnet_hello」フォルダが作成されます。
  • $ ls
    examples.desktop  ダウンロード  デスクトップ  ビデオ    ミュージック
    mono_vbnet_hello  テンプレート  ドキュメント  ピクチャ  公開
    

  •  このフォルダの中に移動します。 入力を楽にするテクニックとして、m と入力後に「Tab」キーを押すと、残りの文字列を自動補完してくれる機能があります。
  • $ cd mono_vbnet_hello
    

  •  ソースを作成します。
  • $ gedit Program.vb
    

  •  以下のプログラムをコピペ、保存します。
  • Imports System
    
    Module Module1
    
        Sub Main()
        
            Console.WriteLine("Hello VB.NET on Mono !")
        
        End Sub
    
    
    End Module
    

  •  ビルドします。
  • $ vbnc Program.vb
    

  •  ビルドすると、以下のような文字列が表示されます。
  • Visual Basic.Net Compiler version 0.0.0.5943 (Mono 4.6 - tarball)
    Copyright (C) 2004-2010 Rolf Bjarne Kvinge. All rights reserved.
    
    Assembly 'Program, Version=0.0, Culture=neutral, PublicKeyToken=null' saved successfully to '/home/sutefu7/mono_vbnet_hello/Program.exe'.
    Compilation successful
    Compilation took 00:00:01.9046090
    

  •  ビルドが終わると、実行ファイルが作成されています。
  • $ ls
    Program.exe  Program.vb
    

  •  実行します。
  • $ mono Program.exe
    

  •  以下のような文字列が表示されたら成功です!
  • Hello VB.NET on Mono !
    

  •  VB.NET ソースを作成する、その2

  •  Mono では、WinForms な画面アプリケーションもできるみたいですので、こちらも実験してみます。
  • $ gedit Form1.vb
    

    Imports System
    Imports System.Windows.Forms
    
    Public Class Form1
        Inherits Form
        
        Public Shared Sub Main()
            
            Application.Run(New Form1)
            
        End Sub
        
        Public Sub New()
            
            Me.Text = "Hello VB.NET on Mono !"
            
            Dim btn As New Button
            btn.Text = "sample"
            Me.Controls.Add(btn)
    
            AddHandler btn.Click, AddressOf Me.Button1_Click
            
        End Sub
    
        Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
    
            MessageBox.Show("aaa")
    
        End Sub
        
    End Class
    

  •  ビルド
  • $ vbnc Form1.vb
    

  •  実行
  • $ mono Form1.exe
    

    イメージ
  •  画面が表示されたら成功です!「sample」を押したらメッセージボックスが表示されたら、大成功です!

  •  MonoDevelop という IDE をインストールする

  •  さすがに手書きは辛すぎるので、統合開発環境をインストールしましょう。

  •  当初、本家のサイト に行って、このコマンド通りにやってみたのですが、 Ubuntu に入っているのかどうかがよく分かりませんでした。この flatpak というコマンド経由で実行することで、 対象アプリをサンドボックス環境下で動作させることができ、セキュリティ的に現代風な実行のさせ方らしいです。 あやしいソース対策ですかね?

  •  しかし、通常のアプリとしてインストールしたかったので、「Ubuntu Software」経由でインストールすることにしました。

  • イメージ
  •  画面右上にある「検索」を押して、入力欄に「monodevelop」と入力します。ほどなくして検索結果として MonoDevelop が 表示されるので、アイコンをクリックします。

  • イメージ
  •  「インストール」を押します。

  • イメージ
  •  パスワードを入力して、「認証する」を押します。

  • イメージ
  •  インストールが完了したので、「起動」を押します。この画面は閉じて構いません。

  • イメージ
  •  MonoDevelop アプリケーションに限らずですが、アプリを起動するとアイコンが表示されます。 この時にアイコンを右クリックすると「Lancher に登録」と表示されるのでここをクリックしておくと、 次回の起動が楽にできます。

  •  それではソリューションを作成してみましょう!

  •  ソリューション枠の中にある「New...」をクリックします。

  • イメージ
  •  その他にある「.NET」を選択、「コンソールプロジェクト」を選択、言語を「VBNet」に切り替え、「Next」を押します。

  • イメージ
  •  プロジェクト名を適当につけて、「ブラウズ」を押して保存場所を指定します。

  • イメージ
  •  ベースフォルダとして、「MonoDevelop」フォルダを作成して、このフォルダを選択します。

  • イメージ
  •  「作成」を押します。

  • イメージ
  •  「.NET Framework v4.5」は未対応です。とメッセージが表示されますので、「OK」を押します。 よって、バージョンをちょっと下げます。 残念です(´;ω;`)

  • イメージ
  •  ソリューションツリーにあるプロジェクト右側のボタンを押して、「ツール」→「Edit File」を押します。 これにより、vbproj ファイルが表示されるので直接修正します。

  • イメージ
  •  見づらいですが、TargetFrameworkVersion タグ内の値を、「v4.5」から「v4.0」に修正して、保存します。

  • イメージ
  •  また、ソリューションツリーにあるプロジェクト右側のボタンを押して、「再読み込み」を押します。

  • イメージ
  •  プロジェクト配下のデータが表示されるようになりました!

  • イメージ
  •  それでは、ビルドして実行してみましょう!「デバッグ実行」ボタンを押します。すると、 「Compiler crashed with code: 1.」というビルドエラーが出てビルドが通りません。

  •  原因は、ビルドエンジンを「MSBuild」にしているためです。ここは Linux なので MSBuild はありません。 MSBuild を使わないように設定を修正します。

  • イメージ
  •  ソリューションツリーにあるプロジェクトを「選択」して、 メニューの「プロジェクト」→「ConsoleApplication1 のオプション」をクリックします。

  • イメージ
  •  「ビルド」→「一般」→「Use MSBuild build engine (recommended for this project type)」のチェックを外して、 「OK」を押します。

  • イメージ
  •  「デバッグ実行」ボタンを押すと、今度はうまく表示されました! ただし、インテリセンスが表示されず、現段階ではコーディングは厳しいです。


4..NET Core 2 Preview 2 上で動かすための環境準備と動作テスト

  •  本家のサイトから、 .NET Core 2 Preview 2 をダウンロード&インストールします。

  •  表示されているのが、「Linux」の、「Ubuntu, Mint」であることを確認して、コマンドを入力していきます。 2017年8月現在では、「Ubuntu 16.10」としてインストールを薦めます。

  •  apt コマンドに、Ubuntu 16.10 用のパッケージリポジトリを登録する
  • $ sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ yakkety main" > /etc/apt/sources.list.d/dotnetdev.list'
    $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys B02C46DF417A0893
    $ sudo apt-get update
    

  •  .NET Core 2.0 Preview 2 のインストール ※無いと思いますが、もしもすでに「.NET Core 2.0 Preview 1」をインストールしていた場合は先に削除します。
  • $ sudo apt-get remove dotnet-dev-2.0.0-preview1-005977
    $ sudo apt-get install -y dotnet-sdk-2.0.0-preview2-006497
    

  •  しばらく待ちます。 入力待ちになったら、インストールの完了です。

  •  インストールした .NET Core のバージョンを確認する
  • $ dotnet --info
    

  •  こういうふうな文字列が返って来れば OK
  • .NET Command Line Tools (2.0.0-preview2-006497)
    
    Product Information:
     Version:            2.0.0-preview2-006497
     Commit SHA-1 hash:  06a2093335
    
    Runtime Environment:
     OS Name:     ubuntu
     OS Version:  17.04
     OS Platform: Linux
     RID:         linux-x64
     Base Path:   /usr/share/dotnet/sdk/2.0.0-preview2-006497/
    
    Microsoft .NET Core Shared Framework Host
    
      Version  : 2.0.0-preview2-25407-01
      Build    : 40c565230930ead58a50719c0ec799df77bddee9
    

  •  VB.NET ソースを作成する

  •  ちょっと面倒くさいですが、全てを手入力してソースを作成してみましょう。 そこで、現在いる場所に、ソースを作成してしまうと後々扱いにくくなるので、フォルダを作成してその中で作業していきましょう。

  •  端末を開いて、以下を入力します。
  • $ mkdir dotnet_vbnet_hello
    $ cd dotnet_vbnet_hello
    

  •  一応、dotnet コマンド経由で、ひな形ソースや関連物を自動作成できるのですが、C# 用になってしまいます。 せっかくなので、今回は、C# 用のひな形ソースや関連物を、VB.NET 用に置き換えて、作ってみましょう!

  •  (追記)オプション指定することで、直接 VB.NET 用ソースを生成することが可能です。 よって、以下の変換作業は不要です(やっても良い)。
  • $ dotnet new Console -lang VB -o ConsoleApplication1
    

  •  ソースを生成する
  • $ dotnet new Console -o ConsoleApplication1
    $ cd ConsoleApplication1
    

  •  生成されたのは、プロジェクトファイルとソースでした。
  • $ ls
    ConsoleApplication1.csproj  Program.cs  obj
    

  •  中身を見てみます。
  • $ more ConsoleApplication1.csproj 
    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp2.0</TargetFramework>
      </PropertyGroup>
    
    </Project>
    
    $ more Program.cs 
    using System;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Hello World!");
            }
        }
    }
    

  •  まずは、拡張子を変えていきます。
  • $ mv ConsoleApplication1.csproj ConsoleApplication1.vbproj
    $ mv Program.cs Program.vb
    

  •  C# 用のソースを、VB.NET 用に書き換えます。
  • $ gedit Program.vb
    

  •  以下のプログラムをコピペ、保存します。
  • Imports System
    
    Module Module1
    
        Sub Main()
        
            Console.WriteLine("Hello VB.NET on .Net Core !")
        
        End Sub
    
    
    End Module
    

  •  ビルド&実行します。
  • $ dotnet run
    

  •  以下のような文字列が表示されたら成功です!
  • Hello VB.NET on .Net Core !
    

  •  Visual Studio Code というエディタをインストールする

  • 参考
    Visual Studio Code Docs
    LinuxでVisual Studio Codeを起動する
    https://vscode-doc-jp.github.io/docs/setup/linux.html
    
    
    GitHub
    The .NET Core Debugger is still being downloaded. See the C# Output Window for more information. #1430
    https://github.com/OmniSharp/omnisharp-vscode/issues/1430
    
    
    GitHub
    Improve experience downloading C# dependencies over slow internet #1085
    https://github.com/OmniSharp/omnisharp-vscode/issues/1085
    

    イメージ
  •  本家のサイトに行って、 「.deb」という方をクリックして、deb ファイルをダウンロードします。

  • イメージ
  •  「ファイルを保存する」にチェックを切り替えて、「OK」を押します。

  • イメージ
  •  ダウンロードが完了したら、フォルダを開きます。

  • イメージ
  •  フォルダに deb ファイルがあることを確認します。

  • イメージ
  •  ファイル一覧内のどこかを右クリックして、「端末で開く」をクリックして端末を開きます。

  •  ダウンロードした deb ファイルをインストールします。$ マーク個所3つ、コマンドを入力してください。
  • $ ls
    code_1.14.2-1500506907_amd64.deb
     
    $ sudo dpkg -i code_1.14.2-1500506907_amd64.deb 
    以前に未選択のパッケージ code を選択しています。
    (データベースを読み込んでいます ... 現在 218614 個のファイルとディレクトリがインストールされています。)
    code_1.14.2-1500506907_amd64.deb を展開する準備をしています ...
    code (1.14.2-1500506907) を展開しています...
    code (1.14.2-1500506907) を設定しています ...
    bamfdaemon (0.5.3+17.04.20170406-0ubuntu1) のトリガを処理しています ...
    Rebuilding /usr/share/applications/bamf-2.index...
    gnome-menus (3.13.3-6ubuntu5) のトリガを処理しています ...
    desktop-file-utils (0.23-1ubuntu2) のトリガを処理しています ...
    mime-support (3.60ubuntu1) のトリガを処理しています ...
    
    $ sudo apt-get install -f
    パッケージリストを読み込んでいます... 完了
    依存関係ツリーを作成しています                
    状態情報を読み取っています... 完了
    アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 88 個。
    

  •  Visual Studio Code を開いてみましょう。

  •  Ubuntu アイコンのコンピューターを検索から、Visual Studio Code を探して起動してみましょう。

  • イメージ
  •  起動直後の画面です。

  • イメージ
  •  画面左側、縦に並んだアイコンが作業の切り替えになります。 ファイルアイコンはソリューションエクスプローラーみたいなものです。

  • イメージ
  •  虫眼鏡アイコンは検索と置換をおこなう画面です。

  • イメージ
  •  分岐アイコンはソース管理に関する画面です。

  • イメージ
  •  虫禁止アイコンはデバッグ実行画面です。

  • イメージ
  •  四角アイコンは拡張機能を管理する画面です。

  •  環境変数に、Visual Studio Code の実行パスを登録します。

  • イメージ
  •  メニューバー→「表示」→「コマンドパレット」をクリックします。

  • イメージ
  •  「shell」と入力して、「ターミナル: ワークスペースでシェルを構成することを許可する」をクリックします。

  •  いったん Visual Studio Code を閉じます。

  •  内部で使用する?ライブラリをインストールします。
  • $ sudo apt-get install libunwind-dev libicu-dev
    

  •  もう一度、Visual Studio Code を開きます。

  • イメージ
  •  拡張機能より、「C#」をインストールします。

  • イメージ
  •  インストールが終わったら、「再読み込み」をクリックして、 表示されたメッセージの「ウィンドウの再読み込み」をクリックします。

  • イメージ
  •  2017年8月現在、Ubuntu 17.04 での動作は未対応なので、対応しているバージョンで動作してもらうように変更します。 画面下部にある歯車アイコンをクリック→「設定」をクリックします。

  • イメージ
  •  検索欄に「csharp.fall」と入力すると、該当結果が1件表示されます。 「csharp.fallbackDebuggerLinuxRuntimeId」という設定項目です。 ここの左側にある鉛筆アイコンをクリックします。

  • イメージ
  •  この中から、「ubuntu 16.10-x64」をクリックします。 右側に変更後の設定が表示されるので、保存します。

  •  ソースを書いて実行してみる

  •  残念なことに、Visual Studio Code は IDE ではなくエディタであることと、 VB.NET 向けの拡張機能が無いため、インテリセンス無しで頑張って手書きする必要があります。 キーワードハイライトには対応しているため、色分け表示してくれるのは嬉しいです;つД`)。

  •  よって、端末に戻ってソースを作成します。 ただウィンドウの切り替えが面倒くさいので、統合されたターミナルからソースを作りましょう!

  • イメージ
  •  メニューバー→「表示」→「統合ターミナル」をクリックします。

  • イメージ

  •  画面下部に端末が表示されますので、以下のコマンドを入力します。 (追記)「dotnet new」のオプションで「VB」を指定することで、変換作業が不要になります。
  • $ ls
    ビデオ        ミュージック  ダウンロード        MonoDevelop
    ピクチャ      テンプレート  dotnet_vbnet_hello  mono_vbnet_hello
    デスクトップ  ドキュメント  examples.desktop    公開
    
    $ mkdir vscode_vbnet_hello
    $ cd vscode_vbnet_hello/
    $ dotnet new Console -o ConsoleApplication1
    $ cd ConsoleApplication1/
    $ ls
    ConsoleApplication1.csproj  obj  Program.cs
    
    $ mv ConsoleApplication1.csproj ConsoleApplication1.vbproj
    $ mv Program.cs Program.vb
    $ ls
    ConsoleApplication1.vbproj  obj  Program.vb
    
    $ gedit Program.vb
    

    Imports System
    
    Module Module1
    
        Sub Main()
    
            Console.WriteLine("Hello VB.NET on .NET Core used vscode !")
    
        End Sub
    
    End Module
    

  •  (追記)オプション指定することで、直接 VB.NET 用ソースを生成することが可能です。
  • $ dotnet new Console -lang VB -o ConsoleApplication1
    

  •  ソースを作成できたところまでで止めて、ビルドはまだしません。

  •  フォルダを開いて、ソースを読み込みます。

  • イメージ
  •  「フォルダーを開く」をクリックします。

  • イメージ
  •  私の場合、「最近開いたファイル」が選択されていたので、「ホームディレクトリ」をクリックして、 「vscode_vbnet_hello」フォルダをダブルクリックします(その中にあるフォルダを選択したいため)。

  • イメージ
  •  「ConsoleApplication1」を選択して、「OK」を押します。

  • イメージ
  •  エクスプローラー上に、プロジェクトフォルダ配下が表示されます。

  •  もしも、ソースを開いたタイミングで、以下のような文字列が表示されたら、インストールが完了するまで待ちます。
  • Updating C# dependencies...
    Platform: linux, x86_64, name=ubuntu, version=17.04 (ubuntu.17.04-x64)
    
    Downloading package 'Mono Runtime (Linux / x64)' (1549 KB) .................... Done!
    Downloading package 'Mono Framework Assemblies' (5828 KB) .................... Done!
    Downloading package 'OmniSharp (Mono 4.6)' (16807 KB) .................... Done!
    Downloading package '.NET Core Debugger (Ubuntu 16.04 / x64)' (47391 KB) ...
    ~
    

    イメージ
  •  虫禁止アイコンをクリックして、緑の三角アイコンをクリックして、実行します。

  • イメージ
  •  構成を指定するように表示されるので、「.NET Core」をクリックします。

  • イメージ
  •  launch.json が表示されます。

  • イメージ
  •  Program キーの出力パスを、具体的なパスに修正します。

  • イメージ
  •  例えば、今回は、 「<target-framework>/<project-name.dll>」を「netcoreapp2.0/ConsoleApplication1.dll」と修正して保存します。 その後、再度、緑の三角アイコンをクリックして、実行します。

  • イメージ
  •  「エラー:preLaunchTask 'build' が見つかりませんでした。」と表示されます。 タスクランナーを構成するように表示されるので、「タスクランナーの構成」をクリックします。

  • イメージ
  •  リストの中から、「.NET Core」をクリックします。

  • イメージ
  •  tasks.json が表示されます。command キーの値を「dotnet」から「dotnet build」に修正して保存します。 その後、再度、緑の三角アイコンをクリックして、実行します。

  • イメージ
  •  もしも、「エラー:Run 'Debug: Download .NET Core Debugger' in the Command Palette or open a... 」と表示される場合は、 「.NET Core Debugger」をダウンロード&インストールします。

  • イメージ
  •  メニューバー→「表示」→「コマンドパレット」をクリックします。

  • イメージ
  •  検索欄に「.NET Core Debugger」と入力するか、リストから探してクリックします。 「Debug: Download .NET Core Debugger」という項目です。

  • イメージ
  •  ダウンロード&インストールが終わるまで待ちます。 この時、「エラー:command 'csharp.downloadDebugger' not found」と表示されていますが、「閉じる」を押します。 その後、再度、緑の三角アイコンをクリックして、実行します。

  • イメージ
  •  デバッグコンソールに、文字列が出力されれば成功です!


追記

  •  mono と .NET Core 上で、それぞれ動かしてみたのですが、Visual Studio Code 上で実験している時に、 mono Runtime をダウンロード&インストールしているところを見て、それぞれ、本当に別々の実行基盤で動いているよね~?? と疑心暗鬼になったので、確認してみました。

  •  Mono & MonoDevelop
  • イメージ

  •  .NET Core 2 Preview 2 & VSCode
  • イメージ

  •  共通言語ランタイム環境を取得する RuntimeEnvironment クラスを使って確認しました。 System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()

  •  .NET Framework 的なバージョンが一緒なのが気になるけど、偶然かな~??あやしい(^_^.) ま、いっか。


まとめ

  •  Ubuntu 上に、Mono で動かす場合、.NET Core で動かす場合、のそれぞれの環境を構築して実行してみました。 やはり、操作性、利便性は Windows の Visual Studio にはかないません。 ただし、それは当たり前のことで、今がスタートアップのステップ段階だからです。そのうち、Linux 側も、より便利に進化していくのだと思います。

  •  これを調べるのに苦労した甲斐あって、Linux 上で VB.NET をビルドして、できたプログラムが実行できた時は、とても感激でした(´Д⊂ヽ! それに、Windows をずっと触っているから Windows に詳しくなるように、Linux をずっと触っていれば、そのうち Linux も詳しくなるでしょう! とポジティブに捉えることにします。

  •  最後まで記事を読んでいただき、ありがとうございました。