From dbdee5fc2cd0c596a23bda1c43788ad7cf1de97b Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 30 Mar 2017 17:01:30 +1100 Subject: [PATCH] U4-9655 Html Agility pack assembly binding needs to be updated via code, just in case --- src/Umbraco.Core/BindingRedirects.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Core/BindingRedirects.cs b/src/Umbraco.Core/BindingRedirects.cs index 2ee54a369b..71d3721681 100644 --- a/src/Umbraco.Core/BindingRedirects.cs +++ b/src/Umbraco.Core/BindingRedirects.cs @@ -17,9 +17,12 @@ namespace Umbraco.Core AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; } - private static readonly Regex Log4NetAssemblyPattern = new Regex("log4net, Version=([\\d\\.]+?), Culture=neutral, PublicKeyToken=null", RegexOptions.Compiled); + private static readonly Regex Log4NetAssemblyPattern = new Regex("log4net, Version=([\\d\\.]+?), Culture=neutral, PublicKeyToken=null"); private const string Log4NetReplacement = "log4net, Version=1.2.15.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a"; - + + private static readonly Regex HtmlAgilityAssemblyPattern = new Regex("HtmlAgilityPack, Version=([\\d\\.]+?), Culture=neutral, PublicKeyToken=bd319b19eaf3b43a"); + private const string HtmlAgilityReplacement = "HtmlAgilityPack, Version=1.4.9.5, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a"; + /// /// This is used to do an assembly binding redirect via code - normally required due to signature changes in assemblies /// @@ -28,13 +31,18 @@ namespace Umbraco.Core /// private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) { - //log4net: - // Use regex to match and replace + //log4net: if (Log4NetAssemblyPattern.IsMatch(args.Name) && args.Name != Log4NetReplacement) { return Assembly.Load(Log4NetAssemblyPattern.Replace(args.Name, Log4NetReplacement)); } + //HtmlAgility: + if (HtmlAgilityAssemblyPattern.IsMatch(args.Name) && args.Name != HtmlAgilityReplacement) + { + return Assembly.Load(HtmlAgilityAssemblyPattern.Replace(args.Name, HtmlAgilityReplacement)); + } + //AutoMapper: // ensure the assembly is indeed AutoMapper and that the PublicKeyToken is null before trying to Load again // do NOT just replace this with 'return Assembly', as it will cause an infinite loop -> stackoverflow