🛺

.NET 5 でも VB.NET の開発ができるらしいのでやってみた

2021/01/11に公開2

仕事で VB.NET を触ることになったのですが
私の開発環境は Intel Mac (Big Sur 11.1) です。

しかし、調べてみると .NET 5 でも VB.NET はサポートされているようです。
なのでやってみました。

.NET 5 って何?

Microsoft の .NET フレームワーク周りの経緯はめちゃくちゃ複雑なので
細かい話は割愛しますが、ざっくりこんな感じです。

  • .NET Framework
    • 最新版のバージョンは .NET Framework 4.8
    • Windows プラットフォームで動作するフレームワーク
  • .NET Core
    • 最新版のバージョンは .NET Core 3.1
    • オープンソースかつクロスプラットフォームなフレームワーク
  • .NET 5
    • .NET Core の次のステップとして新たにバージョニングされたもの
    • ナンバリングが .NET Framework 4.x 系と紛らわしいので 4 が飛んだ
    • とりあえず "今のところは" これが最新で今後も .NEt 6, 7... としていく予定とだけ認識しておけばOK

このあたりはマジで .NET Framework だの .NET Standard だの
Mono だの Xamarin だのと歴史的な経緯や状況がフクザツなので
ガッツリこの辺りを追いかけようとしない限り調べ始めると沼です。
.NET 5 の直近の経緯はこのブログ記事あたりがわかりやすいですね。

.NET 5 のインストール

docker で環境を用意してもよかったのですが
今回はローカルに開発環境を用意します。
ので、Microsoftのサイトから .NET 5 のSDKをダウンロードしてきてインストールします。
2021/1/11 時点の最新版は .NET 5 SDK 5.0.101 です。

インストールしたらバージョン確認

.NET 5 は .NET Core と同様に CLI ツールとして dotnet コマンドが使えます。

dotnet --version
5.0.101

インストールできてますね。

dotnet new コマンドで VB.NET の conosole アプリを作成

dotnet new コマンドでプロジェクトを作成できます。
--language オプションで言語を C#, F#(一部のテンプレートのみ), VB(一部のテンプレートのみ) から選べるので指定してプロジェクト作成を行います。

mkdir myApp
cd myApp
dotnet new console --output . --language VB
# もしくは dotnet new console --output myApp --language VB

別に今回重要な情報でもないのですが、
上記 dotnet new コマンドを発行するとこんな感じの出力がでますね。

.NET 5.0 へようこそ!
---------------------
SDK バージョン: 5.0.101

テレメトリ
---------
.NET ツールは、エクスペリエンスの向上のために利用状況データを収集します。データは Microsoft によって収集され、コミュニティと共有されます。テレメトリをオプトアウトするには、好みのシェルを使用して、DOTNET_CLI_TELEMETRY_OPTOUT 環境変数を '1' または 'true' に設定できます。

.NET CLI ツールのテレメトリの詳細をご覧ください: https://aka.ms/dotnet-cli-telemetry

----------------
ASP.NET Core の HTTPS 開発証明書をインストールしました。
証明書を信頼するには、'dotnet dev-certs https --trust' (Windows および macOS のみ) を実行します。
HTTPS の詳細については、https://aka.ms/dotnet-https を参照してください
----------------
最初のアプリを作成するには、https://aka.ms/dotnet-hello-world を参照してください
最新情報については、https://aka.ms/dotnet-whats-new を参照してください
ドキュメントを探索するには、https://aka.ms/dotnet-docs を参照してください
GitHub で問題の報告とソースの検索を行うには、https://github.com/dotnet/core を参照してください
'dotnet --help' を使用して使用可能なコマンドを確認するか、https://aka.ms/dotnet-cli にアクセスしてください
--------------------------------------------------------------------------------------
Getting ready...
The template "Console Application" was created successfully.

Processing post-creation actions...
Running 'dotnet restore' on ./myApp.vbproj...
  復元対象のプロジェクトを決定しています...
  myApp/myApp.vbproj を復元しました (74 ms)。
Restore succeeded.

.gitignore はどうするか

本筋とは外れてしまうのですが、
.gitignore は gitignore.io で "DotNetCore" を選択して生成されたものを使っておけばOKと思います。

.gitignore
# Created by https://www.toptal.com/developers/gitignore/api/dotnetcore
# Edit at https://www.toptal.com/developers/gitignore?templates=dotnetcore

### DotnetCore ###
# .NET Core build folders
bin/
obj/

# Common node modules locations
/node_modules
/wwwroot/node_modules

# End of https://www.toptal.com/developers/gitignore/api/dotnetcore

生成されたコードを確認する

上記の .gitignore が有効な状態であれば、git 管理の対象になるファイルは2つです。

vbdotnet_practice01.vbproj
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <RootNamespace>vbdotnet_practice01</RootNamespace>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

</Project>
Program.vb
Imports System

Module Program
    Sub Main(args As String())
        Console.WriteLine("Hello World!")
    End Sub
End Module

Visual Studio Code で VB.NET の開発をする

VB.NET をやるなら Visual Studio Community なり Visual Studio for Mac なりを
使う方がいいのですが、簡易に開発する程度なら VSCode でも十分です。
この拡張機能を入れておけば開発しやすいと思います。

生成されたプロジェクトを実行する

dotnet run コマンドで実行できます。

$ dotnet run
Hello World!

できましたね。
おつかれさまでした。

今回のリポジトリはこちらです。
https://github.com/JUNKI555/vbdotnet_practice01

Discussion

tfukumoritfukumori

気になったのでコメントさせていただきます。

今のタイミングで.NET 5でVB.NETにかかわる業務を行うということであれば、基本的にはWindows向けデスクトップ系アプリケーション(WinForms or WPF)を扱うということが多そうに思えます。

もしそうであれば、WindowsのVisual Studio 2019で開発したほうが何かと効率が良いのではないかと思います。

詳細は後述のリンクに記載がありますが、現時点では.NET 5のVB.NETでサポートされているのは以下となります。
・コンソールアプリケーション
・WPFアプリケーション(Windowsで動作)
・WinFormsアプリケーション(Windowsで動作)
・クラスライブラリ(DLL)
・テストプロジェクト

ただ、Intel Macと記載がございますのでバックエンド部分やコンソールアプリケーションを作成する目的である、ということであれば見当違いのコメントとなりますので申し訳ありません。

.NET 5 での Visual Basic サポート方針について最初の発表

https://devblogs.microsoft.com/vbteam/visual-basic-support-planned-for-net-5-0/

.NET 5 発表時の Visual Basic サポートに関する公式ブログ

https://devblogs.microsoft.com/dotnet/visual-basic-winforms-apps-in-net-5-and-visual-studio-16-8/

公式ドキュメントでの Visual Basic サポートに関する記述

https://docs.microsoft.com/ja-jp/dotnet/core/dotnet-five#visual-basic-updates

北山淳也北山淳也

@tfukumori さん
コメントありがとうございます!
そうですね、基本的にはWindowsのVisual Studioがいいと私も思います。
今回はコンソールアプリケーションが作れればよかったので記事の .NET 5 で実施しました 👍