| File: LaunchSettings\LaunchProfileParser.cs | Web Access |
| Project: src\sdk\src\Microsoft.DotNet.ProjectTools\Microsoft.DotNet.ProjectTools.csproj (Microsoft.DotNet.ProjectTools) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Immutable; namespace Microsoft.DotNet.ProjectTools; internal abstract class LaunchProfileParser { public abstract LaunchProfileParseResult ParseProfile(string launchSettingsPath, string? launchProfileName, string json); protected static string? ParseCommandLineArgs(string? value) => value != null ? ExpandVariables(value) : null; public static string GetLaunchProfileDisplayName(string? launchProfile) => string.IsNullOrEmpty(launchProfile) ? Resources.DefaultLaunchProfileDisplayName : launchProfile; protected static ImmutableDictionary<string, string> ParseEnvironmentVariables(ImmutableDictionary<string, string> values) { if (values.Count == 0) { return values; } var builder = ImmutableDictionary.CreateBuilder<string, string>(StringComparer.Ordinal); foreach (var (key, value) in values) { // override previously set variables: builder[key] = ExpandVariables(value); } return builder.ToImmutable(); } // TODO: Expand MSBuild variables $(...): https://github.com/dotnet/sdk/issues/50157 // See https://github.com/dotnet/project-system/blob/main/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Debug/DebugTokenReplacer.cs#L35-L57 protected static string ExpandVariables(string value) => Environment.ExpandEnvironmentVariables(value); }