Visual Basicには常に独自のライブラリある。このライブラリのクラスは通常、3つのカテゴリのうちの1つに分類される。
- VB言語サポート
- アップグレードされたVB 6アプリケーションに必要なレガシー機能
- 便利な機能
言語サポートは動的型付けなどの処理を行う(C#にも同様のライブラリがある)。これらは直接使用されるものではないので、それらについて言うことはそれ以上ない。同様に、レガシー機能は非常に古いアプリケーションにとってのみ重要である。
便利な機能はこの記事のトピックである。この機能はもともとVBチームによって開発され、それによって、より速いアプリケーション開発が可能になった。たとえば、ディレクトリをコピーしたいとする。通常の.NETコードを使用すると、ディレクトリを移動して各ファイルをコピーし、再帰的にサブディレクトリを処理する再帰関数を作成する必要がある。
VBを使用する場合(またはC#からVBのライブラリを参照する場合)は、単にFileSystem.CopyDirectoryを呼び出すだけでよい。初心者にとって簡単であるだけでなく、プロにとってこれらの抽象化を使用することで多くの時間を節約することができる。
これらのメソッドのいくつかはOS機能を公開しており、.NETライブラリにはないものである。ファイルを削除するときに、ファイルをWindowsのごみ箱に送りたいとする。Visual Basicライブラリを使用せずに、約150行のWin32 p/invokeコードを書く必要がある。Windowsのファイル操作のプログレスバーを表示したい場合も同様である。
これらのメソッドはメインの.NETライブラリにあったはずだと言う人もいるであろう。しかし、何らかの理由でそれらはMicrosoft.VisualBasicライブラリに分離された。そしてVBは優先度が低いと考えられていたため、その多くは.NET Coreの初期リリースには含まれていなかった。
.NET Core 3.0では、これらの欠けている機能の多くが移植されているが、それらすべてがクロスプラットフォームになるわけではない。シェル操作(ごみ箱、ファイルのプログレスバーなど)はLinuxでは使用できないため、PlatformNotSupported例外がスローされる。
FileIO機能と共にTextFieldParserがある。これはRFC準拠のCSVパーサで、固定幅ファイルも処理できる。
詳しくは、File IOのプルリクエストを参照してください。