# <al>

[This is preliminary documentation and subject to change.]

Wraps `al.exe`, the assembly linker for the .NET Framework.

All specified sources will be embedded using the `/embed` flag. Other source types are not supported.

### Parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
output | file | The name of the output file for the assembly manifest. | True
target | string | The target type (one of `lib`, `exe`, or `winexe`). | True
algid | string | Specifies an algorithm (in hexadecimal) to hash all files in a multifile assembly except the file that contains the assembly manifest. The default algorithm is CALG_SHA1. | False
company | string | Specifies a string for the Company field in the assembly. | False
configuration | string | Specifies a string for the Configuration field in the assembly. | False
copyright | string | Specifies a string for the Copyright field in the assembly. | False
culture | string | The culture string associated with the output assembly. The string must be in RFC 1766 format, such as "en-US". | False
delaysign | DelaySign | Specifies whether the assembly should be partially signed. The default is NAnt.DotNet.Types.DelaySign.NotSet. | False
description | string | Specifies a string for the Description field in the assembly. | False
evidence | file | Security evidence file to embed. | False
fileversion | string | Specifies a string for the File Version field in the assembly. | False
flags | string | Specifies a value (in hexadecimal) for the Flags field in the assembly. | False
keycontainer | string | Specifies a container that holds a key pair. | False
keyfile | file | Specifies a file (filename) that contains a key pair or just a public key to sign an assembly. | False
main | string | Specifies the fully-qualified name (class.method) of the method to use as an entry point when converting a module to an executable file. | False
product | string | Specifies a string for the Product field in the assembly. | False
productversion | string | Specifies a string for the Product Version field in the assembly. | False
template | file | Specifies an assembly from which to get all options except the culture field. | False
title | string | Specifies a string for the Title field in the assembly. | False
trademark | string | Specifies a string for the Trademark field in the assembly. | False
version | string | Specifies version information for the assembly. The format of the version string is `major`.`minor`.`build`.`revision`. | False
win32icon | file | Icon to associate with the assembly. | False
win32res | file | Inserts a Win32 resource (.res file) in the output file. | 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
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

### 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
supportstemplate | bool | Indicates whether the assembly linker for a given target framework supports the "template" option, which takes an assembly from which to get all options except the culture field. The default is true. | 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:

#### <modules>

One or more modules to be compiled into an assembly.

#### </modules>

#### <sources>

The set of resources to embed.

#### </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

- Create a library containing all icon files in the current directory.

                  <al output="MyIcons.dll" target="lib">
                      <sources>
                          <include name="*.ico" />
                      </sources>
                  </al>

- Create an executable assembly manifest from modules.

                  <al output="Client.exe" target="exe" main="Program.Main">
                      <modules>
                          <include name="Client.netmodule" />
                          <include name="Common.netmodule" />
                      </modules>
                  </al>

### Requirements

Assembly: NAnt.DotNetTasks (0.91.3881.0)