はじめに
これは、Visual Basic Advent Calendar 2017の4日目の記事となります。
Windows 10 Fall Creators Updateにて、Linux向けのバイナリプログラムをそのまま実行できるようになるWSL(Windows Subsystem for Linux)機能が正式に提供されるようになりました。
.NET Coreは、LinuxやMacOS上で動かせるのが大きな特徴です。.NET Core 1ではVisual Basicがサポートされず、多くのVisual Basic開発者は落胆しましたが、.NET Core 2では一転して、Visual Basicがサポートされるようになりました。
そこで、Macは持ち合わせていないのでWSL上で「Hello World」を表示するまでをやってみます。
WSLのインストール
自分はUbuntuに馴染みがあるので、Windowsアプリのストアから「Ubuntu」をインストールしました。WSLを動かすには、Windows側の「Windowsの機能の有効化または無効化」画面で「Windows Subsystem for Linux」を有効化させる必要があります。
インストールについては、次のサイトを参考にしてください。
Windows10にUbuntuをインストールする方法(Fall Creators Update版)
バージョン確認
~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
.NET Core 2のインストール
次のサイトを参考にインストールしていきます。
1.dotnetプロダクトフィードを追加する
.NETのインストールを開始するには、Microsoft署名キーを登録し、Microsoft Productフィードを追加する必要があります。これはマシンごとに1回だけ行う必要があります。
信頼できるMicrosoft署名キーを登録します。
次のコマンドを実行します。
:~$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 983 100 983 0 0 268 0 0:00:03 0:00:03 --:--:-- 269
~$ sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
[sudo] password for :
Microsoft Productフィードを登録する
Ubuntuのバージョンによって違うので、Get started with .NET in 10 minutesで確認してください。今回は「Ubuntu 16.04 / Linux Mint 18」で登録しています。
次のコマンドを実行します。
~$ sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > /etc/apt/sources.list.d/dotnetdev.list'
2.NET SDKをインストールする
.NET SDKをインストールします。
次のコマンドを実行します。
~$ sudo apt-get update
~$ sudo apt-get install dotnet-sdk-2.0.2
[sudo] password for :
アプリを作成する
テンプレート「Hello World!」が用意されています。
デフォルトはC#で作成されるので、オプションに「-lang vb」を付けてVisual Basic で作成させます。
dotnet new コマンド
~$ dotnet new console -lang vb -o myAppVB
The template "Console Application" was created successfully.
Processing post-creation actions...
Running 'dotnet restore' on myAppVB/myAppVB.vbproj...
Restoring packages for /home/yaju/myAppVB/myAppVB.vbproj...
Generating MSBuild file /home/yaju/myAppVB/obj/myAppVB.vbproj.nuget.g.props.
Generating MSBuild file /home/yaju/myAppVB/obj/myAppVB.vbproj.nuget.g.targets.
Restore completed in 1.07 sec for /home/yaju/myAppVB/myAppVB.vbproj.
Restore succeeded.
中身を確認する
~$ ls
myApp myAppVB
~$ dir
myApp myAppVB
~$ cd myAppVB
~/myAppVB$ dir
myAppVB.vbproj obj Program.vb
~/myAppVB$ more Program.vb
Imports System
Module Program
Sub Main(args As String())
Console.WriteLine("Hello World!")
End Sub
End Module
アプリを実行する
次のコマンドを実行します。
~/myAppVB$ dotnet run
Hello World!
アプリを編集する
vi が標準で入っているので、メッセージを変更します。
viエディタの使い方
~/myAppVB$ vi Program.vb
~/myAppVB$ more Program.vb
Imports System
Module Program
Sub Main(args As String())
Console.WriteLine("Hello World! VB.NET on .NET Core!")
End Sub
End Module
~/myAppVB$ dotnet run
Hello World! VB.NET on .NET Core!
最後に
開発自体はWindowsのVisual Studioで行って、動作確認はWSL上でも確認するのがいいのかな。
最近は、Jupyter nootbookを使えば、ブラウザ上で編集とターミナルで動作させることができますので、次回はこれを記事にしてみたいと思います。