# <vbc>

[This is preliminary documentation and subject to change.]

Compiles Visual Basic.NET programs.

Note: In order to have <vbc> task generate manifest resource names that match those generated by Microsoft Visual Studio.NET, the value of the `prefix` attribute of the <`resources`> element should match the "Root namespace" of the VB.NET project, and the value of the `dynamicprefix` attribute should be set to "false".

### Parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
baseaddress | string | The preferred base address at which to load a DLL. The default base address for a DLL is set by the .NET Framework common language runtime. | False
debug | DebugOutput | Specifies the type of debugging information generated by the compiler. The default is `None`. | False
doc | file | The name of the XML documentation file to generate. Only supported when targeting .NET 2.0 (or higher). | False
imports | string | Deprecated. Specifies whether the `/imports` option gets passed to the compiler. | False
nostdlib | bool | Instructs the compiler not to reference standard libraries (system.dll and VBC.RSP). The default is false. Only supported when targeting .NET 2.0 (or higher). | False
optioncompare | string | Specifies whether `/optioncompare` option gets passed to the compiler. | False
optionexplicit | bool | Specifies whether the `/optionexplicit` option gets passed to the compiler. The default is false. | False
optionoptimize | bool | Specifies whether the `/optimize` option gets passed to the compiler. The default is false. | False
optionstrict | bool | Specifies whether the `/optionstrict` option gets passed to the compiler. The default is false. | False
platform | string | Specifies which platform version of common language runtime (CLR) can run the output file. | False
removeintchecks | bool | Specifies whether the `/removeintchecks` option gets passed to the compiler. The default is false. | False
rootnamespace | string | Specifies whether the `/rootnamespace` option gets passed to the compiler. | False
output | file | The output file created by the compiler. | True
target | string | Output type. Possible values are `exe`, `winexe`, `library` or `module`. | True
define | string | Define conditional compilation symbol(s). | False
delaysign | DelaySign | Specifies whether to delay sign the assembly using only the public portion of the strong name key. The default is `NotSet`. | False
failonerror | bool | Determines if task failure stops the build, or is just reported. The default is true. | False
if | bool | If true then the task will be executed; otherwise, skipped. The default is true. | False
keycontainer | string | Specifies the key pair container used to strongname the assembly. | False
keyfile | file | Specifies a strong name key file. | False
main | string | Specifies which type contains the Main method that you want to use as the entry point into the program. | False
nowarn | string | Deprecated. Specifies a comma-separated list of warnings that should be suppressed by the compiler. | False
rebuild | bool | Instructs NAnt to recompile the output file regardless of the file timestamps. | False
timeout | int | The maximum amount of time the application is allowed to execute, expressed in milliseconds. Defaults to no time-out. | False
unless | bool | Opposite of `if`. If false then the task will be executed; otherwise, skipped. The default is false. | False
verbose | bool | Determines whether the task should report detailed build log messages. The default is false. | False
warnaserror | bool | Instructs the compiler to treat all warnings as errors. The default is false. | False
win32icon | file | Icon to associate with the application. | False
win32res | file | Specifies a Win32 resource file (.res). | False

### Framework-configurable parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
exename | string | The name of the executable that should be used to launch the external program. | False
managed | ManagedExecution | Specifies whether the external program should be treated as a managed application, possibly forcing it to be executed under the currently targeted version of the CLR. | False
nostdlib | bool | Instructs the compiler not to reference standard libraries (system.dll and VBC.RSP). The default is false. Only supported when targeting .NET 2.0 (or higher). | False
supportsdelaysign | bool | Indicates whether the compiler for a given target framework supports the "delaysign" option. The default is false. | False
supportsdocgeneration | bool | Specifies whether the compiler for the active target framework supports generation of XML Documentation file. The default is false. | False
supportskeycontainer | bool | Indicates whether the compiler for a given target framework supports the "keycontainer" option. The default is false. | False
supportskeyfile | bool | Indicates whether the compiler for a given target framework supports the "keyfile" option. The default is false. | False
supportsnostdlib | bool | Specifies whether the compiler for the active target framework supports NOT referencing standard libraries (system.dll and VBC.RSP). The default is false. | False
supportsnowarnlist | bool | Indicates whether the compiler for a given target framework supports a command line option that allows a list of warnings to be suppressed. The default is false. | False
supportspackagereferences | bool | Indicates whether package references are supported by compiler for a given target framework. The default is false. | False
supportsplatform | bool | Specifies whether the compiler for the active target framework supports limiting the platform on which the compiled code can run. The default is false. | False
supportswarnaserrorlist | bool | Indicates whether the compiler for a given target framework supports the "warnaserror" option that takes a list of warnings. The default is false. | False
useruntimeengine | bool | Deprecated. Specifies whether the external program is a managed application which should be executed using a runtime engine, if configured. The default is false. | False

### Nested Elements:

#### <imports>

The namespaces to import.

#### </imports>

#### <warnaserror>

Controls which warnings should be reported as errors.

#### </warnaserror>

#### <nowarn>

Specifies a list of warnings that you want the compiler to suppress.

##### <warning>

Represents a compiler warning.

### Parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
number | string | A warning number, or comma-separated list of warnings, that you want the compiler to suppress or report. | True
if | bool | If true then the element will be processed; otherwise, skipped. The default is true. | False
unless | bool | If true then the element will be skipped; otherwise, processed. The default is false. | False

##### </warning>

#### </nowarn>

#### <lib>

Deprecated. Additional directories to search in for assembly references.

#### </lib>

#### <references>

Reference metadata from the specified assembly files.

#### </references>

#### <pkg-references>

Specifies list of packages to reference.

##### <package>

Represents a package.

### Parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
name | string | Name of the package to reference. Multiple package can be specified with a single element as a semi-colon separated list of package names. | True
if | bool | Indicates if the package should be passed to the task. If true then the package will be passed; otherwise, skipped. The default is true. | False
unless | bool | Indicates if the package should not be passed to the task. If false then the package will be passed; otherwise, skipped. The default is false. | False

##### </package>

#### </pkg-references>

#### <resources>

Resources to embed.

#### </resources>

#### <modules>

Link the specified modules into this assembly.

#### </modules>

#### <sources>

The set of source files for compilation.

#### </sources>

#### <arg>

The command-line arguments for the external program.

Represents a command-line argument.

When passed to an external application, the argument will be quoted when appropriate. This does not apply to the `line` parameter, which is always passed as is.

### Parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
dir | directory | The value for a directory-based command-line argument; will be replaced with the absolute path of the directory. | False
file | file | The name of a file as a single command-line argument; will be replaced with the absolute filename of the file. | False
if | bool | Indicates if the argument should be passed to the external program. If true then the argument will be passed; otherwise, skipped. The default is true. | False
line | string | List of command-line arguments; will be passed to the executable as is. | False
path | <path> | The value for a PATH-like command-line argument; you can use `:` or `;` as path separators and NAnt will convert it to the platform's local conventions, while resolving references to environment variables. | False
unless | bool | Indicates if the argument should not be passed to the external program. If false then the argument will be passed; otherwise, skipped. The default is false. | False
value | string | A single command-line argument; can contain space characters. | False

### Nested Elements:

#### <path>

Sets a single command-line argument and treats it like a PATH - ensures the right separator for the local platform is used.

#### </path>

### Examples

- A single command-line argument containing a space character.

      <arg value="-l -a" />

- Two separate command-line arguments.

      <arg line="-l -a" />

- A single command-line argument with the value `\dir;\dir2;\dir3` on DOS-based systems and `/dir:/dir2:/dir3` on Unix-like systems.

      <arg path="/dir;/dir2:\dir3" />

#### </arg>

### Examples

- Example build file using this task.

      <project name="Hello World" default="build" basedir=".">
        <property name="basename" value="HelloWorld" />
        <target name="clean">
           <delete file="${basename}-vb.exe" failonerror="false" />
           <delete file="${basename}-vb.pdb" failonerror="false" />
        </target>
        <target name="build">
           <vbc target="exe" output="${basename}-vb.exe" rootnamespace="${basename}">
              <imports>
                  <import namespace="System" />
                  <import namespace="System.Data" />
              </imports>
              <sources>
                 <include name="${basename}.vb" />
              </sources>
              <resources prefix="${basename}" dynamicprefix="true">
                  <include name="**/*.resx" />
              </resources>
              <references>
                  <include name="System.dll" />
                  <include name="System.Data.dll" />
              </references>
           </vbc>
        </target>
        <target name="rebuild" depends="clean, build" />
      </project>

### Requirements

Assembly: NAnt.DotNetTasks (0.91.3881.0)