public PackManager(IServiceProvider hostServices, PackOptions options) { _hostServices = hostServices; _options = options; _options.ProjectDir = Normalize(_options.ProjectDir); ScriptExecutor = new ScriptExecutor(); }
public PackManager(IServiceProvider hostServices, PackOptions options) { _hostServices = hostServices; _options = options; _options.ProjectDir = Normalize(_options.ProjectDir); var outputDir = _options.OutputDir ?? Path.Combine(_options.ProjectDir, "bin", "output"); _options.OutputDir = Normalize(outputDir); ScriptExecutor = new ScriptExecutor(); }
/// <summary> /// This is the factory method to instantiate a PackNativeManager, if parameters are in invalid state and native /// generation cannot be performed, it would return null /// </summary> public static NativeImageGenerator Create(PackOptions options, PackRoot root, IEnumerable <DependencyContext> contexts) { if (options.Runtimes.Count() == 0) { options.Reports.Information.WriteLine( "Please provide target CoreCLR runtimes using --runtime flags".Yellow()); return(null); } foreach (var runtime in root.Runtimes) { var frameworkName = runtime.Framework; // NOTE: !IsDesktop == IsCore and only Core packages can be crossgened at least for now if (VersionUtility.IsDesktop(frameworkName)) { options.Reports.Information.WriteLine( "Native image generation is only supported for KLR Core flavors.".Yellow()); return(null); } } var duplicates = options.Runtimes .GroupBy(r => CrossgenManager.ResolveProcessorArchitecture(r)) .Where(g => g.Count() > 1); if (duplicates.Any()) { var message = "The following runtimes will result in output conflicts. Please provide distinct KRE flavor for each processor architecture:\n" + string.Join("\n", duplicates.Select( g => string.Format("Architecture: {0}\nRuntimes: {1}", g.Key, string.Join(", ", g)))); options.Reports.Information.WriteLine(message.Yellow()); return(null); } var contextMap = contexts.ToDictionary( context => context.FrameworkName, context => context.NuGetDependencyResolver ); return(new NativeImageGenerator(contextMap)); }