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); }
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; }
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; }
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; }