Console Applications
Menus with Console.ReadKey(True).Key, progress indicators, Console.SetCursorPosition, Console.CancelKeyPress (Ctrl+C).
Use System.CommandLine or Spectre.Console (rich tables and prompts) for advanced CLIs.
Generic Host (Microsoft.Extensions.Hosting) gives you DI, configuration, and logging in console apps.
Module Program
Function Main(args As String()) As Integer ' returning Integer sets the exit code
Console.Title = "Inventory Tool"
Console.ForegroundColor = ConsoleColor.Green
Console.WriteLine("=== Inventory Tool ===")
Console.ResetColor()
If args.Length = 0 Then
Console.Error.WriteLine("Usage: inventory <command> [options]")
Return 1
End If
Select Case args(0).ToLower()
Case "list" : ListItems()
Case "add"
Console.Write("Item name: ")
Dim name = Console.ReadLine()
Console.Write("Quantity: ")
Dim qty As Integer
While Not Integer.TryParse(Console.ReadLine(), qty)
Console.Write("Please enter a number: ")
End While
AddItem(name, qty)
Case Else
Console.WriteLine($"Unknown command: {args(0)}")
Return 2
End Select
Return 0
End Function
Sub ListItems()
Console.WriteLine($"{"Item",-15}{"Qty",5}")
Console.WriteLine(New String("-"c, 20))
End Sub
Sub AddItem
…