public bool BuildNativeImages(PublishRoot root) { var success = true; // REVIEW: Does does doing this for multiple runtimes make sense? foreach (var runtime in root.Runtimes) { var runtimeBin = Path.Combine(runtime.TargetPath, "bin"); var options = new CrossgenOptions() { CrossgenPath = Path.Combine(runtimeBin, "crossgen.exe"), InputPaths = ResolveOutputAssemblies(root), RuntimePath = runtimeBin, Symbols = false }; var crossgenManager = new CrossgenManager(options); success &= crossgenManager.GenerateNativeImages(); if (!success) { return false; } } return success; }
public int Main(string[] args) { var app = new CommandLineApplication(throwOnUnexpectedArg: false); app.Name = "Microsoft.Dnx.Project"; app.FullName = app.Name; app.HelpOption("-?|-h|--help"); // Show help information if no subcommand/option was specified app.OnExecute(() => { app.ShowHelp(); return(2); }); app.Command("crossgen", c => { c.Description = "Do CrossGen"; var optionIn = c.Option("--in <INPUT_DIR>", "Input directory", CommandOptionType.MultipleValue); var optionOut = c.Option("--out <OUTOUT_DIR>", "Output directory", CommandOptionType.SingleValue); var optionExePath = c.Option("--exePath", "Exe path", CommandOptionType.SingleValue); var optionRuntimePath = c.Option("--runtimePath <PATH>", "Runtime path", CommandOptionType.SingleValue); var optionSymbols = c.Option("--symbols", "Use symbols", CommandOptionType.NoValue); var optionPartial = c.Option("--partial", "Allow partial NGEN", CommandOptionType.NoValue); c.HelpOption("-?|-h|--help"); c.OnExecute(() => { var crossgenOptions = new CrossgenOptions(); crossgenOptions.InputPaths = optionIn.Values; crossgenOptions.RuntimePath = optionRuntimePath.Value(); crossgenOptions.CrossgenPath = optionExePath.Value(); crossgenOptions.Symbols = optionSymbols.HasValue(); crossgenOptions.Partial = optionPartial.HasValue(); var gen = new CrossgenManager(crossgenOptions); if (!gen.GenerateNativeImages()) { return(1); } return(0); }); }); app.Execute(args); return(0); }
public int Main(string[] args) { var app = new CommandLineApplication(throwOnUnexpectedArg: false); app.Name = "Microsoft.Dnx.Project"; app.FullName = app.Name; app.HelpOption("-?|-h|--help"); // Show help information if no subcommand/option was specified app.OnExecute(() => { app.ShowHelp(); return 2; }); app.Command("crossgen", c => { c.Description = "Do CrossGen"; var optionIn = c.Option("--in <INPUT_DIR>", "Input directory", CommandOptionType.MultipleValue); var optionOut = c.Option("--out <OUTOUT_DIR>", "Output directory", CommandOptionType.SingleValue); var optionExePath = c.Option("--exePath", "Exe path", CommandOptionType.SingleValue); var optionRuntimePath = c.Option("--runtimePath <PATH>", "Runtime path", CommandOptionType.SingleValue); var optionSymbols = c.Option("--symbols", "Use symbols", CommandOptionType.NoValue); var optionPartial = c.Option("--partial", "Allow partial NGEN", CommandOptionType.NoValue); c.HelpOption("-?|-h|--help"); c.OnExecute(() => { var crossgenOptions = new CrossgenOptions(); crossgenOptions.InputPaths = optionIn.Values; crossgenOptions.RuntimePath = optionRuntimePath.Value(); crossgenOptions.CrossgenPath = optionExePath.Value(); crossgenOptions.Symbols = optionSymbols.HasValue(); crossgenOptions.Partial = optionPartial.HasValue(); var gen = new CrossgenManager(crossgenOptions); if (!gen.GenerateNativeImages()) { return 1; } return 0; }); }); app.Execute(args); return 0; }
public bool BuildNativeImages(PublishRoot root) { var success = true; foreach (var runtime in root.Runtimes) { NuGetDependencyResolver resolver; if (!_resolverLookup.TryGetValue(runtime.Framework, out resolver)) { throw new InvalidOperationException("No matching framework is found for " + runtime.Framework); } var runtimeBin = Path.Combine(runtime.TargetPath, "bin"); var options = new CrossgenOptions() { CrossgenPath = Path.Combine(runtimeBin, "crossgen.exe"), InputPaths = ResolveOutputAssemblies(root, resolver), RuntimePath = runtimeBin, Symbols = false }; var crossgenManager = new CrossgenManager(options); success &= crossgenManager.GenerateNativeImages(); if (!success) { return false; } } return success; }
public CrossgenManager(CrossgenOptions options) { _options = options; _universe = BuildUniverse(options.RuntimePath, options.InputPaths); }