# Licensing Process

## Content

## Licensing Process

The ComponentOne licensing process is straightforward. For most licensing scenarios, all that is required is to **activate a valid serial key**.
After a license is activated, applications that use ComponentOne controls can be built and distributed. For step-by-step instructions, see *[Activating a Serial Key](https://developer.mescius.com/componentone/docs/license/online-license/activating-serial-key "https://developer.mescius.com/componentone/docs/license/online-license/activating-serial-key").*

## License Activation and Machine Limits

A standard ComponentOne developer serial key can be activated on up to **two machines at the same time**.
These activations may include:

* A primary development machine
* A secondary development machine, such as laptop<span data-renderer-mark="true" data-text-custom-color="#ff5630" class="fabric-text-color-mark" style="color: rgb(201, 55, 44); --custom-palette-color: #C9372C;"> </span>or build machine

A license activation can be moved between machines by deactivating the license on one machine and activating it on another.
**Reactivation limits**
To prevent abuse, license activation is subject to a daily reactivation limit.

* Up to **nine reactivations per day** are allowed.
* A reactivation is the process of deactivating and then reactivating the same serial key.

If this limit is exceeded, further activation attempts may be temporarily blocked.
**Dynamic build environments**
If you use a dynamic build agent such as CI/CD pipelines where machines are frequently reset, a standard developer license may not be suitable.
In these scenarios, consider purchasing a **pipeline license**, which is designed for automated and ephemeral build environments. For more information, see *[Pipeline Licensing](https://developer.mescius.com/componentone/docs/license/online-license/common-licensing-scenarios/licensing-apps-on-docker-with-pipeline "https://developer.mescius.com/componentone/docs/license/online-license/common-licensing-scenarios/licensing-apps-on-docker-with-pipeline").*

## Application Licensing at Design Time and Build Time

Application licensing is handled automatically by **Visual Studio**.
Visual Studio obtains version and licensing information:

* At design time, when a ComponentOne control is added from the Toolbox
* At build time, through the NuGet package build scripts

When queried, the ComponentOne control:

1. Locates the activated license information stored on the system
2. Generates the appropriate run-time license and version information
3. Saves this information into one of the following files added to the project:

* An embedded resource file containing the run-time license
    * `*.sa3licx` (or \*.gclicx)
* A `licenses.licx` file containing licensed component strong name and version information
    * (.NET Framework only)

## Runtime License Files

During design time or build time, Visual Studio generates runtime licensing information in one of the following formats:
For current ComponentOne versions, the runtime license file is generated with the`.sa3licx` extension.

* The `.sa3licx` file may:
    * Be embedded as a resource in the project, or
    * Appear only in the build output
* In all cases, the `.sa3licx` file **must be distributed with the application.**
* The runtime license file is generated specifically for the application being built.

For previous ComponentOne versions (2025 v1 and earlier), the runtime license file is named `.gclicx`.

* The `.gclicx` file may be embedded as a resource in the project or appear only in the build output.
* In all cases, the `.gclicx` file **must be distributed with the application**.

For more information, see *[Licensing Applications](https://developer.mescius.com/componentone/docs/license/online-license/licensing-applications "https://developer.mescius.com/componentone/docs/license/online-license/licensing-applications").*

## Application Binding Rules

The runtime license file is application-specific:

* The calling application name is embedded in the license file.
* The application name must match at runtime.

 
If you are building:

* A user control
* A plugin
* A component intended to be used by a differently named host application

You may need a **plugin license**. For more information, see *[License User Controls](https://developer.mescius.com/componentone/docs/license/online-license/common-licensing-scenarios/license-user-controls "https://developer.mescius.com/componentone/docs/license/online-license/common-licensing-scenarios/license-user-controls").*