diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestorableProjectsHandler.cs b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestorableProjectsHandler.cs
new file mode 100644
index 0000000000000..45dc233c1e6d8
--- /dev/null
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestorableProjectsHandler.cs
@@ -0,0 +1,53 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System.Composition;
+using Microsoft.CodeAnalysis.Host.Mef;
+using Microsoft.CodeAnalysis.LanguageServer.Handler;
+using Microsoft.CodeAnalysis.LanguageServer.Handler.DebugConfiguration;
+using Microsoft.CodeAnalysis.PooledObjects;
+using Roslyn.Utilities;
+
+namespace Microsoft.CodeAnalysis.LanguageServer;
+
+///
+/// Handler that allows the client to retrieve a set of restorable projects.
+/// Used to populate a list of projects that can be restored.
+///
+[ExportCSharpVisualBasicStatelessLspService(typeof(RestorableProjectsHandler)), Shared]
+[Method(MethodName)]
+[method: ImportingConstructor]
+[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)]
+internal sealed class RestorableProjectsHandler(ProjectTargetFrameworkManager projectTargetFrameworkManager) : ILspServiceRequestHandler
+{
+ internal const string MethodName = "workspace/_roslyn_restorableProjects";
+
+ public bool MutatesSolutionState => false;
+
+ public bool RequiresLSPSolution => true;
+
+ public Task HandleRequestAsync(RequestContext context, CancellationToken cancellationToken)
+ {
+ Contract.ThrowIfNull(context.Solution);
+
+ using var _ = ArrayBuilder.GetInstance(out var projectsBuilder);
+ foreach (var project in context.Solution.Projects)
+ {
+ // To restore via the dotnet CLI, we must have a file path and it must be a .NET core project.
+ if (project.FilePath != null && projectTargetFrameworkManager.IsDotnetCoreProject(project.Id))
+ {
+ projectsBuilder.Add(project.FilePath);
+ }
+ }
+
+ // We may have multiple projects with the same file path in multi-targeting scenarios.
+ // They'll all get restored together so we only want one result per project file.
+ projectsBuilder.RemoveDuplicates();
+
+ // Ensure the client gets a consistent ordering.
+ projectsBuilder.Sort(StringComparer.OrdinalIgnoreCase);
+
+ return Task.FromResult(projectsBuilder.ToArray());
+ }
+}
diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestoreHandler.cs b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestoreHandler.cs
new file mode 100644
index 0000000000000..1b4c55b7a1d1a
--- /dev/null
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestoreHandler.cs
@@ -0,0 +1,107 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System.Collections.Immutable;
+using System.Composition;
+using Microsoft.CodeAnalysis.Host.Mef;
+using Roslyn.Utilities;
+
+namespace Microsoft.CodeAnalysis.LanguageServer.Handler;
+
+///
+/// Given an input project (or none), runs restore on the project and streams the output
+/// back to the client to display.
+///
+[ExportCSharpVisualBasicStatelessLspService(typeof(RestoreHandler)), Shared]
+[Method(MethodName)]
+[method: ImportingConstructor]
+[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)]
+internal sealed class RestoreHandler(DotnetCliHelper dotnetCliHelper) : ILspServiceRequestHandler
+{
+ internal const string MethodName = "workspace/_roslyn_restore";
+
+ public bool MutatesSolutionState => false;
+
+ public bool RequiresLSPSolution => true;
+
+ public async Task HandleRequestAsync(RestoreParams request, RequestContext context, CancellationToken cancellationToken)
+ {
+ Contract.ThrowIfNull(context.Solution);
+ using var progress = BufferedProgress.Create(request.PartialResultToken);
+
+ progress.Report(new RestorePartialResult(LanguageServerResources.Restore, LanguageServerResources.Restore_started));
+
+ var restorePaths = GetRestorePaths(request, context.Solution, context);
+ if (restorePaths.IsEmpty)
+ {
+ progress.Report(new RestorePartialResult(LanguageServerResources.Restore, LanguageServerResources.Nothing_found_to_restore));
+ return progress.GetValues() ?? [];
+ }
+
+ await RestoreAsync(restorePaths, progress, cancellationToken);
+
+ progress.Report(new RestorePartialResult(LanguageServerResources.Restore, $"{LanguageServerResources.Restore_complete}{Environment.NewLine}"));
+ return progress.GetValues() ?? [];
+ }
+
+ private async Task RestoreAsync(ImmutableArray pathsToRestore, BufferedProgress progress, CancellationToken cancellationToken)
+ {
+ foreach (var path in pathsToRestore)
+ {
+ var arguments = $"restore \"{path}\"";
+ var workingDirectory = Path.GetDirectoryName(path);
+ var stageName = string.Format(LanguageServerResources.Restoring_0, Path.GetFileName(path));
+ ReportProgress(progress, stageName, string.Format(LanguageServerResources.Running_dotnet_restore_on_0, path));
+
+ var process = dotnetCliHelper.Run(arguments, workingDirectory, shouldLocalizeOutput: true);
+
+ process.OutputDataReceived += (sender, args) => ReportProgress(progress, stageName, args.Data);
+ process.ErrorDataReceived += (sender, args) => ReportProgress(progress, stageName, args.Data);
+ process.BeginOutputReadLine();
+ process.BeginErrorReadLine();
+
+ await process.WaitForExitAsync(cancellationToken);
+
+ if (process.ExitCode != 0)
+ {
+ throw new InvalidOperationException(LanguageServerResources.Failed_to_run_restore_see_output_for_details);
+ }
+ }
+
+ static void ReportProgress(BufferedProgress progress, string stage, string? restoreOutput)
+ {
+ if (restoreOutput != null)
+ {
+ progress.Report(new RestorePartialResult(stage, restoreOutput));
+ }
+ }
+ }
+
+ private static ImmutableArray GetRestorePaths(RestoreParams request, Solution solution, RequestContext context)
+ {
+ if (request.ProjectFilePath != null)
+ {
+ return ImmutableArray.Create(request.ProjectFilePath);
+ }
+
+ // No file paths were specified - this means we should restore all projects in the solution.
+ // If there is a valid solution path, use that as the restore path.
+ if (solution.FilePath != null)
+ {
+ return ImmutableArray.Create(solution.FilePath);
+ }
+
+ // We don't have an addressable solution, so lets find all addressable projects.
+ // We can only restore projects with file paths as we are using the dotnet CLI to address them.
+ // We also need to remove duplicates as in multi targeting scenarios there will be multiple projects with the same file path.
+ var projects = solution.Projects
+ .Select(p => p.FilePath)
+ .WhereNotNull()
+ .Distinct()
+ .ToImmutableArray();
+
+ context.TraceInformation($"Found {projects.Length} restorable projects from {solution.Projects.Count()} projects in solution");
+ return projects;
+ }
+}
diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestoreParams.cs b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestoreParams.cs
new file mode 100644
index 0000000000000..6c68c3149dd27
--- /dev/null
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestoreParams.cs
@@ -0,0 +1,19 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System.Runtime.Serialization;
+using Microsoft.VisualStudio.LanguageServer.Protocol;
+using Newtonsoft.Json;
+
+namespace Microsoft.CodeAnalysis.LanguageServer.Handler;
+
+[DataContract]
+internal sealed record RestoreParams(
+ [property: DataMember(Name = "projectFilePath"), JsonProperty(NullValueHandling = NullValueHandling.Ignore)] string? ProjectFilePath
+) : IPartialResultParams
+{
+ [DataMember(Name = Methods.PartialResultTokenName)]
+ [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+ public IProgress? PartialResultToken { get; set; }
+}
diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestorePartialResult.cs b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestorePartialResult.cs
new file mode 100644
index 0000000000000..40731e53c9d9d
--- /dev/null
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestorePartialResult.cs
@@ -0,0 +1,13 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System.Runtime.Serialization;
+
+namespace Microsoft.CodeAnalysis.LanguageServer.Handler;
+
+[DataContract]
+internal sealed record RestorePartialResult(
+ [property: DataMember(Name = "stage")] string Stage,
+ [property: DataMember(Name = "message")] string Message
+);
diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServerResources.resx b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServerResources.resx
index 664083e8aa4d1..2417b5e836403 100644
--- a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServerResources.resx
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServerResources.resx
@@ -157,6 +157,9 @@
Failed to read .runsettings file at {0}:{1}
+
+ Failed to run restore, see output for details
+
Found {0} tests in {1}
@@ -167,6 +170,9 @@
Message
+
+ Nothing found to restore
+
No test methods found in requested range
@@ -179,6 +185,21 @@
Projects failed to load because the .NET Framework build tools could not be found. Try installing Visual Studio or the Visual Studio Build Tools package, or check the logs for details.
+
+ Restore
+
+
+ Restore complete
+
+
+ Restore started
+
+
+ Restoring {0}
+
+
+ Running dotnet restore on {0}
+
Project {0} loaded by C# Dev KitThe placeholder is a name of a file
diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.cs.xlf b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.cs.xlf
index 4e1e19bcc9429..77d11c90e6026 100644
--- a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.cs.xlf
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.cs.xlf
@@ -67,6 +67,11 @@
Čtení souboru .runsettings na {0} se nezdařilo:{1}
+
+
+ Failed to run restore, see output for details
+
+ V {1} se našly {0} testy.
@@ -87,6 +92,11 @@
V požadovaném rozsahu se nenašly žádné testovací metody.
+
+
+ Nothing found to restore
+
+ Passed!
@@ -107,6 +117,31 @@
Projects failed to load because the Mono could not be found. Ensure that Mono and MSBuild are installed, and check the logs for details.
+
+
+ Restore
+
+
+
+
+ Restore complete
+
+
+
+
+ Restore started
+
+
+
+
+ Restoring {0}
+
+
+
+
+ Running dotnet restore on {0}
+
+ Running tests...
diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.de.xlf b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.de.xlf
index 89835784fa720..62a9669b82a4b 100644
--- a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.de.xlf
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.de.xlf
@@ -67,6 +67,11 @@
Fehler beim Lesen der RUNSETTINGS-Datei unter {0}:{1}
+
+
+ Failed to run restore, see output for details
+
+ In {1} wurden {0} Tests gefunden.
@@ -87,6 +92,11 @@
Im angeforderten Bereich wurden keine Testmethoden gefunden.
+
+
+ Nothing found to restore
+
+ Passed!
@@ -107,6 +117,31 @@
Projects failed to load because the Mono could not be found. Ensure that Mono and MSBuild are installed, and check the logs for details.
+
+
+ Restore
+
+
+
+
+ Restore complete
+
+
+
+
+ Restore started
+
+
+
+
+ Restoring {0}
+
+
+
+
+ Running dotnet restore on {0}
+
+ Running tests...
diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.es.xlf b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.es.xlf
index 736ba8290f703..9a6a06f1f24f8 100644
--- a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.es.xlf
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.es.xlf
@@ -67,6 +67,11 @@
No se pudo leer el archivo .runsettings en {0}:{1}
+
+
+ Failed to run restore, see output for details
+
+ Se encontraron pruebas {0} en {1}
@@ -87,6 +92,11 @@
No se encontraron métodos de prueba en el intervalo solicitado
+
+
+ Nothing found to restore
+
+ Passed!
@@ -107,6 +117,31 @@
Projects failed to load because the Mono could not be found. Ensure that Mono and MSBuild are installed, and check the logs for details.
+
+
+ Restore
+
+
+
+
+ Restore complete
+
+
+
+
+ Restore started
+
+
+
+
+ Restoring {0}
+
+
+
+
+ Running dotnet restore on {0}
+
+ Running tests...
diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.fr.xlf b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.fr.xlf
index 04f01fa182dbd..5fa4ababb02e6 100644
--- a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.fr.xlf
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.fr.xlf
@@ -67,6 +67,11 @@
Échec de la lecture du fichier .runsettings à l'adresse {0} :{1}
+
+
+ Failed to run restore, see output for details
+
+ Tests {0} trouvés dans {1}
@@ -87,6 +92,11 @@
Méthodes de test introuvables dans la plage demandée
+
+
+ Nothing found to restore
+
+ Passed!
@@ -107,6 +117,31 @@
Projects failed to load because the Mono could not be found. Ensure that Mono and MSBuild are installed, and check the logs for details.
+
+
+ Restore
+
+
+
+
+ Restore complete
+
+
+
+
+ Restore started
+
+
+
+
+ Restoring {0}
+
+
+
+
+ Running dotnet restore on {0}
+
+ Running tests...
diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.it.xlf b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.it.xlf
index 0a52546adae53..817774387ee18 100644
--- a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.it.xlf
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.it.xlf
@@ -67,6 +67,11 @@
Non è stato possibile leggere il file con estensione runsettings in {0}:{1}
+
+
+ Failed to run restore, see output for details
+
+ Sono stati trovati test {0} in {1}
@@ -87,6 +92,11 @@
Non sono stati trovati metodi di test nell'intervallo richiesto
+
+
+ Nothing found to restore
+
+ Passed!
@@ -107,6 +117,31 @@
Projects failed to load because the Mono could not be found. Ensure that Mono and MSBuild are installed, and check the logs for details.
+
+
+ Restore
+
+
+
+
+ Restore complete
+
+
+
+
+ Restore started
+
+
+
+
+ Restoring {0}
+
+
+
+
+ Running dotnet restore on {0}
+
+ Running tests...
diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.ja.xlf b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.ja.xlf
index 165081d1106dc..7de412c1881b6 100644
--- a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.ja.xlf
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.ja.xlf
@@ -67,6 +67,11 @@
{0}:{1} の .runsettings ファイルを読み取れできませんでした
+
+
+ Failed to run restore, see output for details
+
+ {1} で {0} テストが見つかりました
@@ -87,6 +92,11 @@
要求された範囲内にテスト メソッドが見つかりません
+
+
+ Nothing found to restore
+
+ Passed!
@@ -107,6 +117,31 @@
Projects failed to load because the Mono could not be found. Ensure that Mono and MSBuild are installed, and check the logs for details.
+
+
+ Restore
+
+
+
+
+ Restore complete
+
+
+
+
+ Restore started
+
+
+
+
+ Restoring {0}
+
+
+
+
+ Running dotnet restore on {0}
+
+ Running tests...
diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.ko.xlf b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.ko.xlf
index 3095db4286af8..07c794ca2d1ae 100644
--- a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.ko.xlf
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.ko.xlf
@@ -67,6 +67,11 @@
{0}:{1}에서 .runsettings 파일을 읽지 못했습니다.
+
+
+ Failed to run restore, see output for details
+
+ {1} {0} 테스트를 찾았습니다.
@@ -87,6 +92,11 @@
요청된 범위에서 테스트 메서드를 찾을 수 없습니다.
+
+
+ Nothing found to restore
+
+ Passed!
@@ -107,6 +117,31 @@
Projects failed to load because the Mono could not be found. Ensure that Mono and MSBuild are installed, and check the logs for details.
+
+
+ Restore
+
+
+
+
+ Restore complete
+
+
+
+
+ Restore started
+
+
+
+
+ Restoring {0}
+
+
+
+
+ Running dotnet restore on {0}
+
+ Running tests...
diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.pl.xlf b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.pl.xlf
index e7221d49c2dd4..d3a8c9facfea6 100644
--- a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.pl.xlf
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.pl.xlf
@@ -67,6 +67,11 @@
Nie można odczytać pliku .runsettings w {0}:{1}
+
+
+ Failed to run restore, see output for details
+
+ Znaleziono testy {0} w {1}
@@ -87,6 +92,11 @@
Nie znaleziono metod testowych w żądanym zakresie
+
+
+ Nothing found to restore
+
+ Passed!
@@ -107,6 +117,31 @@
Projects failed to load because the Mono could not be found. Ensure that Mono and MSBuild are installed, and check the logs for details.
+
+
+ Restore
+
+
+
+
+ Restore complete
+
+
+
+
+ Restore started
+
+
+
+
+ Restoring {0}
+
+
+
+
+ Running dotnet restore on {0}
+
+ Running tests...
diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.pt-BR.xlf b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.pt-BR.xlf
index 2777855d4f9a9..253fb8d4fc76d 100644
--- a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.pt-BR.xlf
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.pt-BR.xlf
@@ -67,6 +67,11 @@
Falha ao ler o arquivo .runsettings em {0}:{1}
+
+
+ Failed to run restore, see output for details
+
+ Testes {0} encontrados em {1}
@@ -87,6 +92,11 @@
Nenhum método de teste encontrado no intervalo solicitado
+
+
+ Nothing found to restore
+
+ Passed!
@@ -107,6 +117,31 @@
Projects failed to load because the Mono could not be found. Ensure that Mono and MSBuild are installed, and check the logs for details.
+
+
+ Restore
+
+
+
+
+ Restore complete
+
+
+
+
+ Restore started
+
+
+
+
+ Restoring {0}
+
+
+
+
+ Running dotnet restore on {0}
+
+ Running tests...
diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.ru.xlf b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.ru.xlf
index 7c94a3abd38e3..d2725b24189da 100644
--- a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.ru.xlf
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.ru.xlf
@@ -67,6 +67,11 @@
Не удалось прочитать файл RUNSETTINGS в {0}:{1}
+
+
+ Failed to run restore, see output for details
+
+ Обнаружены {0} тестов в {1}
@@ -87,6 +92,11 @@
Методы тестирования не найдены в запрашиваемом диапазоне
+
+
+ Nothing found to restore
+
+ Passed!
@@ -107,6 +117,31 @@
Projects failed to load because the Mono could not be found. Ensure that Mono and MSBuild are installed, and check the logs for details.
+
+
+ Restore
+
+
+
+
+ Restore complete
+
+
+
+
+ Restore started
+
+
+
+
+ Restoring {0}
+
+
+
+
+ Running dotnet restore on {0}
+
+ Running tests...
diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.tr.xlf b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.tr.xlf
index e21687e45f84f..13bd78f3a57f3 100644
--- a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.tr.xlf
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.tr.xlf
@@ -67,6 +67,11 @@
Şu konumdaki .runsettings dosyası okunamadı: {0}:{1}
+
+
+ Failed to run restore, see output for details
+
+ Bu {0} testler {1}
@@ -87,6 +92,11 @@
İstenen aralıkta test yöntemi bulunamadı
+
+
+ Nothing found to restore
+
+ Passed!
@@ -107,6 +117,31 @@
Projects failed to load because the Mono could not be found. Ensure that Mono and MSBuild are installed, and check the logs for details.
+
+
+ Restore
+
+
+
+
+ Restore complete
+
+
+
+
+ Restore started
+
+
+
+
+ Restoring {0}
+
+
+
+
+ Running dotnet restore on {0}
+
+ Running tests...
diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.zh-Hans.xlf b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.zh-Hans.xlf
index a6a9fac4310e6..f0e0a0237bb19 100644
--- a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.zh-Hans.xlf
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.zh-Hans.xlf
@@ -67,6 +67,11 @@
无法读取 {0}:{1}的 .runsettings 文件
+
+
+ Failed to run restore, see output for details
+
+ 在 {1} 中找到 {0} 个测试
@@ -87,6 +92,11 @@
在请求的范围内找不到测试方法
+
+
+ Nothing found to restore
+
+ Passed!
@@ -107,6 +117,31 @@
Projects failed to load because the Mono could not be found. Ensure that Mono and MSBuild are installed, and check the logs for details.
+
+
+ Restore
+
+
+
+
+ Restore complete
+
+
+
+
+ Restore started
+
+
+
+
+ Restoring {0}
+
+
+
+
+ Running dotnet restore on {0}
+
+ Running tests...
diff --git a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.zh-Hant.xlf b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.zh-Hant.xlf
index 6719c036941b9..b88815735c487 100644
--- a/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.zh-Hant.xlf
+++ b/src/Features/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.zh-Hant.xlf
@@ -67,6 +67,11 @@
無法讀取位於 {0} 的 .runsettings 檔案: {1}
+
+
+ Failed to run restore, see output for details
+
+ 在 {1} 中找到 {0} 測試
@@ -87,6 +92,11 @@
在要求的範圍內找不到測試方法
+
+
+ Nothing found to restore
+
+ Passed!
@@ -107,6 +117,31 @@
Projects failed to load because the Mono could not be found. Ensure that Mono and MSBuild are installed, and check the logs for details.
+
+
+ Restore
+
+
+
+
+ Restore complete
+
+
+
+
+ Restore started
+
+
+
+
+ Restoring {0}
+
+
+
+
+ Running dotnet restore on {0}
+
+ Running tests...