public CoreClrAssemblyLoader(PackageGraph graph, string assemblyPath) { _graph = graph; _assemblyPaths = new Dictionary <AssemblyName, string>(new AssemblyNameComparer()); var directory = new DirectoryInfo(Path.GetDirectoryName(assemblyPath)); if (directory.Exists) { foreach (var assembly in directory.EnumerateFiles("*.dll")) { if (TryGetAssemblyName(assembly.FullName, out var name)) { _assemblyPaths.Add(name, assembly.FullName); } } } foreach (var path in graph.GetAssembliesFullPath()) { if (TryGetAssemblyName(path, out var name) && !_assemblyPaths.ContainsKey(name)) { _assemblyPaths.Add(name, path); } } _loadContext = new ApiCheckLoadContext(FindAssemblyPath); }
public async Task PackageWithDependencyAreResolved() { using (var helper = new TestDeploymentHelper().WithConfiguration().AndNuGetSource()) { var newPackages = new[] { new PackageId("bootstrap", "[3.3.7]", false) }; var engine = helper.CreatEngine(); var discoveredPackages = await engine.PackageDiscoverer.Discover(PackageGraph.Empty(), newPackages); var plan = await engine.PackageDeployer.PlanInstallation(PackageGraph.Empty(), discoveredPackages); plan.InstallCount.Should().Be(2); var packages = plan.TargetPackageGraph.FlattenLeastDependentFirst(); packages.FirstOrDefault(x => x.IsSamePackage(new PackageId("bootstrap/3.3.7"))).Should().NotBeNull(); packages.FirstOrDefault(x => x.Id == "jQuery").Should().NotBeNull(); } }
public static Assembly LoadAssembly( string assemblyPath, string assetsJson, string framework) { #if NETCOREAPP3_0 var lockFile = new LockFileFormat().Read(assetsJson); var graph = PackageGraph.Create(lockFile, framework); var loader = new CoreClrAssemblyLoader(graph, assemblyPath); #else var assemblyDirectory = Path.GetDirectoryName(assemblyPath); var loader = new FullFrameworkAssemblyLoader(assemblyDirectory); #endif return(loader.Load(assemblyPath)); }