public async Task <ExecutionResult> ConnectAsync(IChannel channel, string subscriptionId, string resourceGroupName, string workspaceName, string storageAccountConnectionString, string location, CredentialType credentialType, CancellationToken?cancellationToken = null) { var duration = Stopwatch.StartNew(); ExecutionResult?result = null; try { // Capture the console output, specifically for the case the user is trying to use DeviceCode credentials // so they can get the message for auth. var currentOut = channel?.CaptureConsole(); try { var credential = CredentialFactory.CreateCredential(credentialType, subscriptionId); var connectionResult = await ConnectToWorkspaceAsync(channel, subscriptionId, resourceGroupName, workspaceName, location, credential); if (connectionResult.Status != ExecuteStatus.Ok) { result = connectionResult; return(result.Value); } if (ActiveWorkspace == null) { result = AzureClientError.WorkspaceNotFound.ToExecutionResult(); return(result.Value); } Credential = credential; } finally { System.Console.SetOut(currentOut); } StorageConnectionString = storageAccountConnectionString; ActiveTarget = null; MostRecentJobId = string.Empty; channel?.Stdout($"Connected to Azure Quantum workspace {ActiveWorkspace.WorkspaceName} in location {ActiveWorkspace.Location}."); if (ValidExecutionTargets.Count() == 0) { channel?.Stderr($"No valid quantum computing execution targets found in Azure Quantum workspace {ActiveWorkspace.WorkspaceName}."); } result = ValidExecutionTargets.ToExecutionResult(); return(result.Value); } finally { duration.Stop(); ExecuteStatus status = result?.Status ?? ExecuteStatus.Error; AzureClientError?error = result?.Output as AzureClientError?; bool useCustomStorage = !string.IsNullOrWhiteSpace(StorageConnectionString); ConnectToWorkspace?.Invoke(this, new ConnectToWorkspaceEventArgs(status, error, location, useCustomStorage, credentialType, duration.Elapsed)); } }