Exam Area: Area 2 – Installation, Operation & Configuration (20%)
Add-ons are NuGet packages that extend CMS functionality:
# Via .NET CLI
dotnet add package EPiServer.Forms
dotnet add package EPiServer.Find
# Via Package Manager Console
Install-Package EPiServer.Forms
// Program.cs - Register the add-on
builder.Services.AddOptimizelyForms();
builder.Services.AddFind(); // EPiServer.Find
// Or in IConfigurableModule
public class AddOnConfigModule : IConfigurableModule
{
public void ConfigureContainer(ServiceConfigurationContext context)
{
context.Services.AddOptimizelyForms();
}
}
<!-- Modules typically include a module.config -->
<?xml version="1.0" encoding="utf-8" ?>
<module>
<assemblies>
<add assembly="EPiServer.Forms" />
</assemblies>
<clientResources>
<add name="EPiServer.Forms.ClientResources.View"
resourceType="Script"
path="ClientResources/Scripts/EPiServer.Forms.js" />
</clientResources>
</module>
Admin → Add-ons
→ List of installed add-ons
→ Version information
→ Links to configuration
→ (Legacy: Online add-on catalog - CMS 11)
// Use IRequiredClientResourceList to add client resources from an add-on
[InitializableModule]
public class AddOnResourcesModule : IInitializableModule
{
public void Initialize(InitializationEngine context)
{
var resourceList = context.Locate.Advanced
.GetInstance<IRequiredClientResourceList>();
resourceList.RequireScript("~/addons/my-addon/scripts.js").AtFoot();
resourceList.RequireStyle("~/addons/my-addon/styles.css");
}
public void Uninitialize(InitializationEngine context) { }
}
# Remove the NuGet package
dotnet remove package EPiServer.Forms
# Cleanup steps:
# 1. Remove the package reference
# 2. Remove service registration from Program.cs
# 3. Remove from module.config
# 4. Clean up DB tables if needed (manual)
IRequiredClientResourceList used for? (Registering CSS/JS from an add-on)module.config contain? (Assembly references and client resources for the module)