internal async Task Create()

in src/dotnet/AspireWorker/AspireHost/AspireHost.cs [133:170]


    internal async Task<(string? sessionId, ErrorResponse? error)> Create(Session session)
    {
        var launchConfiguration = session.LaunchConfigurations.SingleOrDefault(it =>
            string.Equals(it.Type, "project", StringComparison.InvariantCultureIgnoreCase)
        );
        if (launchConfiguration == null)
        {
            _logger.OnlySingleProjectLaunchConfigurationIsSupported();
            return (null, _multipleProjectLaunchConfigurations);
        }

        var validationError = ValidateLaunchConfiguration(launchConfiguration);
        if (validationError != null) return (null, validationError);

        var envs = session.Env
            ?.Where(it => it.Value is not null)
            .Select(it => new SessionEnvironmentVariable(it.Name, it.Value!))
            .ToArray();

        var request = new CreateSessionRequest(
            launchConfiguration.ProjectPath,
            launchConfiguration.Mode == Mode.Debug,
            launchConfiguration.LaunchProfile,
            launchConfiguration.DisableLaunchProfile == true,
            session.Args,
            envs
        );

        _logger.CreateNewSessionRequestReceived(request.ProjectPath);
        _logger.SessionCreationRequestBuilt(request);

        var result = await _connectionWrapper.CreateSession(_aspireHostModel, request);
        _logger.SessionCreationResponseReceived(result);

        var error = result?.Error is not null ? BuildErrorResponse(result.Error) : null;

        return (result?.SessionId, error);
    }