---
name: "ilgac"
section: "1"
platform: "linux"
package: "pnet-compiler"
version: "0.6.12-3"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/ilgac"
---

# ilgac(1)

manage the Portable.NET assembly cache

## NAME

ilgac - manage the Portable.NET assembly cache

## SYNOPSIS

**ilgac** \[ options \] *\[ assembly \[ version \] \]*

## DESCRIPTION

**Ilgac** manages the Portable.NET assembly cache, allowing library assemblies to be installed, uninstalled, or listed.

## OPTIONS

- **-i, --install**

  Install the specified assemblies into the cache.  See the section "INSTALLING ASSEMBLIES" below for more information.

- **-u, --uninstall**

  Uninstall the specified assemblies from the cache.  See the section "UNINSTALLING ASSEMBLIES" below for more information.

- **-l, --list**

  List the contents of the assembly cache.  See the section "LISTING ASSEMBLIES" below for more information.

- **-f, --force**

  Force installation to proceed even if there is an existing assembly with the specified name and version.

- **-d, --default**

  Install the assembly as the fallback default version.  When used with \`**--list**', this will list the fallback default versions in addition to the regular assembly versions.

- **-L, --link**

  Create a symbolic link within the cache rather than copying the assembly.

- **-S DIR, --subdir DIR**

  Specify a resource sub-directory (e.g. "de").

- **-c DIR, --cache DIR**

  Specify the location of the assembly cache.

- **-s, --silent**

  Do not print status messages.

- **--help**

  Print a usage message for the **ilgac** program.

- **-v, --version**

  Print the version of the **ilgac** program.

- **--**

  Marks the end of the command-line options, and the beginning of the input filenames.  You may need to use this if your filename begins with '-'.  e.g. "ilgac -i -- -input.dll".

## INSTALLING ASSEMBLIES

In the examples that follow, we assume that the assemblies have the version number \`1.2.3400.0' unless otherwise stated.

The following command-line installs the assembly \`**foobar.dll**' within the assembly cache and makes it the default version:

```
ilgac --install --default foobar.dll
```

This will create the following file and symbolic link under the top-level cache directory:

```
1.2.3400.0/foobar.dll
foobar.dll -> 1.2.3400.0/foobar.dll
```

Note: if the assembly version number is \`**0.0.0.0**', then the assembly will be stored in the main directory without a symbolic link.

You can install an older version (**1.1.5000.0**) of \`**foobar.dll**' side by side by omitting the \`**--default**' option:

```
ilgac --install foobar.dll
```

After installing both, the assembly cache directory structure will look like this:

```
1.1.5000.0/foobar.dll
1.2.3400.0/foobar.dll
foobar.dll -> 1.2.3400.0/foobar.dll
```

The runtime engine, [**ilrun**(1)](/ilrun/1.md), will first look in the version sub-directory for an exact match.  If a match is not found, it will then look for the default version in the top-level cache directory.

If you had a satelite resource assembly for German, then you would install it as follows:

```
ilgac --install --default --subdir de foobar.resources.dll
```

After all of the above commands, the directory structure will appear as follows:

```
1.1.5000.0/foobar.dll
1.2.3400.0/foobar.dll
1.2.3400.0/de/foobar.resources.dll
foobar.dll -> 1.2.3400.0/foobar.dll
de/foobar.resources.dll -> 1.2.3400.0/de/foobar.resources.dll
```

You can install multiple assemblies at once by specifying them one at a time on the command-line:

```
ilgac --install --default foobar.dll example.dll
```

## UNINSTALLING ASSEMBLIES

The easiest way to uninstall an assembly is to specify its name and version number:

```
ilgac --uninstall foobar 1.2.3400.0
```

This will search the assembly cache for a match and remove the corresponding assembly.  If the assembly is registered as a default fallback, then the default symbolic link will also be removed.

If the version number is unknown, you can retrieve it from an existing assembly with the same version.  For example:

```
ilgac --uninstall foobar.dll
```

## LISTING ASSEMBLIES

The entire contents of the assembly cache can be listed using the following command:

```
ilgac --list
```

Normally, only the main version of an assembly is listed - symbolic links for default versions are omitted.  They can be included in the output by specifying the \`**--default**' command-line option.

You can list all assemblies that match particular name or version combinations as follows:

```
ilgac --list foobar
ilgac --list 1.2.3400.0
ilgac --list foobar 1.2.3400.0 example 1.1.5000.0
```

## AUTHOR

Written by Southern Storm Software, Pty Ltd.

http://www.southern-storm.com.au/

## SEE ALSO

[ilrun(1)](/ilrun/1.md), [cscc(1)](/cscc/1.md), [csant(1)](/csant/1.md)

## DIAGNOSTICS

Exit status is 1 if an error occurred while processing the input. Otherwise the exit status is 0.

## BUGS

Under Windows, the default versions of assemblies are always stored in the main cache directory because it isn't possible to create symbolic links.
