public static void LoadPackages(Action<IPackageFacility> configuration, bool runActivators = true) { _packages.Clear(); Diagnostics = new PackagingDiagnostics(); var record = new PackageLoadingRecord(); Diagnostics.LogExecution(record, () => { var facility = new PackageFacility(); var assemblyLoader = new AssemblyLoader(Diagnostics); var graph = new PackagingRuntimeGraph(Diagnostics, assemblyLoader, _packages); var codeLocation = findCallToLoadPackages(); graph.PushProvenance(codeLocation); configuration(facility); facility.Configure(graph); graph.PopProvenance(); graph.DiscoverAndLoadPackages(() => { _assemblies.Clear(); _assemblies.AddRange(assemblyLoader.Assemblies); }, runActivators); }); record.Finished = DateTime.Now; //_packages.Clear(); }
public static void LoadPackages(Action <IPackageFacility> configuration, bool runActivators = true) { _packages.Clear(); Diagnostics = new PackagingDiagnostics(); var record = new PackageLoadingRecord(); Diagnostics.LogExecution(record, () => { var facility = new PackageFacility(); var assemblyLoader = new AssemblyLoader(Diagnostics); var graph = new PackagingRuntimeGraph(Diagnostics, assemblyLoader, _packages); var codeLocation = findCallToLoadPackages(); graph.PushProvenance(codeLocation); configuration(facility); facility.Configure(graph); graph.PopProvenance(); graph.DiscoverAndLoadPackages(() => { _assemblies.Clear(); _assemblies.AddRange(assemblyLoader.Assemblies); }, runActivators); }); record.Finished = DateTime.Now; //_packages.Clear(); }
/// <summary> /// The entry method into the bottles environment /// </summary> /// <param name="configuration"></param> /// <param name="runActivators"></param> public static void LoadPackages(Action<IPackageFacility> configuration, bool runActivators = true) //consider renaming to InitializeEnvironment //have it return an environment object. { _packages.Clear(); Diagnostics = new PackagingDiagnostics(); var record = new PackageLoadingRecord(); Diagnostics.LogExecution(record, () => { var facility = new PackageFacility(); var assemblyLoader = new AssemblyLoader(Diagnostics); var graph = new PackagingRuntimeGraph(Diagnostics, assemblyLoader, _packages); var codeLocation = findCallToLoadPackages(); graph.InProvenance(codeLocation, g => { //collect user configuration configuration(facility); //applies collected configurations facility.Configure(g); }); graph.DiscoverAndLoadPackages(() => { //clearing assemblies why? - my guess is testing. // this should only really be called once. _assemblies.Clear(); _assemblies.AddRange(assemblyLoader.Assemblies); //the above assemblies are used when we need to resolve bottle assemblies }, runActivators); }); record.Finished = DateTime.Now; }
/// <summary> /// The entry method into the bottles environment /// </summary> /// <param name="configuration"></param> /// <param name="runActivators"></param> public static void LoadPackages(Action <IPackageFacility> configuration, bool runActivators = true) //consider renaming to InitializeEnvironment //have it return an environment object. { _packages.Clear(); Diagnostics = new PackagingDiagnostics(); var record = new PackageLoadingRecord(); Diagnostics.LogExecution(record, () => { var facility = new PackageFacility(); var assemblyLoader = new AssemblyLoader(Diagnostics); var graph = new PackagingRuntimeGraph(Diagnostics, assemblyLoader, _packages); var codeLocation = findCallToLoadPackages(); graph.InProvenance(codeLocation, g => { //collect user configuration configuration(facility); //applies collected configurations facility.Configure(g); }); graph.DiscoverAndLoadPackages(() => { //clearing assemblies why? - my guess is testing. // this should only really be called once. _assemblies.Clear(); _assemblies.AddRange(assemblyLoader.Assemblies); //the above assemblies are used when we need to resolve bottle assemblies }, runActivators); }); record.Finished = DateTime.Now; }