public SvcutilBootstrapper(SvcutilOptions options) { this.Options = options ?? throw new ArgumentNullException(nameof(options)); this.Options.ProviderId = $"{Tool.ToolName}-bootstrap"; this.Options.Version = Tool.PackageVersion; // reset options that don't apply to the bootstrapper and that prevent bootstrapping recursion. this.Options.NoBootstrapping = true; this.Options.NoLogo = true; this.Options.NoProjectUpdates = true; // the operational context has some control over what messages to display on the UI. if (this.Options.ToolContext.HasValue && this.Options.ToolContext.Value <= OperationalContext.Global) { this.Options.ToolContext = OperationalContext.Bootstrapper; } ProjectDependency.RemoveRedundantReferences(this.Options.References); }
private static async Task GenerateParamsFileAsync(CommandProcessorOptions options, ILogger logger, CancellationToken cancellationToken) { // params file is generated on first run, never on update and never by the bootstrapper. if (!(options.IsUpdateOperation || options.NoProjectUpdates == true)) { using (var safeLogger = await SafeLogger.WriteStartOperationAsync(logger, "Generating svcutil params file ...").ConfigureAwait(false)) { var updateOptions = options.CloneAs <UpdateOptions>(); updateOptions.ProviderId = Tool.ToolName; updateOptions.Version = Tool.PackageVersion; ProjectDependency.RemoveRedundantReferences(updateOptions.References); updateOptions.MakePathsRelativeTo(options.OutputDir); var paramsFile = Path.Combine(options.OutputDir.FullName, CommandProcessorOptions.SvcutilParamsFileName); await AsyncHelper.RunAsync(() => updateOptions.Save(paramsFile), cancellationToken).ConfigureAwait(false); } } }