{"id":"bf2a903e-3dbb-4a80-ac0a-1a4a17830e73","shortId":"eP9D3Z","kind":"skill","title":"syncfusion-maui-licensing","tagline":"Sets up and validates Syncfusion .NET MAUI licensing, including license key registration, generation, and error resolution. Use when encountering trial license warnings (\"This application was built using a trial version\"), licensing errors, license key registration, unlock key vs","description":"# Licensing for Syncfusion .NET MAUI\n\nComprehensive guide for managing Syncfusion .NET MAUI licenses, from generation to registration and troubleshooting.\n\n## When to Use This Skill\n\nUse this skill immediately when you encounter:\n\n**Licensing Errors:**\n- \"This application was built using a trial version\" message\n- \"The included Syncfusion license key is invalid\" error\n- License validation failures\n- Platform mismatch errors\n- Version mismatch errors\n- Trial expired messages\n\n**License Key Tasks:**\n- Generating license keys from Syncfusion account\n- Registering license keys in applications\n- Understanding trial vs licensed installations\n- Differentiating unlock key from license key\n- Configuring licensing for build servers\n- Setting up CI/CD license validation\n\n**Common Scenarios:**\n- Initial app setup with Syncfusion components\n- Resolving license warnings during development\n- Deploying applications with proper licensing\n- Upgrading from trial to licensed version\n- Managing licenses for multiple projects\n- Troubleshooting \"Could not load Syncfusion.Licensing.dll\" errors\n\n## Licensing System Overview\n\nStarting with version **20.2.0.x**, Syncfusion introduced a new licensing system that applies to:\n- NuGet packages from nuget.org\n- Evaluation installers\n- Trial licenses\n\n**Key Points:**\n- License keys are **version and platform specific**\n- Registration is required for NuGet packages and trial installers\n- Licensed installers do NOT require license key registration\n- License validation is **offline** (no internet required)\n- License keys are different from installer unlock keys\n\n## Documentation and Navigation Guide\n\n### Understanding Licensing\n\n**When to Read:** First-time setup, understanding licensing requirements, or clarifying trial vs licensed installations.\n\n📄 **Read:** [references/licensing-overview.md](references/licensing-overview.md)\n- Licensing system introduction (v20.2.0.x changes)\n- When license key registration is required\n- Trial vs licensed installation differences\n- Unlock key vs license key distinction\n- Build server licensing scenarios\n- NuGet package licensing requirements\n- Version and platform specificity\n\n### Generating License Keys\n\n**When to Read:** Need to obtain a new license key, working with trial licenses, or managing license for different versions/platforms.\n\n📄 **Read:** [references/license-generation.md](references/license-generation.md)\n- Accessing License & Downloads section\n- Accessing Trial & Downloads section\n- Using Claim License Key feature\n- Generating keys for active licenses\n- Generating keys for active trials\n- Handling expired licenses (temporary 5-day keys)\n- Setting up accounts for NuGet.org users\n- Platform and version-specific key generation\n\n### Registering License Keys\n\n**When to Read:** Need to register a license key in your application, choosing registration location, or implementing proper licensing.\n\n📄 **Read:** [references/license-registration.md](references/license-registration.md)\n- RegisterLicense() method syntax\n- Registration in App.xaml.cs constructor\n- Registration in MauiProgram.cs\n- Syncfusion.Licensing.dll reference requirements\n- Best practices for registration location\n- Multiple registration scenarios\n- Complete code examples for each approach\n\n### Troubleshooting Licensing Errors\n\n**When to Read:** Encountering license validation errors, trial expiration messages, platform/version mismatches, or assembly loading issues.\n\n📄 **Read:** [references/licensing-errors.md](references/licensing-errors.md)\n- License key not registered error\n- Invalid key error messages\n- Trial expired errors\n- Platform mismatch errors\n- Version mismatch errors\n- \"Could not load Syncfusion.Licensing.dll\" issues\n- Solutions for each error type\n- Version-specific error variations\n- Copy Local configuration for assemblies\n\n### Advanced Topics and FAQ\n\n**When to Read:** Setting up CI/CD pipelines, programmatic license validation, offline deployment questions, or upgrading from trial.\n\n📄 **Read:** [references/licensing-faq.md](references/licensing-faq.md)\n- CI/CD license validation (Azure Pipelines, GitHub Actions, Jenkins)\n- ValidateLicense() method for programmatic checks\n- Unit testing with license validation\n- Internet connection requirements (offline validation)\n- Upgrading from trial to licensed version\n- NuGet.org user account registration\n- Where to obtain license keys\n- Common frequently asked questions\n\n## Quick Start Guide\n\n### Step 1: Generate License Key\n\n1. Log in to your Syncfusion account\n2. Navigate to [License & Downloads](https://www.syncfusion.com/account/downloads) (licensed) or [Trial & Downloads](https://www.syncfusion.com/account/manage-trials/downloads) (trial)\n3. Generate a license key for **.NET MAUI** platform and your specific version\n4. Copy the generated license key\n\n### Step 2: Register License Key\n\nChoose one of these registration methods:\n\n**Option A: Register in App.xaml.cs**\n\n```csharp\npublic App()\n{\n    // Register Syncfusion license\n    string licenseKey = Environment.GetEnvironmentVariable(\"SYNCFUSION_LICENSE_KEY\");\n    if (!string.IsNullOrEmpty(licenseKey))\n    {   \n        Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense(licenseKey);\n    }\n    \n    InitializeComponent();\n    \n    MainPage = new AppShell();\n}\n```\n\n**Option B: Register in MauiProgram.cs**\n\n```csharp\npublic static class MauiProgram\n{\n    public static MauiApp CreateMauiApp()\n    {\n        // Register the Syncfusion license key\n       string licenseKey = Environment.GetEnvironmentVariable(\"SYNCFUSION_LICENSE_KEY\");\n        if (!string.IsNullOrEmpty(licenseKey))\n        {   \n            Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense(licenseKey);\n        }\n \n        var builder = MauiApp.CreateBuilder();\n        builder\n            .UseMauiApp<App>()\n            .ConfigureSyncfusionCore()\n            .ConfigureFonts(fonts =>\n            {\n                fonts.AddFont(\"OpenSans-Regular.ttf\", \"OpenSansRegular\");\n            });\n\n        return builder.Build();\n    }\n}\n```\n\n### Step 3: Verify Registration\n\nRun your application. If properly registered, you should NOT see any licensing warning messages.\n\n## Common Patterns\n\n### Pattern 1: Initial Setup for New Projects\n\n**Scenario:** Starting a new .NET MAUI project with Syncfusion components from NuGet.\n\n**Steps:**\n1. Install Syncfusion NuGet packages\n2. Generate license key for MAUI platform + your version\n3. Register license key in MauiProgram.cs before ConfigureSyncfusionCore()\n4. Ensure Syncfusion.Licensing package is installed\n5. Build and run to verify no licensing warnings\n\n### Pattern 2: Resolving \"Trial Version\" Warning\n\n**Scenario:** Application shows \"This application was built using a trial version\" message.\n\n**Solution:**\n1. Verify you have a valid license key (not expired)\n2. Check the license key is for correct platform (MAUI)\n3. Check the license key version matches your package version\n4. Register the license key before InitializeComponent() or before ConfigureSyncfusionCore()\n5. Clean and rebuild the application\n\n### Pattern 3: Version Mismatch Error\n\n**Scenario:** Error message shows \"included Syncfusion license ({Registered Version}) is invalid for version {Required version}\"\n\n**Solution:**\n1. Check your NuGet package versions (all should be same version)\n2. Generate new license key for the exact version you're using\n3. Replace old license key with new one\n4. Clean solution and rebuild\n\n### Pattern 4: Build Server / CI/CD Setup\n\n**Scenario:** Need to validate licensing during continuous integration.\n\n**Approaches:**\n- Use LicenseKeyValidator utility in CI pipeline\n- Implement ValidateLicense() method with unit tests\n- Configure environment variables for license key\n- Fail build if validation fails\n\n**Read:** [references/licensing-faq.md](references/licensing-faq.md) for detailed CI/CD setup instructions.\n\n### Pattern 5: Multiple Projects in Solution\n\n**Scenario:** Solution has multiple MAUI projects using Syncfusion components.\n\n**Solution:**\n1. Register license key in each project's App.xaml.cs or MauiProgram.cs\n2. Use same license key across all projects (if same version)\n3. Ensure all projects reference Syncfusion.Licensing.dll\n4. Consider using shared constant for license key string\n\n## Key Concepts\n\n### License Key vs Unlock Key\n\n- **Unlock Key:** Used to unlock the Syncfusion installer during installation\n- **License Key:** Required in your application code when using NuGet packages or trial installer\n- These are **different** keys with different purposes\n\n### Version and Platform Specificity\n\nLicense keys are tied to:\n- **Platform:** MAUI, WPF, Blazor, etc. (use MAUI license for MAUI apps)\n- **Version:** Major.Minor.Patch (e.g., 26.2.4)\n\nA MAUI 26.2.4 license key will NOT work for:\n- Different platform (e.g., Blazor)\n- Different version (e.g., 26.1.0 or 27.0.0)\n\n### When License Registration is Required\n\n**Required:**\n- NuGet packages from nuget.org\n- Trial installer assemblies\n- Evaluation scenarios\n\n**NOT Required:**\n- Licensed installer assemblies (license embedded in assemblies)\n\n### Offline Validation\n\n- License validation happens **offline** during application execution\n- No internet connection required for validation\n- Apps can be deployed to systems without internet access\n\n## Common Use Cases\n\n### Use Case 1: First-Time Developer Setup\n\n**User:** \"I just installed Syncfusion MAUI components from NuGet and I'm getting a trial license warning.\"\n\n**Solution:**\n1. Read [references/licensing-overview.md](references/licensing-overview.md) to understand licensing requirements\n2. Read [references/license-generation.md](references/license-generation.md) to generate appropriate key\n3. Read [references/license-registration.md](references/license-registration.md) to register in your app\n\n### Use Case 2: Deployment Issues\n\n**User:** \"My app works fine in development but shows licensing errors when deployed.\"\n\n**Solution:**\n1. Verify Syncfusion.Licensing.dll is included in deployment\n2. Check Copy Local is set to True for Syncfusion assemblies\n3. Read [references/licensing-errors.md](references/licensing-errors.md) for \"Could not load\" troubleshooting\n\n### Use Case 3: Trial to Licensed Upgrade\n\n**User:** \"I purchased a license, how do I remove the trial warning?\"\n\n**Solution:**\n1. Read [references/licensing-faq.md](references/licensing-faq.md) - \"Upgrading from Trial\" section\n2. Generate new licensed key (not trial key)\n3. Replace trial key with licensed key in RegisterLicense() call\n4. Clean and rebuild application\n\n### Use Case 4: CI/CD Integration\n\n**User:** \"How do I validate licensing in Azure DevOps pipeline?\"\n\n**Solution:**\nRead [references/licensing-faq.md](references/licensing-faq.md) for complete CI/CD setup including:\n- Azure Pipelines (YAML and Classic)\n- GitHub Actions\n- Jenkins\n- Unit test approach with ValidateLicense()\n\n## Important Notes\n\n- Always register license key **before** InitializeComponent() in App.xaml.cs or **before** ConfigureSyncfusionCore() in MauiProgram.cs\n- Keep license keys secure (don't commit to public repositories)\n- Use the same license key for all Syncfusion packages in your project\n- Ensure all Syncfusion packages are the same version\n- License validation errors are shown at runtime, not compile time","tags":["syncfusion","maui","licensing","components","skills","agent-skills"],"capabilities":["skill","source-syncfusion","skill-syncfusion-maui-licensing","topic-agent-skills"],"categories":["maui-ui-components-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/syncfusion/maui-ui-components-skills/syncfusion-maui-licensing","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add syncfusion/maui-ui-components-skills","source_repo":"https://github.com/syncfusion/maui-ui-components-skills","install_from":"skills.sh"}},"qualityScore":"0.476","qualityRationale":"deterministic score 0.48 from registry signals: · indexed on github topic:agent-skills · 53 github stars · SKILL.md body (11,296 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T00:56:07.856Z","embedding":null,"createdAt":"2026-04-18T22:15:24.873Z","updatedAt":"2026-04-22T00:56:07.856Z","lastSeenAt":"2026-04-22T00:56:07.856Z","tsv":"'/account/downloads)':569 '/account/manage-trials/downloads)':576 '1':551,555,698,717,773,840,938,1109,1133,1177,1224 '2':562,598,722,755,783,851,949,1141,1160,1184,1232 '20.2.0':181 '26.1.0':1053 '26.2.4':1036,1039 '27.0.0':1055 '3':578,678,731,793,820,863,960,1149,1195,1206,1240 '4':591,739,803,871,877,966,1250,1257 '5':353,745,813,923 'access':326,330,1103 'account':113,358,536,561 'across':954 'action':511,1285 'activ':342,347 'advanc':481 'alway':1294 'app':143,615,1032,1095,1157,1165 'app.xaml.cs':399,612,946,1301 'appli':190 'applic':28,77,118,154,383,683,761,764,818,997,1087,1254 'approach':420,890,1289 'appropri':1147 'appshel':633 'ask':545 'assembl':437,480,1068,1075,1079,1194 'azur':508,1267,1279 'b':635 'best':407 'blazor':1025,1049 'build':133,288,746,878,910 'builder':665,667 'builder.build':676 'built':30,79,766 'call':1249 'case':1106,1108,1159,1205,1256 'chang':270 'check':517,784,794,841,1185 'choos':384,602 'ci':895 'ci/cd':137,490,505,880,919,1258,1276 'claim':335 'clarifi':258 'class':642 'classic':1283 'clean':814,872,1251 'code':416,998 'commit':1313 'common':140,543,695,1104 'compil':1345 'complet':415,1275 'compon':147,713,936,1121 'comprehens':48 'concept':976 'configur':130,478,903 'configurefont':670 'configuresyncfusioncor':669,738,812,1304 'connect':524,1091 'consid':967 'constant':970 'constructor':400 'continu':888 'copi':476,592,1186 'correct':790 'could':170,461,1200 'createmauiapp':647 'csharp':613,639 'day':354 'deploy':153,496,1098,1161,1175,1183 'detail':918 'develop':152,1113,1169 'devop':1268 'differ':236,281,321,1008,1011,1046,1050 'differenti':124 'distinct':287 'document':241 'download':328,332,566,573 'e.g':1035,1048,1052 'embed':1077 'encount':23,73,427 'ensur':740,961,1329 'environ':904 'environment.getenvironmentvariable':621,655 'error':19,36,75,92,98,101,174,423,430,447,450,454,457,460,469,474,823,825,1173,1339 'etc':1026 'evalu':196,1069 'exact':858 'exampl':417 'execut':1088 'expir':103,350,432,453,782 'fail':909,913 'failur':95 'faq':484 'featur':338 'fine':1167 'first':251,1111 'first-tim':250,1110 'font':671 'fonts.addfont':672 'frequent':544 'generat':17,57,108,300,339,344,368,552,579,594,723,852,1146,1233 'get':1127 'github':510,1284 'guid':49,244,549 'handl':349 'happen':1084 'immedi':70 'implement':388,897 'import':1292 'includ':13,86,828,1181,1278 'initi':142,699 'initializecompon':630,809,1299 'instal':123,197,217,219,238,262,280,718,744,989,991,1005,1067,1074,1118 'instruct':921 'integr':889,1259 'internet':231,523,1090,1102 'introduc':184 'introduct':268 'invalid':91,448,834 'issu':439,465,1162 'jenkin':512,1286 'keep':1307 'key':15,38,41,89,106,110,116,126,129,200,203,224,234,240,273,283,286,302,312,337,340,345,355,367,371,380,444,449,542,554,582,596,601,624,652,658,725,734,780,787,797,807,855,867,908,941,953,973,975,978,981,983,993,1009,1018,1041,1148,1236,1239,1243,1246,1297,1309,1321 'licens':4,12,14,25,35,37,43,55,74,88,93,105,109,115,122,128,131,138,149,157,162,165,175,187,199,202,218,223,226,233,246,255,261,266,272,279,285,290,294,301,311,316,319,327,336,343,351,370,379,390,422,428,443,493,506,521,532,541,553,565,570,581,595,600,618,623,651,657,692,724,733,752,779,786,796,806,830,854,866,886,907,940,952,972,977,992,1017,1029,1040,1057,1073,1076,1082,1130,1139,1172,1209,1215,1235,1245,1265,1296,1308,1320,1337 'licensekey':620,627,629,654,661,663 'licensekeyvalid':892 'load':172,438,463,1202 'local':477,1187 'locat':386,411 'log':556 'm':1126 'mainpag':631 'major.minor.patch':1034 'manag':51,164,318 'match':799 'maui':3,11,47,54,585,709,727,792,932,1023,1028,1031,1038,1120 'mauiapp':646 'mauiapp.createbuilder':666 'mauiprogram':643 'mauiprogram.cs':403,638,736,948,1306 'messag':84,104,433,451,694,771,826 'method':395,514,607,899 'mismatch':97,100,435,456,459,822 'multipl':167,412,924,931 'navig':243,563 'need':306,375,883 'net':10,46,53,584,708 'new':186,310,632,702,707,853,869,1234 'note':1293 'nuget':192,213,292,715,720,843,1001,1062,1123 'nuget.org':195,360,534,1065 'obtain':308,540 'offlin':229,495,526,1080,1085 'old':865 'one':603,870 'opensans-regular.ttf':673 'opensansregular':674 'option':608,634 'overview':177 'packag':193,214,293,721,742,801,844,1002,1063,1325,1332 'pattern':696,697,754,819,876,922 'pipelin':491,509,896,1269,1280 'platform':96,207,298,362,455,586,728,791,1015,1022,1047 'platform/version':434 'point':201 'practic':408 'programmat':492,516 'project':168,703,710,925,933,944,956,963,1328 'proper':156,389,685 'public':614,640,644,1315 'purchas':1213 'purpos':1012 'question':497,546 'quick':547 're':861 'read':249,263,305,323,374,391,426,440,487,502,914,1134,1142,1150,1196,1225,1271 'rebuild':816,875,1253 'refer':405,964 'references/license-generation.md':324,325,1143,1144 'references/license-registration.md':392,393,1151,1152 'references/licensing-errors.md':441,442,1197,1198 'references/licensing-faq.md':503,504,915,916,1226,1227,1272,1273 'references/licensing-overview.md':264,265,1135,1136 'regist':114,369,377,446,599,610,616,636,648,686,732,804,831,939,1154,1295 'registerlicens':394,1248 'registr':16,39,59,209,225,274,385,397,401,410,413,537,606,680,1058 'remov':1219 'replac':864,1241 'repositori':1316 'requir':211,222,232,256,276,295,406,525,837,994,1060,1061,1072,1092,1140 'resolut':20 'resolv':148,756 'return':675 'run':681,748 'runtim':1343 'scenario':141,291,414,704,760,824,882,928,1070 'section':329,333,1231 'secur':1310 'see':690 'server':134,289,879 'set':5,135,356,488,1189 'setup':144,253,700,881,920,1114,1277 'share':969 'show':762,827,1171 'shown':1341 'skill':66,69 'skill-syncfusion-maui-licensing' 'solut':466,772,839,873,927,929,937,1132,1176,1223,1270 'source-syncfusion' 'specif':208,299,366,473,589,1016 'start':178,548,705 'static':641,645 'step':550,597,677,716 'string':619,653,974 'string.isnullorempty':626,660 'syncfus':2,9,45,52,87,112,146,183,560,617,622,650,656,712,719,829,935,988,1119,1193,1324,1331 'syncfusion-maui-licens':1 'syncfusion.licensing':741 'syncfusion.licensing.dll':173,404,464,965,1179 'syncfusion.licensing.syncfusionlicenseprovider.registerlicense':628,662 'syntax':396 'system':176,188,267,1100 'task':107 'temporari':352 'test':519,902,1288 'tie':1020 'time':252,1112,1346 'topic':482 'topic-agent-skills' 'trial':24,33,82,102,120,160,198,216,259,277,315,331,348,431,452,501,530,572,577,757,769,1004,1066,1129,1207,1221,1230,1238,1242 'troubleshoot':61,169,421,1203 'true':1191 'type':470 'understand':119,245,254,1138 'unit':518,901,1287 'unlock':40,125,239,282,980,982,986 'upgrad':158,499,528,1210,1228 'use':21,31,64,67,80,334,767,862,891,934,950,968,984,1000,1027,1105,1107,1158,1204,1255,1317 'usemauiapp':668 'user':361,535,1115,1163,1211,1260 'util':893 'v20.2.0.x':269 'valid':8,94,139,227,429,494,507,522,527,778,885,912,1081,1083,1094,1264,1338 'validatelicens':513,898,1291 'var':664 'variabl':905 'variat':475 'verifi':679,750,774,1178 'version':34,83,99,163,180,205,296,365,458,472,533,590,730,758,770,798,802,821,832,836,838,845,850,859,959,1013,1033,1051,1336 'version-specif':364,471 'versions/platforms':322 'vs':42,121,260,278,284,979 'warn':26,150,693,753,759,1131,1222 'without':1101 'work':313,1044,1166 'wpf':1024 'www.syncfusion.com':568,575 'www.syncfusion.com/account/downloads)':567 'www.syncfusion.com/account/manage-trials/downloads)':574 'x':182 'yaml':1281","prices":[{"id":"c0e00760-ee99-4ef5-9395-634b35570ade","listingId":"bf2a903e-3dbb-4a80-ac0a-1a4a17830e73","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"syncfusion","category":"maui-ui-components-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:15:24.873Z"}],"sources":[{"listingId":"bf2a903e-3dbb-4a80-ac0a-1a4a17830e73","source":"github","sourceId":"syncfusion/maui-ui-components-skills/syncfusion-maui-licensing","sourceUrl":"https://github.com/syncfusion/maui-ui-components-skills/tree/master/skills/syncfusion-maui-licensing","isPrimary":false,"firstSeenAt":"2026-04-18T22:15:24.873Z","lastSeenAt":"2026-04-22T00:56:07.856Z"}],"details":{"listingId":"bf2a903e-3dbb-4a80-ac0a-1a4a17830e73","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"syncfusion","slug":"syncfusion-maui-licensing","github":{"repo":"syncfusion/maui-ui-components-skills","stars":53,"topics":["agent-skills"],"license":null,"html_url":"https://github.com/syncfusion/maui-ui-components-skills","pushed_at":"2026-04-08T07:27:37Z","description":"Skills for Syncfusion .NET MAUI components. Enable AI-assisted development with comprehensive documentation, code examples, and best practices for 100+ UI controls including DataGrid, Charts, Scheduler, and more.","skill_md_sha":"9e46089a06eef37b021bce9c8b15ca7ac1a04974","skill_md_path":"skills/syncfusion-maui-licensing/SKILL.md","default_branch":"master","skill_tree_url":"https://github.com/syncfusion/maui-ui-components-skills/tree/master/skills/syncfusion-maui-licensing"},"layout":"multi","source":"github","category":"maui-ui-components-skills","frontmatter":{"name":"syncfusion-maui-licensing","description":"Sets up and validates Syncfusion .NET MAUI licensing, including license key registration, generation, and error resolution. Use when encountering trial license warnings (\"This application was built using a trial version\"), licensing errors, license key registration, unlock key vs license key confusion, build server or CI/CD licensing, NuGet package licensing requirements, platform mismatch errors, or version mismatch errors."},"skills_sh_url":"https://skills.sh/syncfusion/maui-ui-components-skills/syncfusion-maui-licensing"},"updatedAt":"2026-04-22T00:56:07.856Z"}}