Example #1
0
 public void Dispose()
 {
     if (this.resolver != null)
     {
         this.resolver.Dispose();
         this.resolver = null;
     }
 }
Example #2
0
        public AutoRunner(Assembly testAssembly)
        {
            TypeHelper.InvokeFutureStaticMethod(
                typeof(System.Windows.Forms.Application), "EnableVisualStyles");

            this.resolver = new AssemblyResolverManager();
            this.resolver.AddMbUnitDirectories();
            this.domain = new AssemblyTestDomain(testAssembly);
        }
Example #3
0
        private static Dictionary <string, PathEntry> GetLocalServices(bool withChildren)
        {
            return(LocalServicesCache.GetOrAdd(withChildren, wChildren =>
            {
                var logFilesServices = DiscoveryService.GetLocalRegisteredServices("LOG.FILE");
                var logHttpServices = DiscoveryService.GetLocalRegisteredServices("LOG.HTTP");
                var traceFilesServices = DiscoveryService.GetLocalRegisteredServices("TRACE.FILE");
                var statusHttpServices = DiscoveryService.GetRegisteredServices("STATUS.HTTP");
                var statusFilesServices = DiscoveryService.GetLocalRegisteredServices("STATUS.FILE");

                var appNames = traceFilesServices.Select(ts => ts.ApplicationName).ToArray();

                if (Core.Settings["ImportRemoteAssemblies"].ParseTo(false) && Core.Settings["ImportRemoteAssembliesPath"] != null)
                {
                    var folderServices = DiscoveryService.GetLocalRegisteredServices("FOLDERS");
                    var folderServicesData = folderServices
                                             .Where((s, names) => names.Contains(s.ApplicationName) && s.ApplicationName != Core.ApplicationName, appNames)
                                             .Select(s => s.Data.GetValue() is string[] strArray ? strArray[0] : null)
                                             .ToArray();

                    var destinationPath = Core.Settings["ImportRemoteAssembliesPath"];
                    foreach (var path in folderServicesData)
                    {
                        var localExeFiles = Directory.EnumerateFiles(path, "*.exe", SearchOption.AllDirectories);
                        var localDllFiles = Directory.EnumerateFiles(path, "*.dll", SearchOption.AllDirectories);
                        var localFiles = localExeFiles.Concat(localDllFiles);
                        foreach (var file in localFiles)
                        {
                            try
                            {
                                var name = AssemblyName.GetAssemblyName(file);
                                if (AssemblyResolver.IsExcludedAssembly(name.Name))
                                {
                                    continue;
                                }
                                var destinationFile = Path.Combine(destinationPath, Path.GetFileName(file));
                                if (!System.IO.File.Exists(destinationFile))
                                {
                                    System.IO.File.Copy(file, destinationFile);
                                }
                            }
                            catch (BadImageFormatException)
                            {
                                //
                            }
                            catch (Exception)
                            {
                                //
                            }
                        }
                    }

                    var asmResolver = AssemblyResolverManager.GetAssemblyResolver();
                    asmResolver?.AppendPath(destinationPath);
                }
Example #4
0
        /// <summary>
        /// Construtor padrão.
        /// </summary>
        /// <param name="assemblyResolveManager"></param>
        /// <param name="assemblyFiles"></param>
        public DirectoryAssemblyPackage(AssemblyResolverManager assemblyResolveManager, IEnumerable <string> assemblyFiles)
        {
            _assemblyResolverManager = assemblyResolveManager;
            var directories = assemblyFiles.Select(f => System.IO.Path.GetDirectoryName(f)).Distinct().Select(f => new System.IO.DirectoryInfo(f)).Where(f => f.Exists);
            var files       = new List <string>();

            foreach (var dir in directories)
            {
                files.AddRange(dir.GetFiles("*.dll", System.IO.SearchOption.TopDirectoryOnly).Select(f => f.FullName));
            }
            _assemblyPaths = assemblyFiles;
            _assemblyFiles = files;
        }
Example #5
0
        public void Dispose()
        {
            if (this.resolver != null)
            {
                this.resolver.Dispose();
                this.resolver = null;
            }

            if (this.Domain != null)
            {
                this.Domain.Dispose();
                this.domain = null;
            }
        }
 /// <summary>
 /// Construtor completo.
 /// </summary>
 /// <param name="repositoryDirectory">Diretório base do respositório.</param>
 /// <param name="assemblyFilesDirectories">Diretórios dos arquivos de assembly.</param>
 /// <param name="assemblyResolverManager">Instancia responsável por resolver os assemblies.</param>
 /// <param name="downloader">Instancia responsável pelo download dos assemblies.</param>
 /// <param name="validator">Instancia do validador dos pacotes.</param>
 /// <param name="assemblyInfoRepository">Repositório das informações do assembly.</param>
 public AssemblyRepository(string repositoryDirectory, string[] assemblyFilesDirectories, AssemblyResolverManager assemblyResolverManager, IAssemblyPackageDownloader downloader, IAssemblyPackageValidator validator, IAssemblyInfoRepository assemblyInfoRepository)
 {
     repositoryDirectory = repositoryDirectory ?? DefaultRepositoryDirectory;
     if (!System.IO.Directory.Exists(repositoryDirectory))
     {
         System.IO.Directory.CreateDirectory(repositoryDirectory);
     }
     _assemblyFilesDirectories = assemblyFilesDirectories ?? new string[0];
     _repositoryDirectory      = repositoryDirectory;
     _assemblyResolverManager  = assemblyResolverManager;
     _downloader             = downloader;
     _validator              = validator;
     _assemblyInfoRepository = assemblyInfoRepository;
     if (!System.IO.Directory.Exists(GetRepositoryFolder()))
     {
         System.IO.Directory.CreateDirectory(GetRepositoryFolder());
     }
 }
Example #7
0
        private Assembly[] DefaultGetAllAssemblies()
        {
            var resolver = AssemblyResolverManager.GetAssemblyResolver();

            if (!AllAssembliesLoaded || (!_usedResolver && resolver != null))
            {
                if (resolver != null)
                {
                    _usedResolver = true;
                }
                else
                {
                    var loaded = new HashSet <string>(AppDomain.CurrentDomain.GetAssemblies().Select(a => a.GetName().FullName));
                    foreach (var file in Directory.EnumerateFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll", SearchOption.TopDirectoryOnly).AsParallel())
                    {
                        try
                        {
                            var name = AssemblyName.GetAssemblyName(file);
                            if (loaded.Contains(name.FullName))
                            {
                                continue;
                            }
                            if (IsExcludedAssembly(name.Name))
                            {
                                continue;
                            }
                            AppDomain.CurrentDomain.Load(name);
                        }
                        catch
                        {
                            // ignored
                        }
                    }
                }
                AllAssembliesLoaded = true;
                _assemblies         = null;
                return(DefaultGetAssemblies());
            }
            return(_assemblies);
        }
Example #8
0
        private Assembly[] DefaultGetAllAssemblies()
        {
            var resolver = AssemblyResolverManager.GetAssemblyResolver();

            if (!AllAssembliesLoaded || (!_usedResolver && resolver != null))
            {
                if (resolver != null)
                {
                    _usedResolver = true;
                }
                else
                {
                    var loaded = AppDomain.CurrentDomain.GetAssemblies();
                    foreach (var file in Directory.EnumerateFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll", SearchOption.TopDirectoryOnly))
                    {
                        try
                        {
                            var name = AssemblyName.GetAssemblyName(file);
                            if (IsExcludedAssembly(name.Name))
                            {
                                continue;
                            }
                            if (loaded.All((l, fullName) => l.FullName != fullName, name.FullName))
                            {
                                AppDomain.CurrentDomain.Load(name);
                            }
                        }
                        catch
                        {
                            // ignored
                        }
                    }
                }
                AllAssembliesLoaded = true;
                _assemblies         = null;
                return(DefaultGetAssemblies());
            }
            return(_assemblies);
        }
 protected virtual void Dispose(bool disposing)
 {
     if (_downloader != null)
     {
         _downloader.Dispose();
         _downloader = null;
     }
     if (_startThread != null)
     {
         _startThread.Abort();
         _startThread = null;
     }
     if (_assemblyResolverManager != null)
     {
         _assemblyResolverManager.Dispose();
         _assemblyResolverManager = null;
     }
     foreach (var i in _packages)
     {
         i.Dispose();
     }
     _packages.Clear();
 }
Example #10
0
        protected override void OnHandler(ParameterHandlerInfo info)
        {
            Core.Log.Warning("Starting Serializer TEST");

            if (info.Arguments?.Contains("/complex") == true)
            {
                var file       = "c:\\temp\\complex.test.nbin.gz";
                var serializer = SerializerManager.GetByFileName(file);

                AssemblyResolverManager.RegisterDomain(new[] { @"C:\AGSW_GIT\Travel\src\Flights\Engines\Services\Agsw.Travel.Flights.Engines.Service\bin\Release\netcoreapp2.2" });
                //AssemblyResolverManager.RegisterDomain(new[] { @"C:\Repo\AgswGit\Travel\src\Flights\Engines\Services\Agsw.Travel.Flights.Engines.Service\bin\Release\netcoreapp2.2" });

                object value = null;
                try
                {
                    value = serializer.DeserializeFromFile <object>(file);
                    //value = rMsg.Body.GetValue();
                }
                catch (DeserializerException exGO)
                {
                    var jsonSerializer = new JsonTextSerializer {
                        Indent = true
                    };
                    jsonSerializer.SerializeToFile(exGO.Value, "c:\\temp\\complexObject-GenericObject.json");

                    var val = exGO.Value["Products"][5];
                }

                RunTestEx(value, 500, null);
                //GC.Collect();
                //GC.WaitForFullGCComplete();
                //RunTestEx(value, 200, new GZipCompressor());
                //GC.Collect();
                //GC.WaitForFullGCComplete();
                //RunTestEx(value, 200, new DeflateCompressor());

                return;
            }

            var sTest = new STest
            {
                FirstName = "Daniel",
                LastName  = "Redondo",
                Age       = 33,
                value     = 166
            };

            var collection = new List <List <STest> >();

            for (var i = 0; i <= 10; i++)
            {
                var colSTest = new List <STest>
                {
                    sTest, sTest, sTest, sTest, sTest, sTest,
                    sTest, sTest, sTest, sTest, sTest, sTest,
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 0, Age = 1, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 1, Age = 2, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 2, Age = 3, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 3, Age = 4, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 4, Age = 5, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 5, Age = 6, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 6, Age = 7, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 7, Age = 8, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 8, Age = 9, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 9, Age = 10, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 10, Age = 11
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 11, Age = 12
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 12, Age = 13
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 13, Age = 14
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 14, Age = 15
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 15, Age = 16
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 16, Age = 17
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 17, Age = 18
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 18, Age = 19
                    },
                    //new STest2 { FirstName = "Person" , LastName = "Person" + i + "." + i+19, Age = 20, New = "This is a test" }
                };
                collection.Add(colSTest);
            }

            var lt = new List <STest>
            {
                new STest {
                    FirstName = "Name1", LastName = "LName1", Age = 11
                },
                //new STest2 { FirstName = "Name2" , LastName = "LName2", Age = 20, New = "This is a test" }
            };

            var lt2 = new List <Test3>
            {
                new Test3 {
                    Values = new List <int> {
                        2, 3, 4, 5
                    }
                },
                new Test3 {
                    Values = new List <int> {
                        10, 11, 12, 13
                    }
                }
            };

            var dct = new Dictionary <string, int>
            {
                ["Value1"] = 1,
                ["Value2"] = 2,
                ["Value3"] = 3,
            };

            var colClone = collection[0].DeepClone();
            var clone    = collection.DeepClone();



            if (info.Arguments?.Contains("/parallel") == true)
            {
                RunSingleTest(collection[0], 2, false);
                Core.Log.InfoBasic("Press ENTER to Start:");
                Console.ReadLine();
                Task.WaitAll(
                    Enumerable.Range(0, 8).Select(i => Task.Run(() => RunSingleTest(collection[0], 200_000, false))).ToArray()
                    );
                Console.ReadLine();
                return;
            }

            RunTest(collection[0], 200_000, false);
        }
Example #11
0
        /// <summary>
        /// Recupera os assemblies contidos na stream informada.
        /// </summary>
        /// <param name="resolverManager"></param>
        /// <param name="assemblyRepositoryDirectory"></param>
        /// <param name="packageUid">Identificador do pacote.</param>
        /// <param name="packageStream"></param>
        /// <param name="canOverride">Identifica se é para sobreescreve os arquivos.</param>
        /// <param name="aggregateException"></param>
        /// <returns></returns>
        public static IEnumerable <System.Reflection.Assembly> LoadPackagedAssemblies(AssemblyResolverManager resolverManager, string assemblyRepositoryDirectory, Guid packageUid, System.IO.Stream packageStream, bool canOverride, out AggregateException aggregateException)
        {
            resolverManager.Require("resolverManager").NotNull();
            packageStream.Require("packageStream").NotNull();
            var exceptions = new List <Exception>();
            Dictionary <string, System.Reflection.Assembly> domainAssemblies = new Dictionary <string, System.Reflection.Assembly>(StringComparer.InvariantCultureIgnoreCase);

            foreach (var i in resolverManager.AppDomain.GetAssemblies())
            {
                var key = string.Format("{0}.dll", i.GetName().Name);
                if (!domainAssemblies.ContainsKey(key))
                {
                    domainAssemblies.Add(key, i);
                }
                else
                {
                    domainAssemblies[key] = i;
                }
            }
            string packageDirectory = null;

            if (!string.IsNullOrEmpty(assemblyRepositoryDirectory))
            {
                packageDirectory = System.IO.Path.Combine(assemblyRepositoryDirectory, packageUid.ToString());
                if (!System.IO.Directory.Exists(packageDirectory))
                {
                    System.IO.Directory.CreateDirectory(packageDirectory);
                }
            }
            using (var zipArchive = new IO.Compression.ZipArchive(packageStream, System.IO.FileAccess.Read))
            {
                if (packageDirectory != null)
                {
                    zipArchive.CopyToDirectory("", packageDirectory, canOverride);
                }
                var list = new List <System.Reflection.Assembly>();
                IEnumerable <AssemblyPart> deploymentParts = GetDeploymentParts(zipArchive);
                var resolver = new LoadPackageAssemblyResolver(resolverManager.AppDomain, domainAssemblies, deploymentParts, zipArchive, packageDirectory);
                resolverManager.Add(resolver);
                try
                {
                    foreach (AssemblyPart part in deploymentParts)
                    {
                        System.Reflection.Assembly assembly = null;
                        if (!domainAssemblies.TryGetValue(part.Source, out assembly))
                        {
                            if (packageDirectory == null)
                            {
                                var fileInfo = zipArchive.Files.Where(f => f.Name == part.Source).FirstOrDefault();
                                var raw      = new byte[fileInfo.Length];
                                using (var file = zipArchive.OpenRead(part.Source))
                                    file.Read(raw, 0, raw.Length);
                                try
                                {
                                    assembly = part.Load(resolverManager.AppDomain, raw);
                                }
                                catch (Exception ex)
                                {
                                    exceptions.Add(ex);
                                    continue;
                                }
                            }
                            else
                            {
                                try
                                {
                                    assembly = part.Load(resolverManager.AppDomain, System.IO.Path.Combine(packageDirectory, part.Source));
                                }
                                catch (Exception ex)
                                {
                                    exceptions.Add(ex);
                                    continue;
                                }
                                try
                                {
                                    assembly.GetTypes();
                                }
                                catch (System.Reflection.ReflectionTypeLoadException ex)
                                {
                                    exceptions.Add(new System.Reflection.ReflectionTypeLoadException(ex.Types, ex.LoaderExceptions, string.Format("An error ocurred when load types from assembly '{0}'", assembly.FullName)));
                                    continue;
                                }
                                catch (Exception ex)
                                {
                                    exceptions.Add(new Exception(string.Format("An error ocurred when load types from assembly '{0}'", assembly.FullName), ex));
                                    continue;
                                }
                            }
                            if (!domainAssemblies.ContainsKey(part.Source))
                            {
                                domainAssemblies.Add(part.Source, assembly);
                            }
                        }
                        list.Add(assembly);
                    }
                }
                finally
                {
                    resolverManager.Remove(resolver);
                }
                if (exceptions.Count > 0)
                {
                    aggregateException = new AggregateException(exceptions);
                }
                else
                {
                    aggregateException = null;
                }
                return(list);
            }
        }
Example #12
0
 public MainClass()
 {
     TypeHelper.InvokeFutureStaticMethod(typeof(System.Windows.Forms.Application), "EnableVisualStyles");
     this.resolver = new AssemblyResolverManager();
     this.resolver.AddMbUnitDirectories();
 }
Example #13
0
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="assemblyResolverManager"></param>
 /// <param name="uid"></param>
 /// <param name="packageFileName">Nome do arquivo do pacote.</param>
 public AssemblyPackageResult(AssemblyResolverManager assemblyResolverManager, Guid uid, string packageFileName)
 {
     _assemblyResolverManager = assemblyResolverManager;
     _packageUid      = uid;
     _packageFileName = packageFileName;
 }
Example #14
0
        public static void Init(Factories factories)
        {
            if (_initialized)
            {
                return;
            }
            _initialized = true;
            UpdateLocalUtc();
            Factory.SetFactories(factories);
            Status = Factory.CreateStatusEngine();
            Log    = Factory.CreateLogEngine();
            Trace  = Factory.CreateTraceEngine();
            factories.Init();
            GlobalSettings.ReloadSettings();
            DebugMode = DebugMode || GlobalSettings.DebugMode;
            if (DebugMode)
            {
                Log.InfoBasic("Core Init - Platform: {0} - OS: {1}", Factory.PlatformType, RuntimeInformation.OSDescription);
                Log.InfoBasic("Directory: {0}", Directory.GetCurrentDirectory());
            }
            AssemblyResolverManager.RegisterDomain();
            if (ServiceContainer.HasConsole)
            {
                Log.AddConsoleStorage();
            }

            if (Injector?.Settings != null && Injector.Settings.Interfaces.Count > 0)
            {
                //Init Log
                Log.LibDebug("Loading log engine configuration");
                var logStorages = Injector.GetNames <ILogStorage>();
                if (logStorages?.Any() == true)
                {
                    foreach (var name in logStorages)
                    {
                        if (!Settings[$"Core.Log.Storage.{name}.Enabled"].ParseTo(false))
                        {
                            continue;
                        }
                        Log.LibDebug("Loading log storage: {0}", name);
                        var lSto = Injector.New <ILogStorage>(name);
                        if (lSto == null)
                        {
                            Log.Warning("The Injection for \"{0}\" with name \"{1}\" is null.", typeof(ILogStorage).Name, name);
                            continue;
                        }
                        if (lSto.GetType() == typeof(ConsoleLogStorage))
                        {
                            Log.LibDebug("Console log storage already added, ignoring.");
                            continue;
                        }
                        Log.Storage.Add(lSto, Settings[$"Core.Log.Storage.{name}.LogLevel"].ParseTo(LogLevel.Error | LogLevel.Warning));
                    }
                }
                var logStorage = Log.Storage.Get(typeof(ConsoleLogStorage));
                if (!Settings["Core.Log.Storage.Console.Enabled"].ParseTo(true))
                {
                    Log.Storage.Remove(logStorage);
                }
                Log.Storage.ChangeStorageLogLevel(logStorage, Settings["Core.Log.Storage.Console.LogLevel"].ParseTo(LogStorageCollection.AllLevels));
                Log.MaxLogLevel = (LogLevel)GlobalSettings.LogMaxLogLevel;
                Log.Enabled     = GlobalSettings.LogEnabled;

                //Init Trace
                Log.LibDebug("Loading trace engine configuration");
                var traceStorages = Injector.GetNames <ITraceStorage>();
                if (traceStorages?.Any() == true)
                {
                    foreach (var name in traceStorages)
                    {
                        if (!Settings[$"Core.Trace.Storage.{name}.Enabled"].ParseTo(false))
                        {
                            continue;
                        }
                        Log.LibDebug("Loading trace storage: {0}", name);
                        var lTrace = Injector.New <ITraceStorage>(name);
                        if (lTrace == null)
                        {
                            Log.Warning("The Injection for \"{0}\" with name \"{1}\" is null.", typeof(ITraceStorage).Name, name);
                            continue;
                        }
                        Trace.Storage.Add(lTrace);
                    }
                }
                Trace.Enabled = GlobalSettings.TraceEnabled;

                //Init Status
                Log.LibDebug("Loading status engine configuration");
                var statusTransports = Injector.GetNames <IStatusTransport>();
                if (statusTransports?.Any() == true)
                {
                    foreach (var name in statusTransports)
                    {
                        if (!Settings[$"Core.Status.Transport.{name}.Enabled"].ParseTo(false))
                        {
                            continue;
                        }
                        Log.LibDebug("Loading status transport: {0}", name);
                        var sTransport = Injector.New <IStatusTransport>(name);
                        if (sTransport == null)
                        {
                            Log.Warning("The Injection for \"{0}\" with name \"{1}\" is null.", typeof(IStatusTransport).Name, name);
                            continue;
                        }
                        Status.Transports.Add(sTransport);
                    }
                }
                Status.Enabled = GlobalSettings.StatusEnabled;
            }

            try
            {
                var allAssemblies = Factory.GetAllAssemblies();
                var types         = allAssemblies.SelectMany(a =>
                {
                    try
                    {
                        return(a.DefinedTypes);
                    }
                    catch
                    {
                        // ignored
                    }
                    return(new TypeInfo[0]);
                }).Where(t => !t.IsAbstract && t.IsClass && t.ImplementedInterfaces.Contains(typeof(ICoreStart))).ToArray();
                if (types?.Any() == true)
                {
                    foreach (var type in types)
                    {
                        try
                        {
                            var instance = (ICoreStart)Activator.CreateInstance(type.AsType());
                            Log.LibDebug("Loading CoreStart from: {0}", instance);
                            instance.CoreInit(factories);
                        }
                        catch (Exception ex)
                        {
                            Log.Write(ex);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Write(ex);
            }

            Status.Attach(() =>
            {
                if (Settings == null)
                {
                    return(null);
                }
                var sItem = new StatusItem
                {
                    Name = "Application Information\\Settings"
                };
                Settings.OrderBy(i => i.Key).Each(i => sItem.Values.Add(i.Key, i.Value));
                return(sItem);
            });

            var onError = false;

            lock (OninitActions)
            {
                while (OninitActions.Count > 0)
                {
                    try
                    {
                        OninitActions.Dequeue()();
                    }
                    catch (Exception ex)
                    {
                        Log.Write(ex);
                        onError = true;
                    }
                }
            }
            Log.Start();

            Task.Delay(25).WaitAsync();

            var dlog = (Log as DefaultLogEngine);

            dlog?.LogDoneTask.WaitAsync();

            if (onError)
            {
                throw new Exception("Error initializing the application.");
            }

            Log.LibDebug("Core has been initialized.");
        }
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="repositoryDirectory">Diretório base do respositório.</param>
 /// <param name="assemblyFilesDirectories">Diretórios dos arquivos de assembly.</param>
 /// <param name="assemblyResolverManager">Instancia responsável por resolver os assemblies.</param>
 /// <param name="downloader">Instancia responsável pelo download dos assemblies.</param>
 /// <param name="validator">Instancia do validador dos pacotes.</param>
 public AssemblyRepository(string repositoryDirectory, string[] assemblyFilesDirectories, AssemblyResolverManager assemblyResolverManager, IAssemblyPackageDownloader downloader, IAssemblyPackageValidator validator) : this(repositoryDirectory, assemblyFilesDirectories, assemblyResolverManager, downloader, validator, null)
 {
 }