lc(1) Mono License Compiler


lc -c filename -t targetassembly [-i reference...] [-v] [-o outputpath] [-nologo]


lc tool is a license compiler for Mono. It's used to convert a licenses.licx file to a resource that can be embedded into an executable.

When using commercial components for .NET they often require a license resource at runtime to make sure the developer was licensed to use this control. The most common way of making sure the component was properly licensed is by using license resources. At compile time the developer uses the lc tool to convert a licenses.licx file to a programname.exe.licenses file and embed that as a managed resource during compilation.


The following options are available:
--complist=filename, -c filename
This option is used to specify the input file, the licenses.licx file to create a license reesource for. This option is required. The license compiler will read each line in this file and try to load the types specified on that line.
--target=assemblyname, -t targetassembly
full assembly name with file extension for the target assembly. The license compiler uses this as a key when compiling the licenses. It has to match the assembly the resource will be embedded in. This option is required.
--load=reference, -i reference
Assembly reference to load before trying to compile a license. This option is needed for assemblies where the references are not in the gac. Compilers should pass all references to the license compiler.
--verbose,, -v
Gives more verbose output about the license compiling process.
--help, -h
Displays usage instructions.
--outdir=path, -o path
Target path file the licenses resource. By default the license compiler emits the resource in the current directory. The filename will always match the target assembly passed to --target with .licenses added.
Do not emit the "Mono License Compiler" logo on stdout while compilng.


The format for the license files (licenses.licx) is the following:
        # comment
        namespace.type, assemblyname
        namespace.type, full-assemblyname

All lines starting with a # are ignored. the first form requires that the assembly was loaded through the --load,-i option but does not require the full assembly name, only the first part.

The second form requires the full assembly name including locale, version and publickeytoken.


Mailing lists are listed at the