Causes the compiler to make all type information from the specified file(s) available to the project you are currently compiling.




Required. Comma-delimited list of files that contain metadata but do not contain assembly manifests. File names containing spaces should be surrounded by quotation marks (" ").


The files listed by the fileList parameter must be created with the -target:module option, or with another compiler's equivalent to -target:module.

All modules added with -addmodule must be in the same directory as the output file at run time. That is, you can specify a module in any directory at compile time, but the module must be in the application directory at run time. If it is not, you get a TypeLoadException error.

If you specify (implicitly or explicitly) any-target (Visual Basic) option other than -target:module with -addmodule, the files you pass to -addmodule become part of the project's assembly. An assembly is required to run an output file that has one or more files added with -addmodule.

Use -reference (Visual Basic) to import metadata from a file that contains an assembly.


The -addmodule option is not available from within the Visual Studio development environment; it is available only when compiling from the command line.


The following code creates a module.

' t1.vb
' Compile with vbc /target:module t1.vb.
' Outputs t1.netmodule.

Public Class TestClass
    Public i As Integer
End Class

The following code imports the module's types.

' t2.vb
' Compile with vbc /addmodule:t1.netmodule t2.vb.
Option Strict Off

Namespace NetmoduleTest
    Module Module1
        Sub Main()
            Dim x As TestClass
            x = New TestClass
            x.i = 802
        End Sub
    End Module
End Namespace

When you run t1, it outputs 802.

See also