Exemplo n.º 1
0
        public References(
            INugetPackages packages,
            IEventService eventService,
            ILogger <References> logger,
            IOptions <Settings> options
            )
        {
            Assemblies = QUANTUM_CORE_ASSEMBLIES.ToImmutableArray();
            Nugets     = packages;
            Logger     = logger;

            var referencesOptions = options.Value;

            if (referencesOptions?.AutoLoadPackages is string autoLoadPkgs)
            {
                logger.LogInformation(
                    "Auto-load packages overridden by startup options: \"{0}\"",
                    referencesOptions.AutoLoadPackages
                    );
                AutoLoadPackages = ParsePackages(autoLoadPkgs);
            }

            _metadata = new Lazy <CompilerMetadata>(() => new CompilerMetadata(this.Assemblies));

            AssemblyLoadContext.Default.Resolving += Resolve;

            eventService?.TriggerServiceInitialized <IReferences>(this);
        }
Exemplo n.º 2
0
        public References(
            INugetPackages packages,
            IEventService eventService,
            ILogger <References> logger
            )
        {
            Assemblies = QUANTUM_CORE_ASSEMBLIES.ToImmutableArray();
            Nugets     = packages;

            eventService?.TriggerServiceInitialized <IReferences>(this);

            foreach (var pkg in BUILT_IN_PACKAGES)
            {
                try
                {
                    this.AddPackage(pkg).Wait();
                }
                catch (AggregateException e)
                {
                    logger.LogError($"Unable to load package '{pkg}':  {e.InnerException.Message}");
                }
            }

            _metadata = new Lazy <CompilerMetadata>(() => new CompilerMetadata(this.Assemblies));

            AssemblyLoadContext.Default.Resolving += Resolve;
        }
Exemplo n.º 3
0
        public References(
            INugetPackages packages,
            IEventService eventService,
            ILogger <References> logger,
            IOptions <Settings> options
            )
        {
            Assemblies = QUANTUM_CORE_ASSEMBLIES.ToImmutableArray();
            Nugets     = packages;

            eventService?.TriggerServiceInitialized <IReferences>(this);

            var referencesOptions = options.Value;

            if (referencesOptions?.AutoLoadPackages is string pkgs)
            {
                logger.LogInformation(
                    "Auto-load packages overridden by startup options: \"{0}\"",
                    referencesOptions.AutoLoadPackages
                    );
                AutoLoadPackages =
                    pkgs.Trim() == "$null"
                    ? ImmutableList <string> .Empty
                    : pkgs
                    .Split(",")
                    .Select(pkg => pkg.Trim())
                    .ToImmutableList();
            }

            foreach (var pkg in AutoLoadPackages)
            {
                try
                {
                    this.AddPackage(pkg).Wait();
                }
                catch (AggregateException e)
                {
                    logger.LogError($"Unable to load package '{pkg}':  {e.InnerException.Message}");
                }
            }

            _metadata = new Lazy <CompilerMetadata>(() => new CompilerMetadata(this.Assemblies));

            AssemblyLoadContext.Default.Resolving += Resolve;
        }
Exemplo n.º 4
0
        public References(
            INugetPackages packages,
            IEventService eventService,
            ILogger <References> logger,
            IOptions <Settings> options
            )
        {
            Assemblies = QUANTUM_CORE_ASSEMBLIES.ToImmutableArray();
            Nugets     = packages;

            eventService?.TriggerServiceInitialized <IReferences>(this);

            var referencesOptions = options.Value;

            if (referencesOptions?.AutoLoadPackages is string autoLoadPkgs)
            {
                logger.LogInformation(
                    "Auto-load packages overridden by startup options: \"{0}\"",
                    referencesOptions.AutoLoadPackages
                    );
                AutoLoadPackages = ParsePackages(autoLoadPkgs);
            }

            if (referencesOptions?.DeferredLoadPackages is string deferredLoadPkgs)
            {
                logger.LogInformation(
                    "Deferred-load packages overridden by startup options: \"{0}\"",
                    referencesOptions.DeferredLoadPackages
                    );
                DeferredLoadPackages = ParsePackages(deferredLoadPkgs);
            }

            foreach (var pkg in AutoLoadPackages)
            {
                try
                {
                    this.AddPackage(pkg).Wait();
                }
                catch (AggregateException e)
                {
                    logger.LogError($"Unable to load package '{pkg}':  {e.InnerException.Message}");
                }
            }

            foreach (var pkg in DeferredLoadPackages)
            {
                // Don't wait for DeferredLoadPackages to finish loading
                this.AddPackage(pkg).ContinueWith(task =>
                {
                    if (task.Exception is AggregateException e)
                    {
                        logger.LogError(e, $"Unable to load package '{pkg}': {e.InnerException.Message}");
                    }
                    else
                    {
                        logger.LogError(task.Exception, $"Unable to load package '{pkg}': {task.Exception.Message}");
                    }
                }, TaskContinuationOptions.OnlyOnFaulted);
            }

            _metadata = new Lazy <CompilerMetadata>(() => new CompilerMetadata(this.Assemblies));

            AssemblyLoadContext.Default.Resolving += Resolve;
        }