ここで紹介するプログラムは無意味のきわみです。
どっちかというと、プログラム自体より、コマンドラインコンパイルの引数にご注目ください。
コマンドラインアプリケーションからファイルオープンダイアログボックスを呼び出すというものです。
本気で無意味だよなあ。


Option Explicit
Option Strict

Imports System
Imports System.Windows.Forms

Public Module fuga
Friend WithEvents OpenFileDialog1 As System.Windows.Forms.OpenFileDialog

Sub Main(ByVal cmdArgs() As String)

OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog

If OpenFileDialog1.ShowDialog() <> DialogResult.Cancel Then
Console.WriteLine(OpenFileDialog1.FileName)
End If
End Sub
End Module

このソースコードを、そのまま、

C:\usr\VBDialog>vbc /t:exe vbdialog.vb
なんてやってもコンパイルできません。
ソースコード内で定義している「System.Windows.Forms」を拾ってくることができないからです。
そこで、どの名前空間を使うか、コンパイラに明示的に指示してあげます。

C;\usr\VBDialog>vbc /t:exe /debug+ /reference:System.dll,System.Windows.Forms.dll vbdialog.vb
「/reference:」に続く*.dllは「,」で続けますが、見やすいように半角空白を入れると、コンパイルできません。コンパイラは半角空白後の*.dllを新しいスイッチとして認識するからです。