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);
        }
Example #2
0
        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();
            }
        }
Example #3
0
        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));
        }