public LaunchSettingsApplyResult TryApplySettings(JsonElement model, ref ICommand command) { var config = new ProjectLaunchSettingsModel(); foreach (var property in model.EnumerateObject()) { if (string.Equals(property.Name, nameof(ProjectLaunchSettingsModel.CommandLineArgs), StringComparison.OrdinalIgnoreCase)) { if (!TryGetStringValue(property.Value, out var commandLineArgsValue)) { return(new LaunchSettingsApplyResult(false, string.Format(LocalizableStrings.CouldNotConvertToString, property.Name))); } config.CommandLineArgs = commandLineArgsValue; } else if (string.Equals(property.Name, nameof(ProjectLaunchSettingsModel.LaunchBrowser), StringComparison.OrdinalIgnoreCase)) { if (!TryGetBooleanValue(property.Value, out var launchBrowserValue)) { return(new LaunchSettingsApplyResult(false, string.Format(LocalizableStrings.CouldNotConvertToBoolean, property.Name))); } config.LaunchBrowser = launchBrowserValue; } else if (string.Equals(property.Name, nameof(ProjectLaunchSettingsModel.LaunchUrl), StringComparison.OrdinalIgnoreCase)) { if (!TryGetStringValue(property.Value, out var launchUrlValue)) { return(new LaunchSettingsApplyResult(false, string.Format(LocalizableStrings.CouldNotConvertToString, property.Name))); } config.LaunchUrl = launchUrlValue; } else if (string.Equals(property.Name, nameof(ProjectLaunchSettingsModel.ApplicationUrl), StringComparison.OrdinalIgnoreCase)) { if (!TryGetStringValue(property.Value, out var applicationUrlValue)) { return(new LaunchSettingsApplyResult(false, string.Format(LocalizableStrings.CouldNotConvertToString, property.Name))); } config.ApplicationUrl = applicationUrlValue; } else if (string.Equals(property.Name, nameof(ProjectLaunchSettingsModel.EnvironmentVariables), StringComparison.OrdinalIgnoreCase)) { if (property.Value.Type != JsonValueType.Object) { return(new LaunchSettingsApplyResult(false, string.Format(LocalizableStrings.ValueMustBeAnObject, property.Name))); } foreach (var environmentVariable in property.Value.EnumerateObject()) { if (TryGetStringValue(environmentVariable.Value, out var environmentVariableValue)) { config.EnvironmentVariables[environmentVariable.Name] = environmentVariableValue; } } } } if (!string.IsNullOrEmpty(config.ApplicationUrl)) { command.EnvironmentVariable("ASPNETCORE_URLS", config.ApplicationUrl); } //For now, ignore everything but the environment variables section foreach (var entry in config.EnvironmentVariables) { string value = Environment.ExpandEnvironmentVariables(entry.Value); //NOTE: MSBuild variables are not expanded like they are in VS command.EnvironmentVariable(entry.Key, value); } return(new LaunchSettingsApplyResult(true, null, config.LaunchUrl)); }
public LaunchSettingsApplyResult TryGetLaunchSettings(JsonElement model) { var config = new ProjectLaunchSettingsModel(); foreach (var property in model.EnumerateObject()) { if (string.Equals(property.Name, nameof(ProjectLaunchSettingsModel.CommandLineArgs), StringComparison.OrdinalIgnoreCase)) { if (!TryGetStringValue(property.Value, out var commandLineArgsValue)) { return(new LaunchSettingsApplyResult(false, string.Format(LocalizableStrings.CouldNotConvertToString, property.Name))); } config.CommandLineArgs = commandLineArgsValue; } else if (string.Equals(property.Name, nameof(ProjectLaunchSettingsModel.LaunchBrowser), StringComparison.OrdinalIgnoreCase)) { if (!TryGetBooleanValue(property.Value, out var launchBrowserValue)) { return(new LaunchSettingsApplyResult(false, string.Format(LocalizableStrings.CouldNotConvertToBoolean, property.Name))); } config.LaunchBrowser = launchBrowserValue; } else if (string.Equals(property.Name, nameof(ProjectLaunchSettingsModel.LaunchUrl), StringComparison.OrdinalIgnoreCase)) { if (!TryGetStringValue(property.Value, out var launchUrlValue)) { return(new LaunchSettingsApplyResult(false, string.Format(LocalizableStrings.CouldNotConvertToString, property.Name))); } config.LaunchUrl = launchUrlValue; } else if (string.Equals(property.Name, nameof(ProjectLaunchSettingsModel.ApplicationUrl), StringComparison.OrdinalIgnoreCase)) { if (!TryGetStringValue(property.Value, out var applicationUrlValue)) { return(new LaunchSettingsApplyResult(false, string.Format(LocalizableStrings.CouldNotConvertToString, property.Name))); } config.ApplicationUrl = applicationUrlValue; } else if (string.Equals(property.Name, nameof(ProjectLaunchSettingsModel.DotNetRunMessages), StringComparison.OrdinalIgnoreCase)) { if (!TryGetStringValue(property.Value, out var dotNetRunMessages)) { return(new LaunchSettingsApplyResult(false, string.Format(LocalizableStrings.CouldNotConvertToString, property.Name))); } config.DotNetRunMessages = dotNetRunMessages; } else if (string.Equals(property.Name, nameof(ProjectLaunchSettingsModel.EnvironmentVariables), StringComparison.OrdinalIgnoreCase)) { if (property.Value.ValueKind != JsonValueKind.Object) { return(new LaunchSettingsApplyResult(false, string.Format(LocalizableStrings.ValueMustBeAnObject, property.Name))); } foreach (var environmentVariable in property.Value.EnumerateObject()) { if (TryGetStringValue(environmentVariable.Value, out var environmentVariableValue)) { config.EnvironmentVariables[environmentVariable.Name] = environmentVariableValue; } } } } return(new LaunchSettingsApplyResult(true, null, config)); }