Applying the key
Call this once at application startup, before creating any control.
using unvell.ReoGrid.Core.License;
ReoGridLicense.SetLicense("eyJsaWNlbnNlZSI6...");
If the key is malformed, the Base64 is corrupt, or the signature does not match, an
ArgumentException is thrown. The signature is always verified before the contents are
trusted — the order is fixed, so keys cannot be forged.
Rather than embedding the key in source code, we recommend reading it from a configuration file or an environment variable.
var key = Environment.GetEnvironmentVariable("REOGRID_LICENSE");
if (!string.IsNullOrEmpty(key))
ReoGridLicense.SetLicense(key);
One key covers everything
| Version-independent | The key is not matched against the assembly version or build date. A key issued for V4 works as-is with V5 — no reissue needed |
| Platform-independent | The key carries no platform information. A single key covers WinForms, WPF, Avalonia and headless |
Keeps working after your updates expire
ReoGrid One is a perpetual license at initial purchase, plus an optional annual renewal (the same model as DevExpress and Telerik).
Even if you skip the annual renewal, the binaries you already have keep working with no
time limit. There is no kill switch — no mechanism that stops the product on a deadline.
The updates expiry can be read as LicenseInfo.UpdatesUntil, but it is not used in
license validation. The only thing that changes when your updates expire is whether you
can obtain new builds, and that is controlled on the distribution side — the portal and NuGet.
An application you have already shipped will never stop working because the updates period ended.
Behavior without a key
The design does not get in the way of evaluation.
| Works | Restricted |
|---|---|
| Display, scrolling, printing, export to every format | A watermark appears in on-screen, print and PDF rendering |
| Loading files | A notice sheet is added to XLSX output |
| Cell editing is disabled in all three controls |
Printing is left open because PDF export works in the same state — blocking it would only leave a bypass route.
Checking the status
if (!ReoGridLicense.IsLicensed)
{
// 未適用・キーが不正・トライアル期限切れのいずれか
}
var info = ReoGridLicense.Current;
if (info != null)
{
Console.WriteLine(info.Licensee); // 使用許諾先
Console.WriteLine(info.Tier); // Trial / Production
Console.WriteLine(info.ExpiresAt); // トライアル期限(製品版は null=無期限)
Console.WriteLine(info.UpdatesUntil); // 更新権の期限(判定には使われない)
}
Only three things factor into IsLicensed: the signature, ExpiresAt (the trial expiry)
and AllowedAssembly (when the key is bound to an assembly).
Main members of LicenseInfo
| Member | Meaning |
|---|---|
Licensee / Email | The licensee |
Tier | Trial or Production |
IssuedAt | Issue date |
ExpiresAt | Trial expiry only. Omitted in production keys, meaning no expiry |
UpdatesUntil | Updates expiry. Not used in validation |
AllowedAssembly | Binding to a specific assembly (when set) |
IsExpired / IsValid | Expiry checks |
The license cannot be removed at runtime
There is no way to revoke a license once applied while the application is running. An internal API exists for testing, but it is not public.