private Assembly AssemblyResolve(Assembly targetAssembly, VSProject relatedProject, ResolveEventArgs args) { var targetFramework = relatedProject.Properties.SingleOrDefault(p => p.Name == "TargetFramework").Value; var runtimeTarget = this.depsJsonObject.runtimeTarget.name; var targets = (object)this.depsJsonObject.targets; var target = targets.GetDynamicMemberValue <object>((string)runtimeTarget); var targetPairs = target.GetDynamicMemberNameValueDictionary(); var parts = AssemblyExtensions.GetNameParts(args.Name); Assembly assembly = null; if (!mscorlibLoaded) { var mscorlib = targetAssembly.FindCoreAssembly(@"microsoft.netcore.app\2.1.0\ref\netcoreapp2.1\mscorlib.dll"); var systemCore = targetAssembly.FindCoreAssembly(@"microsoft.netcore.app\2.1.0\ref\netcoreapp2.1\System.Core.dll"); mscorlibLoaded = true; } foreach (var targetPair in targetPairs) { var targetValue = targetPair.Value; var compile = targetValue.GetDynamicMemberValue <object>("compile"); if (compile != null) { var compilePairs = compile.GetDynamicMemberNameValueDictionary(); foreach (var compilePair in compilePairs) { var key = compilePair.Key; var assemblyNameFile = key.Split("/").LastOrDefault(); var assemblyName = Path.GetFileNameWithoutExtension(assemblyNameFile); if (assemblyName == parts.AssemblyName) { var partialPath = targetPair.Key.BackSlashes() + @"\" + key.BackSlashes(); assembly = targetAssembly.FindCoreAssembly(partialPath); if (assembly != null) { return(assembly); } } } } } return(null); }