Episerver - update 346

Release highlight

Our Platform UI team has released a new Design System website, see https://design.episerver.com/.

Use the Design System website as a reference for the usage of fonts, colors, and components such as buttons, menus, and icons, when designing custom Episerver components. It also contains documentation for a new React component library (UI Framework).

Note that this is an Alpha release. For any questions, please contact Ryan Bare.

imageafolb.png

Release summary

New releases of the Episerver Design System website (alpha release), Episerver Campaign (create recipient list, blacklist renamed to blocklist, more detailed information on Smart Campaigns when using REST API), and Episerver Search & Navigation (product renamed to Search & Navigation in user interface). Bug fixes for Episerver A/B testing.

Released items December 15, 2020

Area ID Type Description Released
FIND-6312
  EPiServer.Find.UnifiedSearch.ForInstanceOf throws exception under certain conditions

Fixed issue where EPiServer.Find.UnifiedSearch.ForInstanceOf throws exceptions under certain conditions.

Issue Description

Extension method:
public static UnifiedSearchTypeRulesBuilder<T> ForInstanceOf<T>(this IUnifiedSearchRegistry registry)

in EPiServer.Find, Version=13.2.2.0, Culture=neutral, PublicKeyToken=8fe83dea738b45b7 will throw ReflectionTypeLoadException if an assembly that is loaded into the excecution context cannot in turn load all of its direct and indirect dependencies (recursively).

There are many real-world situations where this can happen. Here it is a case of using the NuGet package "Microsoft.CodeDom.Providers.DotNetCompilerPlatform", which allows the use of Roslyn compilers when compiling ASP.NET pages in runtime for example).

Steps to Reproduce

1. Do something causing an assembly to be present in the bin folder hierarchy that does not have access to all it's (recursive) dependencies.
2. Load all assemblies into execution context, perhaps during a scan of the bin folder for something via reflection.
3. Call UnifiedSearchTypeRulesBuilder<T> ForInstanceOf<T>(this IUnifiedSearchRegistry registry)
the method will now throw a ReflectionTypeLoadException when it calls Assembly.GetTypes().
_______________________________________________________________________________________________________

Steps to reproduce in Alloy Demo:
1. Add nuget package "Microsoft.CodeDom.Providers.DotNetCompilerPlatform".
2. Edit the BuildQuery() method in FindSearchPageController.cs like this:
...
private static void FakePreLoadAssemblies()

Unknown macro: { string binDirectory = Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase).LocalPath); DirectoryInfo di = new DirectoryInfo(binDirectory); Assembly[] assemblies = di.GetFiles("*.dll", SearchOption.AllDirectories).Select(fi => fi.FullName).Where(fn => fn.IndexOf("native", StringComparison.OrdinalIgnoreCase) < 0).Select(fn => Assembly.LoadFrom(fn)).ToArray(); }

private ITypeSearch<ISearchContent> BuildQuery(FindSearchContentModel model, string selectedAnalyzer)
{
var language = searchClient.Settings.Languages.GetSupportedLanguage(selectedAnalyzer);

FakePreLoadAssemblies();
searchClient.Conventions.UnifiedSearchRegistry.ForInstanceOf<ArticlePage>();
...

Compile, run and search. It will now fail with a ReflectionTypeLoadException.

EPiServer.Find 13.3.0; (Or a related package);
Dec 15, 2020
FIND-8483
  Update product name

The product name has been changed from "Episerver Find" to "Episerver Search & Navigation" in the user interface.

EPiServer.Find 13.3.0; (Or a related package);
Dec 15, 2020
FIND-7533
  Wrong content indexing job duration time

Fixed incorrect display of duration time for content indexing jobs.

Steps to reproduce

  1. Run the Find Content Indexing Job.
  2. See duration time displayed.

Actual

Duration column shows only ExecutionTime for last sub-job.

Expected

Duration column should show total time for all sub-jobs.

EPiServer.Find 13.3.0; (Or a related package);
Dec 15, 2020
MAR-1348
  A/B Testing issue not render images on a 3rd party site

Issue where images are not rendered on a third-party website.

Code has been modified to use the parameters for allowing the htmlcanvas JavaScript to perform cross-domain loading of images.

EPiServer.Marketing.Testing 2.6.5; (Or a related package);
Dec 11, 2020
MAR-1345
  GetActiveTests not doing a refresh when the key is missing.

If the key is missing, a refresh has to be performed to get the tests and variants from the database.

EPiServer.Marketing.Testing 2.6.5; (Or a related package);
Dec 11, 2020

Marketing_32.svg Episerver Campaign

Episerver Campaign 8.47

  • Recipient list management (Beta): New Create list button
    When using the recipient list management, you can create new recipient lists from scratch or based on an existing list by clicking the Create list drop-down button and then New or Copy.
    See the Episerver User Guide: Recipient list management (Beta).
  • Renaming of blacklist to blocklist
    The term “blacklist” has been renamed to “blocklist” in the Episerver Campaign front end.
  • REST API: Extended GET/smartcampaigns endpoint
    When using the REST API to retrieve information about all Smart Campaigns, you can include more details about the configured recipients, target groups, and message nodes by setting the resultView parameter to DETAILED.
    See the REST API resource documentation: GET/smartcampaigns.

More on releases

Related topics

Last updated: Dec 15, 2020