2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【VB.NET】拡張コンパイラModVBの紹介(インストール編)

Last updated at Posted at 2022-12-22

はじめに

これは、Visual Basic Advent Calendar 2022の22日目の記事となります。

ModVBとは

ModVB とは、新しい機能を利用するために VSIX と対応する NuGet パッケージをインストールする無料のスタンドアロン VB.NET "mod" です。

mod の意味には、修正版 (modified)、modern (modern)、modulo operation (modulo) が含まれます。
(VB + ModVB) Mod VB = ModVB

ModVBの作者について

Anthony D. Green は、Microsoft のマネージ プログラミング言語チームで 8 年の経験があります。主に Roslyn コンパイラ チームのプログラムマネージャーです。13歳で VB4 でプログラミングを始め、ModVB の最初のパブリック ベータ版がリリースされたときは 37 歳でした。

「Microsoft時代には何人もの日本人VB MVPに会いましたが、少なくとも一人はいつも和菓子を持ってきていました。」と述べています。

VB.NETとC#の違いを徹底解説

「VB.NETとC#の違いを徹底的に解説」を書いたとき、私は文字通り5、6週間連続で自分のアパートに引きこもり、食べることと書くことしかしませんでした。

インストール方法

環境

  • Windows 11 x64 Home
  • Visual Studio 2022 Community

ModVB用スタンドアロン環境を作成

この手順は、プラグインを個別に管理できるように、ModVB がインストールされている環境とインストールされていない環境を分離するために使用されます。
※環境を特に気にしない方は飛ばして構いません。

  1. Visual Studio 2022のメニューから[ツール] → [コマンド ライン] → [開発者コマンドプロンプト]を起動します。
  2. コマンドプロンプトの実行 devenv /rootSuffix ModVB

ModVB用のショートカットを作成しておくといいでしょう。

"C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.exe" /rootSuffix ModVB

image.png

VSIXソースを追加

メニューからツール→オプションを開き、拡張機能の「ModVB」を見つけます。

「Apply」ボタンをクリックします
image.png

NuGetソースを追加

続けてオプションダイアログの[NuGet パッケージマネージャー] → [パッケージ ソース]を見つけます。

右側に新しいパッケージ ソースを追加し、それがチェックされていることを確認します

[更新] → [OK] の順にクリックします。
image.png

ModVB 言語サービス拡張機能の追加

  1. メニューから[拡張機能]→[拡張機能の管理]を選択します。
  2. 左側のオンライン→[ModVB]を選択します。
  3. 「ModVB Language Service (Built with Roslyn)」をダウンロードしてインストールします。
  4. Visual Studio を再起動して、拡張機能のインストールを完了します。

image.png

ModVBの機能予定

現時点(2022/12/22)では、Wave 1は今年の夏にリリースされました。WAVE 2が12月予定とのことでしたが、まだ未リリースです。

バージョン 機能内容
Wave 1 JSON リテラルとパターン マッチングを中心に展開
Wave 2 XML リテラルの強化
Wave 3 不明 Wave 2 と Wave 4の中間の機能強化
Wave 4 Async ストーリー強化
Wave 5 LINQ のより深い統合

ModVBの使い方

ModVB コンパイラを有効にする

  1. 新しい VB プロジェクトを作成します。例 .NET 7.0 コンソールアプリケーション
  2. プロジェクト参照を右クリックし、[NuGet パッケージの管理] を選択します。
  3. 右上のドロップダウン ボックスで、ModVB をパッケージ ソースとして選択します。
  4. 「プレリリースを含める」にチェックを入れます。
  5. 「ModVB.Compilers.Toolset」をインストールします。このパッケージは ModVB コンパイラです。

image.png

JSON 定数とパターンマッチング

JSON 変数のタイプを選択します。
対応する NuGet パッケージをインストールする。
JSON 関連の構文を使用する前に、まず JSON 定数に使用するライブラリを選択する必要があります。現在利用できるのはNewtonsoft.JsonSystem.Text.Jsonです。

  • Newtonsoft.Json を選択した場合は、インストールする必要があります。
  • System.Text.Json を選択した場合は、インストールする必要があります。

デフォルトでは、JSON 定数とパターン マッチングは、Newtonsoft.Jsonで定義された型を使用します。それ以外のライブラリを選択した場合は、コンパイル定数を定義してデフォルトの型を変更する必要があります。

「ModVB.Compilers.Toolset」をインストールと同じ手順で「Newtonsoft.Json」をインストールします。
image.png

自動的に推測される JSON 型を指定します

プロジェクトがあると仮定すると、上記の両方のライブラリがインストールされます。
デフォルトでは、JsonオブジェクトはNewtonsoft.Json.Linq.JObjectです。

image.png

デフォルトでSystem.Text.Jsonを使用する場合は、プロジェクト ファイルにコンパイル定数を定義する必要があります。

<PropertyGroup>
  <DefineConstants>DEFAULT_JSON_OBJECT_TYPE = "System.Text.Json.Nodes.JsonObject",DEFAULT_JSON_ARRAY_TYPE = "System.Text.Json.Nodes.JsonArray"</DefineConstants>
</PropertyGroup>

JSON 変数の型ごとに構築する

では、プロジェクトで同時に 2 つの JSON 型を使用したい場合はどうなるでしょうか?
それもできます。コンパイラに自動的に型を推測させるのではなく、JSON 変数の型を記述する必要があるだけです。

Dim targetTypeJson As System.Text.Json.Nodes.JsonNode = {"A": 12345}

最後に

Visual Basic Advent Calendar 2022では記事に空きがあるので、使い方については別記事とします。

変数にJSonの値をセットするところでBC37324エラーで赤線になってしまって何が悪いんだろうと見直してみたら、通常の「Newtonsoft.Json」をNuGetでインストールしてました。ここではModVB用の「Newtonsoft.Json」をインストールする必要がありました。これをインストールしたら赤線は出なくなりました。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?