Updated: July 20, 2015

For the latest documentation on Visual Studio 2017 RC, see Visual Studio 2017 RC Documentation.

Specifies the class or module that contains the Sub Main procedure.


Required. A full qualification to the class or module that contains the Sub Main procedure to be called when the program starts. This may be in the form /main:module or /main:namespace.module.

Use this option when you create an executable file or Windows executable program. If the /main option is omitted, the compiler searches for a valid shared Sub Main in all public classes and modules.

See Main Procedure in Visual Basic for a discussion of the various forms of the Main procedure.

When location is a class that inherits from Form, the compiler provides a default Main procedure that starts the application if the class has no Main procedure. This lets you compile code at the command line that was created in the development environment.

    ' Compile with /r:System.dll,SYSTEM.WINDOWS.FORMS.DLL /main:MyC
    Public Class MyC
        Inherits System.Windows.Forms.Form
    End Class

To set /main in the Visual Studio integrated development environment

  1. Have a project selected in Solution Explorer. On the Project menu, click Properties.

    For more information, see Introduction to the Project Designer.

  2. Click the Application tab.

  3. Make sure the Enable application framework check box is not checked.

  4. Modify the value in the Startup object box.

The following code compiles T2.vb and T3.vb, specifying that the Sub Main procedure will be found in the Test2 class.

vbc t2.vb t3.vb /main:Test2  

Visual Basic Command-Line Compiler
/target (Visual Basic)
Sample Compilation Command Lines
NIB: Visual Basic Version of Hello, World
Main Procedure in Visual Basic