From: Mike McLaughlin Date: Sat, 23 Feb 2019 20:00:48 +0000 (-0800) Subject: Restrict the assembly resolver to just SOS.NETCore. X-Git-Tag: submit/tizen/20190813.035844~53^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=80e28e3d1afead4ce4c0513ec8194657710e1619;p=platform%2Fcore%2Fdotnet%2Fdiagnostics.git Restrict the assembly resolver to just SOS.NETCore. --- diff --git a/src/SOS/SOS.Hosting/AssemblyResolver.cs b/src/SOS/SOS.Hosting/AssemblyResolver.cs index a6734c7e2..8e9e07bef 100644 --- a/src/SOS/SOS.Hosting/AssemblyResolver.cs +++ b/src/SOS/SOS.Hosting/AssemblyResolver.cs @@ -14,18 +14,12 @@ namespace SOS /// internal static class AssemblyResolver { - static AssemblyResolver() - { - AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; - } - /// /// Call to enable the assembly resolver for the current AppDomain. /// public static void Enable() { - // intentionally empty. This is just meant to ensure the static constructor - // has run. + AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; } private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) @@ -33,44 +27,36 @@ namespace SOS // apply any existing policy AssemblyName referenceName = new AssemblyName(AppDomain.CurrentDomain.ApplyPolicy(args.Name)); - string fileName = referenceName.Name + ".dll"; - string assemblyPath = null; - string probingPath = null; - Assembly assm = null; - - // look next to requesting assembly - assemblyPath = args.RequestingAssembly?.Location; - if (!String.IsNullOrEmpty(assemblyPath)) + if (referenceName.Name == "SOS.NETCore") { - probingPath = Path.Combine(Path.GetDirectoryName(assemblyPath), fileName); - Debug.WriteLine($"Considering {probingPath} based on RequestingAssembly"); - if (Probe(probingPath, referenceName.Version, out assm)) + string fileName = referenceName.Name + ".dll"; + string assemblyPath = null; + string probingPath = null; + Assembly assembly = null; + + // Look next to requesting assembly + assemblyPath = args.RequestingAssembly?.Location; + if (!String.IsNullOrEmpty(assemblyPath)) { - return assm; + probingPath = Path.Combine(Path.GetDirectoryName(assemblyPath), fileName); + Debug.WriteLine($"Considering {probingPath} based on RequestingAssembly"); + if (Probe(probingPath, referenceName.Version, out assembly)) { + return assembly; + } } - } - // look next to the executing assembly - assemblyPath = Assembly.GetExecutingAssembly().Location; - if (!String.IsNullOrEmpty(assemblyPath)) - { - probingPath = Path.Combine(Path.GetDirectoryName(assemblyPath), fileName); - - Debug.WriteLine($"Considering {probingPath} based on ExecutingAssembly"); - if (Probe(probingPath, referenceName.Version, out assm)) + // Look next to the executing assembly + assemblyPath = Assembly.GetExecutingAssembly().Location; + if (!String.IsNullOrEmpty(assemblyPath)) { - return assm; + probingPath = Path.Combine(Path.GetDirectoryName(assemblyPath), fileName); + Debug.WriteLine($"Considering {probingPath} based on ExecutingAssembly"); + if (Probe(probingPath, referenceName.Version, out assembly)) { + return assembly; + } } } - // look in AppDomain base directory - probingPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName); - Debug.WriteLine($"Considering {probingPath} based on BaseDirectory"); - if (Probe(probingPath, referenceName.Version, out assm)) - { - return assm; - } - return null; } @@ -87,14 +73,11 @@ namespace SOS if (File.Exists(filePath)) { AssemblyName name = AssemblyName.GetAssemblyName(filePath); - - if (name.Version >= minimumVersion) - { + if (name.Version >= minimumVersion) { assembly = Assembly.LoadFile(filePath); return true; } } - assembly = null; return false; }