diff --git a/src/Skybrud.Essentials.Umbraco/EssentialsManifestFilter.cs b/src/Skybrud.Essentials.Umbraco/EssentialsManifestFilter.cs index 2c19240..9ac48d6 100644 --- a/src/Skybrud.Essentials.Umbraco/EssentialsManifestFilter.cs +++ b/src/Skybrud.Essentials.Umbraco/EssentialsManifestFilter.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Reflection; using Umbraco.Cms.Core.Manifest; namespace Skybrud.Essentials.Umbraco; @@ -8,9 +9,10 @@ public class EssentialsManifestFilter : IManifestFilter { /// public void Filter(List manifests) { - manifests.Add(new PackageManifest { + + // Initialize a new manifest filter for this package + PackageManifest manifest = new() { AllowPackageTelemetry = false, - PackageId = EssentialsPackage.Alias, PackageName = EssentialsPackage.Name, Version = EssentialsPackage.InformationalVersion, Scripts = [ @@ -20,7 +22,21 @@ public void Filter(List manifests) { Stylesheets = [ $"/App_Plugins/{EssentialsPackage.AppPlugins}/Styles/Styles.css" ] - }); + }; + + // The "PackageId" property isn't available prior to Umbraco 12, and since the package is build against + // Umbraco 10, we need to use reflection for setting the property value for Umbraco 12+. Ideally this + // shouldn't fail, but we might at least add a try/catch to be sure + try { + PropertyInfo? property = manifest.GetType().GetProperty("PackageId"); + property?.SetValue(manifest, EssentialsPackage.Alias); + } catch { + // We don't really care about the exception + } + + // Append the manifest + manifests.Add(manifest); + } } \ No newline at end of file