Esempio n. 1
0
        public IProblemPluginFacade Provide(Guid taskDefinitionGuid,
                                            string mainDllName)
        {
            var assemblyPath =
                _pathsProvider.GetTaskDefinitionMainAssemblyPath(
                    taskDefinitionGuid, mainDllName);

            var taskAssembly = _assemblyLoader.LoadAssembly(assemblyPath);

            return(_problemPluginFacadeFactory.Create(taskAssembly));
        }
Esempio n. 2
0
        public AppDomainContext LoadPackageAssemblies(
            string appDomainId,
            NuGetFramework framework,
            PackageIdentity packageIdentity)
        {
            var pathResolver = new VersionFolderPathResolver(_settings.GlobalPackagesFolder);
            var hashPath     = pathResolver.GetHashPath(packageIdentity.Id, packageIdentity.Version);

            if (!File.Exists(hashPath))
            {
                throw new InvalidOperationException($"The package '{packageIdentity}' could not found.");
            }

            var installPath = pathResolver.GetInstallPath(packageIdentity.Id, packageIdentity.Version);

            using (var packageReader = new PackageFolderReader(installPath))
            {
                var conventions = new ManagedCodeConventions(null);
                var criteria    = conventions.Criteria.ForFramework(framework);

                var files = packageReader
                            .GetFiles()
                            .Select(p => p.Replace(Path.DirectorySeparatorChar, AssetDirectorySeparator))
                            .ToList();

                var contentItems = new ContentItemCollection();
                contentItems.Load(files);

                var runtimeGroup = contentItems.FindBestItemGroup(
                    criteria,
                    conventions.Patterns.RuntimeAssemblies);

                var appDomainContext = _loader.GetAppDomainContext(appDomainId);

                foreach (var asset in runtimeGroup.Items)
                {
                    var absolutePath = Path.Combine(installPath, asset.Path.Replace(AssetDirectorySeparator, Path.DirectorySeparatorChar));
                    _loader.LoadAssembly(appDomainContext, absolutePath);
                }

                return(appDomainContext);
            }
        }
Esempio n. 3
0
        public List <Dependency> AnalyseAssembly(IAssembly currentAssembly, string outputPath)
        {
            var assemblyName = currentAssembly.GetName();

            if (!IsAlreadyAnalysed(assemblyName))
            {
                foreach (AssemblyName referencedName in currentAssembly.GetReferencedAssemblies())
                {
                    var assemblyInLib = _assemblyLoader.LoadAssembly(Path.Combine(outputPath, referencedName.Name + ".dll"));
                    if (assemblyInLib != null)
                    {
                        AssemblyName assemblyInLibName = assemblyInLib.GetName();
                        AddToDependencyList(assemblyName, referencedName, assemblyInLibName);
                        AnalyseAssembly(assemblyInLib, outputPath);
                    }
                }
            }
            return(_dependencies);
        }
 public Assembly Load(AssemblyName assemblyName)
 {
     return(Assembly.Load(loader.LoadAssembly(assemblyName)));
 }