From c9a05114e54fa5d87b44d1301806511d7d25c86d Mon Sep 17 00:00:00 2001 From: Eduardo Villalpando Mello Date: Wed, 30 Oct 2024 11:57:17 -0700 Subject: [PATCH 01/12] [IMP] sln-list: Support for slnx --- .../commands/dotnet-sln/list/Program.cs | 63 ++++++++++++++++++- 1 file changed, 60 insertions(+), 3 deletions(-) diff --git a/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs b/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs index a46642c421b4..a69323bd2864 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs +++ b/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs @@ -6,6 +6,9 @@ using Microsoft.DotNet.Cli.Sln.Internal; using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.Tools.Common; +using Microsoft.VisualStudio.SolutionPersistence; +using Microsoft.VisualStudio.SolutionPersistence.Model; +using Microsoft.VisualStudio.SolutionPersistence.Serializer; namespace Microsoft.DotNet.Tools.Sln.List { @@ -17,13 +20,23 @@ internal class ListProjectsInSolutionCommand : CommandBase public ListProjectsInSolutionCommand( ParseResult parseResult) : base(parseResult) { - _fileOrDirectory = parseResult.GetValue(SlnCommandParser.SlnArgument); + _fileOrDirectory = Path.GetFullPath(parseResult.GetValue(SlnCommandParser.SlnArgument)); _displaySolutionFolders = parseResult.GetValue(SlnListParser.SolutionFolderOption); } public override int Execute() { - var slnFile = SlnFileFactory.CreateFromFileOrDirectory(_fileOrDirectory); + string slnFileFullPath = SlnCommandParser.GetSlnFileFullPath(_fileOrDirectory); + try + { + ListAllProjectsAsync(slnFileFullPath, CancellationToken.None).Wait(); + } + catch (Exception ex) + { + throw new GracefulException(ex.Message, ex); + } + return 0; + /*var slnFile = SlnFileFactory.CreateFromFileOrDirectory(_fileOrDirectory); string[] paths; @@ -57,8 +70,52 @@ public override int Execute() { Reporter.Output.WriteLine(slnProject); } + }*/ + } + + private async Task ListAllProjectsAsync(string solutionFullPath, CancellationToken cancellationToken) + { + ISolutionSerializer? serializer = SolutionSerializers.GetSerializerByMoniker(solutionFullPath); + if (serializer == null) + { + return; } - return 0; + + SolutionModel solution = await serializer.OpenAsync(solutionFullPath, cancellationToken); + string[] paths; + // TODO: This can be simplified + if (_displaySolutionFolders) + { + paths = solution.SolutionProjects + .Where(solution => solution.Type == ProjectTypeGuids.SolutionFolderGuid) + .Select(folder => Path.GetFullPath(folder.FilePath)) + .ToArray(); + } + else + { + paths = solution.SolutionProjects + .Where(solution => solution.Type != ProjectTypeGuids.SolutionFolderGuid) + .Select(folder => folder.FilePath) + .ToArray(); + } + + if (paths.Length == 0) + { + Reporter.Output.WriteLine(CommonLocalizableStrings.NoProjectsFound); + } + else + { + Array.Sort(paths); + + string header = _displaySolutionFolders ? LocalizableStrings.SolutionFolderHeader : LocalizableStrings.ProjectsHeader; + Reporter.Output.WriteLine($"{header}"); + Reporter.Output.WriteLine(new string('-', header.Length)); + foreach (string slnProject in paths) + { + Reporter.Output.WriteLine(slnProject); + } + } + } } } From da54e3bfa3d8c56fb3cc23f15a55e8f2ee287cdf Mon Sep 17 00:00:00 2001 From: Eduardo Villalpando Mello Date: Wed, 30 Oct 2024 12:15:58 -0700 Subject: [PATCH 02/12] Refactor code --- .../commands/dotnet-sln/SlnCommandParser.cs | 4 +- .../commands/dotnet-sln/list/Program.cs | 72 ++++--------------- 2 files changed, 15 insertions(+), 61 deletions(-) diff --git a/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs b/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs index 47169569fc96..f548bbda59f4 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs +++ b/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs @@ -50,7 +50,7 @@ internal static string GetSlnFileFullPath(string slnFileOrDirectory) { if (File.Exists(slnFileOrDirectory)) { - return slnFileOrDirectory; + return Path.GetFullPath(slnFileOrDirectory); } if (Directory.Exists(slnFileOrDirectory)) { @@ -63,7 +63,7 @@ internal static string GetSlnFileFullPath(string slnFileOrDirectory) { throw new GracefulException(CommonLocalizableStrings.MoreThanOneSolutionInDirectory, slnFileOrDirectory); } - return files.Single().ToString(); + return Path.GetFullPath(files.Single().ToString()); } throw new GracefulException(CommonLocalizableStrings.CouldNotFindSolutionOrDirectory, slnFileOrDirectory); } diff --git a/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs b/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs index a69323bd2864..0315cb6b68e8 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs +++ b/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs @@ -6,6 +6,7 @@ using Microsoft.DotNet.Cli.Sln.Internal; using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.Tools.Common; +using Microsoft.Extensions.EnvironmentAbstractions; using Microsoft.VisualStudio.SolutionPersistence; using Microsoft.VisualStudio.SolutionPersistence.Model; using Microsoft.VisualStudio.SolutionPersistence.Serializer; @@ -20,84 +21,37 @@ internal class ListProjectsInSolutionCommand : CommandBase public ListProjectsInSolutionCommand( ParseResult parseResult) : base(parseResult) { - _fileOrDirectory = Path.GetFullPath(parseResult.GetValue(SlnCommandParser.SlnArgument)); + _fileOrDirectory = parseResult.GetValue(SlnCommandParser.SlnArgument); _displaySolutionFolders = parseResult.GetValue(SlnListParser.SolutionFolderOption); } public override int Execute() { - string slnFileFullPath = SlnCommandParser.GetSlnFileFullPath(_fileOrDirectory); + string solutionFileFullPath = SlnCommandParser.GetSlnFileFullPath(_fileOrDirectory); try { - ListAllProjectsAsync(slnFileFullPath, CancellationToken.None).Wait(); + ListAllProjectsAsync(solutionFileFullPath, CancellationToken.None).Wait(); } catch (Exception ex) { throw new GracefulException(ex.Message, ex); } return 0; - /*var slnFile = SlnFileFactory.CreateFromFileOrDirectory(_fileOrDirectory); - - string[] paths; - - if (_displaySolutionFolders) - { - paths = slnFile.Projects - .GetProjectsByType(ProjectTypeGuids.SolutionFolderGuid) - .Select(folder => folder.GetFullSolutionFolderPath()) - .ToArray(); - } - else - { - paths = slnFile.Projects - .GetProjectsNotOfType(ProjectTypeGuids.SolutionFolderGuid) - .Select(project => project.FilePath) - .ToArray(); - } - - if (paths.Length == 0) - { - Reporter.Output.WriteLine(CommonLocalizableStrings.NoProjectsFound); - } - else - { - Array.Sort(paths); - - string header = _displaySolutionFolders ? LocalizableStrings.SolutionFolderHeader : LocalizableStrings.ProjectsHeader; - Reporter.Output.WriteLine($"{header}"); - Reporter.Output.WriteLine(new string('-', header.Length)); - foreach (string slnProject in paths) - { - Reporter.Output.WriteLine(slnProject); - } - }*/ } - private async Task ListAllProjectsAsync(string solutionFullPath, CancellationToken cancellationToken) + private async Task ListAllProjectsAsync(string solutionFileFullPath, CancellationToken cancellationToken) { - ISolutionSerializer? serializer = SolutionSerializers.GetSerializerByMoniker(solutionFullPath); + ISolutionSerializer? serializer = SolutionSerializers.GetSerializerByMoniker(solutionFileFullPath); if (serializer == null) { - return; + throw new GracefulException("Could not find serializer for file {0}", solutionFileFullPath); } - SolutionModel solution = await serializer.OpenAsync(solutionFullPath, cancellationToken); - string[] paths; - // TODO: This can be simplified - if (_displaySolutionFolders) - { - paths = solution.SolutionProjects - .Where(solution => solution.Type == ProjectTypeGuids.SolutionFolderGuid) - .Select(folder => Path.GetFullPath(folder.FilePath)) - .ToArray(); - } - else - { - paths = solution.SolutionProjects - .Where(solution => solution.Type != ProjectTypeGuids.SolutionFolderGuid) - .Select(folder => folder.FilePath) - .ToArray(); - } + SolutionModel solution = await serializer.OpenAsync(solutionFileFullPath, cancellationToken); + string[] paths = solution.SolutionProjects + .Where(solution => _displaySolutionFolders ? (solution.Type == ProjectTypeGuids.SolutionFolderGuid) : (solution.Type != ProjectTypeGuids.SolutionFolderGuid)) + .Select(folder => _displaySolutionFolders ? Path.GetFullPath(folder.FilePath) : folder.FilePath) + .ToArray(); if (paths.Length == 0) { @@ -108,7 +62,7 @@ private async Task ListAllProjectsAsync(string solutionFullPath, CancellationTok Array.Sort(paths); string header = _displaySolutionFolders ? LocalizableStrings.SolutionFolderHeader : LocalizableStrings.ProjectsHeader; - Reporter.Output.WriteLine($"{header}"); + Reporter.Output.WriteLine(header); Reporter.Output.WriteLine(new string('-', header.Length)); foreach (string slnProject in paths) { From 15bee3679b27212bb5dc0d257ee39170547efa2a Mon Sep 17 00:00:00 2001 From: Eduardo Villalpando Mello Date: Wed, 30 Oct 2024 13:18:24 -0700 Subject: [PATCH 03/12] Refactor code --- src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs | 4 +++- .../commands/dotnet-sln/migrate/SlnMigrateCommand.cs | 7 ++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs b/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs index f548bbda59f4..131be77f8a0e 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs +++ b/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs @@ -54,7 +54,9 @@ internal static string GetSlnFileFullPath(string slnFileOrDirectory) } if (Directory.Exists(slnFileOrDirectory)) { - var files = Directory.GetFiles(slnFileOrDirectory, "*.sln", SearchOption.TopDirectoryOnly); + string[] files = [ + ..Directory.GetFiles(slnFileOrDirectory, "*.sln", SearchOption.TopDirectoryOnly), + ..Directory.GetFiles(slnFileOrDirectory, "*.slnx", SearchOption.TopDirectoryOnly)]; if (files.Length == 0) { throw new GracefulException(CommonLocalizableStrings.CouldNotFindSolutionIn, slnFileOrDirectory); diff --git a/src/Cli/dotnet/commands/dotnet-sln/migrate/SlnMigrateCommand.cs b/src/Cli/dotnet/commands/dotnet-sln/migrate/SlnMigrateCommand.cs index f7be83272e40..35d57c81944c 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/migrate/SlnMigrateCommand.cs +++ b/src/Cli/dotnet/commands/dotnet-sln/migrate/SlnMigrateCommand.cs @@ -14,6 +14,7 @@ using Microsoft.VisualStudio.SolutionPersistence.Model; using Microsoft.VisualStudio.SolutionPersistence.Serializer; using LocalizableStrings = Microsoft.DotNet.Tools.Sln.LocalizableStrings; +using Microsoft.DotNet.Tools.Common; namespace Microsoft.DotNet.Cli { @@ -26,13 +27,17 @@ public SlnMigrateCommand( IReporter reporter = null) : base(parseResult) { - _slnFileOrDirectory = Path.GetFullPath(parseResult.GetValue(SlnCommandParser.SlnArgument)); + _slnFileOrDirectory = parseResult.GetValue(SlnCommandParser.SlnArgument); _reporter = reporter ?? Reporter.Output; } public override int Execute() { string slnFileFullPath = SlnCommandParser.GetSlnFileFullPath(_slnFileOrDirectory); + if (slnFileFullPath.HasExtension(".slnx")) + { + throw new GracefulException("Cannot migrate a .slnx file"); + } string slnxFileFullPath = Path.ChangeExtension(slnFileFullPath, "slnx"); try { From 457056a9972008f5d89676fd6d63c93889f2a429 Mon Sep 17 00:00:00 2001 From: Eduardo Villalpando Mello Date: Wed, 30 Oct 2024 13:48:01 -0700 Subject: [PATCH 04/12] Add translations --- .../commands/dotnet-sln/LocalizableStrings.resx | 6 ++++++ .../dotnet/commands/dotnet-sln/SlnCommandParser.cs | 12 ++++++++++++ src/Cli/dotnet/commands/dotnet-sln/list/Program.cs | 9 ++------- .../commands/dotnet-sln/migrate/SlnMigrateCommand.cs | 9 ++------- .../dotnet-sln/xlf/LocalizableStrings.cs.xlf | 10 ++++++++++ .../dotnet-sln/xlf/LocalizableStrings.de.xlf | 10 ++++++++++ .../dotnet-sln/xlf/LocalizableStrings.es.xlf | 10 ++++++++++ .../dotnet-sln/xlf/LocalizableStrings.fr.xlf | 10 ++++++++++ .../dotnet-sln/xlf/LocalizableStrings.it.xlf | 10 ++++++++++ .../dotnet-sln/xlf/LocalizableStrings.ja.xlf | 10 ++++++++++ .../dotnet-sln/xlf/LocalizableStrings.ko.xlf | 10 ++++++++++ .../dotnet-sln/xlf/LocalizableStrings.pl.xlf | 10 ++++++++++ .../dotnet-sln/xlf/LocalizableStrings.pt-BR.xlf | 10 ++++++++++ .../dotnet-sln/xlf/LocalizableStrings.ru.xlf | 10 ++++++++++ .../dotnet-sln/xlf/LocalizableStrings.tr.xlf | 10 ++++++++++ .../dotnet-sln/xlf/LocalizableStrings.zh-Hans.xlf | 10 ++++++++++ .../dotnet-sln/xlf/LocalizableStrings.zh-Hant.xlf | 10 ++++++++++ 17 files changed, 152 insertions(+), 14 deletions(-) diff --git a/src/Cli/dotnet/commands/dotnet-sln/LocalizableStrings.resx b/src/Cli/dotnet/commands/dotnet-sln/LocalizableStrings.resx index 954f3b45f1e9..9e4647d556fa 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/LocalizableStrings.resx +++ b/src/Cli/dotnet/commands/dotnet-sln/LocalizableStrings.resx @@ -183,4 +183,10 @@ .slnx file {0} generated. + + Cannot migrate .slnx file. + + + Could not find serializer for file {0}. + \ No newline at end of file diff --git a/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs b/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs index 131be77f8a0e..8caea41d23f6 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs +++ b/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs @@ -4,6 +4,8 @@ using System.CommandLine; using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.Tools; +using Microsoft.VisualStudio.SolutionPersistence; +using Microsoft.VisualStudio.SolutionPersistence.Serializer; using NuGet.Packaging; using LocalizableStrings = Microsoft.DotNet.Tools.Sln.LocalizableStrings; @@ -69,5 +71,15 @@ internal static string GetSlnFileFullPath(string slnFileOrDirectory) } throw new GracefulException(CommonLocalizableStrings.CouldNotFindSolutionOrDirectory, slnFileOrDirectory); } + + internal static ISolutionSerializer GetSolutionSerializer(string solutionFilePath) + { + ISolutionSerializer? serializer = SolutionSerializers.GetSerializerByMoniker(solutionFilePath); + if (serializer is null) + { + throw new GracefulException(CommonLocalizableStrings.SerializerNotFound, solutionFilePath); + } + return serializer; + } } } diff --git a/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs b/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs index 0315cb6b68e8..4f5aaad99997 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs +++ b/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs @@ -31,22 +31,17 @@ public override int Execute() try { ListAllProjectsAsync(solutionFileFullPath, CancellationToken.None).Wait(); + return 0; } catch (Exception ex) { throw new GracefulException(ex.Message, ex); } - return 0; } private async Task ListAllProjectsAsync(string solutionFileFullPath, CancellationToken cancellationToken) { - ISolutionSerializer? serializer = SolutionSerializers.GetSerializerByMoniker(solutionFileFullPath); - if (serializer == null) - { - throw new GracefulException("Could not find serializer for file {0}", solutionFileFullPath); - } - + ISolutionSerializer serializer = SlnCommandParser.GetSolutionSerializer(solutionFileFullPath); SolutionModel solution = await serializer.OpenAsync(solutionFileFullPath, cancellationToken); string[] paths = solution.SolutionProjects .Where(solution => _displaySolutionFolders ? (solution.Type == ProjectTypeGuids.SolutionFolderGuid) : (solution.Type != ProjectTypeGuids.SolutionFolderGuid)) diff --git a/src/Cli/dotnet/commands/dotnet-sln/migrate/SlnMigrateCommand.cs b/src/Cli/dotnet/commands/dotnet-sln/migrate/SlnMigrateCommand.cs index 35d57c81944c..1ac8dde1468e 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/migrate/SlnMigrateCommand.cs +++ b/src/Cli/dotnet/commands/dotnet-sln/migrate/SlnMigrateCommand.cs @@ -36,7 +36,7 @@ public override int Execute() string slnFileFullPath = SlnCommandParser.GetSlnFileFullPath(_slnFileOrDirectory); if (slnFileFullPath.HasExtension(".slnx")) { - throw new GracefulException("Cannot migrate a .slnx file"); + throw new GracefulException(LocalizableStrings.CannotMigrateSlnx); } string slnxFileFullPath = Path.ChangeExtension(slnFileFullPath, "slnx"); try @@ -50,12 +50,7 @@ public override int Execute() private async Task ConvertToSlnxAsync(string filePath, string slnxFilePath, CancellationToken cancellationToken) { - // See if the file is a known solution file. - ISolutionSerializer? serializer = SolutionSerializers.GetSerializerByMoniker(filePath); - if (serializer is null) - { - throw new GracefulException("Could not find serializer for file {0}", filePath); - } + ISolutionSerializer serializer = SlnCommandParser.GetSolutionSerializer(filePath); SolutionModel solution = await serializer.OpenAsync(filePath, cancellationToken); await SolutionSerializers.SlnXml.SaveAsync(slnxFilePath, solution, cancellationToken); _reporter.WriteLine(LocalizableStrings.SlnxGenerated, slnxFilePath); diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.cs.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.cs.xlf index 6c53575ea9eb..4bab05e710d3 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.cs.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.cs.xlf @@ -27,6 +27,11 @@ Přidá do souboru řešení jeden nebo více projektů. + + Cannot migrate .slnx file. + Cannot migrate .slnx file. + + Place project in root of the solution, rather than creating a solution folder. Umístěte projekt do kořene řešení, není potřeba vytvářet složku řešení. @@ -62,6 +67,11 @@ Vypíše seznam všech projektů v řešení. + + Could not find serializer for file {0}. + Could not find serializer for file {0}. + + .slnx file {0} generated. .slnx file {0} generated. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.de.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.de.xlf index 4e3b2955d5b6..d5f7d7054d71 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.de.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.de.xlf @@ -27,6 +27,11 @@ Fügt einer Projektmappendatei ein oder mehrere Projekte hinzu. + + Cannot migrate .slnx file. + Cannot migrate .slnx file. + + Place project in root of the solution, rather than creating a solution folder. Platzieren Sie das Projekt im Stamm der Projektmappe, statt einen Projektmappenordner zu erstellen. @@ -62,6 +67,11 @@ Listet alle Projekte in der Projektmappe auf. + + Could not find serializer for file {0}. + Could not find serializer for file {0}. + + .slnx file {0} generated. .slnx file {0} generated. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.es.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.es.xlf index aa87dd21de2b..c36ef1717c81 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.es.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.es.xlf @@ -27,6 +27,11 @@ Agrega uno o varios proyectos a un archivo de solución. + + Cannot migrate .slnx file. + Cannot migrate .slnx file. + + Place project in root of the solution, rather than creating a solution folder. Coloque el proyecto en la raíz de la solución, en lugar de crear una carpeta de soluciones. @@ -62,6 +67,11 @@ Enumere todos los proyectos de la solución. + + Could not find serializer for file {0}. + Could not find serializer for file {0}. + + .slnx file {0} generated. .slnx file {0} generated. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.fr.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.fr.xlf index 243195f00fff..66cd0437b80d 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.fr.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.fr.xlf @@ -27,6 +27,11 @@ Ajoutez un ou plusieurs projets à un fichier solution. + + Cannot migrate .slnx file. + Cannot migrate .slnx file. + + Place project in root of the solution, rather than creating a solution folder. Place le projet à la racine de la solution, au lieu de créer un dossier solution. @@ -62,6 +67,11 @@ Répertoriez tous les projets de la solution. + + Could not find serializer for file {0}. + Could not find serializer for file {0}. + + .slnx file {0} generated. .slnx file {0} generated. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.it.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.it.xlf index d9684bca6f50..63a4dca3e966 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.it.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.it.xlf @@ -27,6 +27,11 @@ Consente di aggiungere uno o più progetti a un file di soluzione. + + Cannot migrate .slnx file. + Cannot migrate .slnx file. + + Place project in root of the solution, rather than creating a solution folder. Inserisce il progetto nella radice della soluzione invece di creare una cartella soluzione. @@ -62,6 +67,11 @@ Elenca tutti i progetti presenti nella soluzione. + + Could not find serializer for file {0}. + Could not find serializer for file {0}. + + .slnx file {0} generated. .slnx file {0} generated. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ja.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ja.xlf index 15ab2149217c..fa49b36f3c7c 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ja.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ja.xlf @@ -27,6 +27,11 @@ 1 つ以上のプロジェクトをソリューション ファイルに追加します。 + + Cannot migrate .slnx file. + Cannot migrate .slnx file. + + Place project in root of the solution, rather than creating a solution folder. ソリューション フォルダーを作成するのではなく、プロジェクトをソリューションのルートに配置します。 @@ -62,6 +67,11 @@ ソリューション内のすべてのプロジェクトを一覧表示します。 + + Could not find serializer for file {0}. + Could not find serializer for file {0}. + + .slnx file {0} generated. .slnx file {0} generated. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ko.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ko.xlf index c1004aaae4a6..ec6fcef3b737 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ko.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ko.xlf @@ -27,6 +27,11 @@ 솔루션 파일에 하나 이상의 프로젝트를 추가합니다. + + Cannot migrate .slnx file. + Cannot migrate .slnx file. + + Place project in root of the solution, rather than creating a solution folder. 솔루션 폴더를 만드는 대신, 솔루션의 루트에 프로젝트를 배치하세요. @@ -62,6 +67,11 @@ 솔루션의 프로젝트를 모두 나열합니다. + + Could not find serializer for file {0}. + Could not find serializer for file {0}. + + .slnx file {0} generated. .slnx file {0} generated. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.pl.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.pl.xlf index 8ccc8c2101b7..601ff500d1cc 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.pl.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.pl.xlf @@ -27,6 +27,11 @@ Dodaj co najmniej jeden projekt do pliku rozwiązania. + + Cannot migrate .slnx file. + Cannot migrate .slnx file. + + Place project in root of the solution, rather than creating a solution folder. Umieść projekt w katalogu głównym rozwiązania zamiast tworzyć folder rozwiązania. @@ -62,6 +67,11 @@ Wyświetl listę wszystkich projektów w rozwiązaniu. + + Could not find serializer for file {0}. + Could not find serializer for file {0}. + + .slnx file {0} generated. .slnx file {0} generated. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.pt-BR.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.pt-BR.xlf index 033a36200e57..6d941b650f1e 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.pt-BR.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.pt-BR.xlf @@ -27,6 +27,11 @@ Adicionar um ou mais projetos em um arquivo de solução. + + Cannot migrate .slnx file. + Cannot migrate .slnx file. + + Place project in root of the solution, rather than creating a solution folder. Coloque o projeto na raiz da solução, em vez de criar uma pasta da solução. @@ -62,6 +67,11 @@ Listar todos os projetos na solução. + + Could not find serializer for file {0}. + Could not find serializer for file {0}. + + .slnx file {0} generated. .slnx file {0} generated. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ru.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ru.xlf index 793e580c833b..6960662f0eed 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ru.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ru.xlf @@ -27,6 +27,11 @@ Добавление проектов в файл решения. + + Cannot migrate .slnx file. + Cannot migrate .slnx file. + + Place project in root of the solution, rather than creating a solution folder. Поместите проект в корень решения вместо создания папки решения. @@ -62,6 +67,11 @@ Перечисляет все проекты в решении. + + Could not find serializer for file {0}. + Could not find serializer for file {0}. + + .slnx file {0} generated. .slnx file {0} generated. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.tr.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.tr.xlf index 708dd2cf1377..a705f8605a87 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.tr.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.tr.xlf @@ -27,6 +27,11 @@ Bir çözüm dosyasına bir veya daha fazla proje ekler. + + Cannot migrate .slnx file. + Cannot migrate .slnx file. + + Place project in root of the solution, rather than creating a solution folder. Bir çözüm klasörü oluşturmak yerine projeyi çözümün köküne yerleştirin. @@ -62,6 +67,11 @@ Çözümdeki tüm projeleri listeleyin. + + Could not find serializer for file {0}. + Could not find serializer for file {0}. + + .slnx file {0} generated. .slnx file {0} generated. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.zh-Hans.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.zh-Hans.xlf index fd02b1f09400..533a67153faf 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.zh-Hans.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.zh-Hans.xlf @@ -27,6 +27,11 @@ 将一个或多个项目添加到解决方案文件。 + + Cannot migrate .slnx file. + Cannot migrate .slnx file. + + Place project in root of the solution, rather than creating a solution folder. 将项目放在解决方案的根目录下,而不是创建解决方案文件夹。 @@ -62,6 +67,11 @@ 列出解决方案中的所有项目。 + + Could not find serializer for file {0}. + Could not find serializer for file {0}. + + .slnx file {0} generated. .slnx file {0} generated. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.zh-Hant.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.zh-Hant.xlf index 634a6210b0e9..fcf5d583a1ba 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.zh-Hant.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.zh-Hant.xlf @@ -27,6 +27,11 @@ 為解決方案檔新增一或多個專案。 + + Cannot migrate .slnx file. + Cannot migrate .slnx file. + + Place project in root of the solution, rather than creating a solution folder. 請將專案放置在解決方案的根目錄中,而非放置於建立解決方案的資料夾中。 @@ -62,6 +67,11 @@ 列出解決方案中的所有專案。 + + Could not find serializer for file {0}. + Could not find serializer for file {0}. + + .slnx file {0} generated. .slnx file {0} generated. From be99a875ea1fee0f56ed8d31a46266433c54362b Mon Sep 17 00:00:00 2001 From: Eduardo Villalpando Mello Date: Wed, 30 Oct 2024 13:57:51 -0700 Subject: [PATCH 05/12] Fix typo --- src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs b/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs index 8caea41d23f6..b039cddb3ea0 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs +++ b/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs @@ -77,7 +77,7 @@ internal static ISolutionSerializer GetSolutionSerializer(string solutionFilePat ISolutionSerializer? serializer = SolutionSerializers.GetSerializerByMoniker(solutionFilePath); if (serializer is null) { - throw new GracefulException(CommonLocalizableStrings.SerializerNotFound, solutionFilePath); + throw new GracefulException(LocalizableStrings.SerializerNotFound, solutionFilePath); } return serializer; } From 578f80a5593f6c37c1fb638215580ea0e68df752 Mon Sep 17 00:00:00 2001 From: Eduardo Villalpando Mello Date: Wed, 30 Oct 2024 15:53:55 -0700 Subject: [PATCH 06/12] Fix issues with --solution-folders --- .../commands/dotnet-sln/list/Program.cs | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs b/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs index 4f5aaad99997..9750ee5171de 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs +++ b/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs @@ -5,11 +5,8 @@ using Microsoft.DotNet.Cli; using Microsoft.DotNet.Cli.Sln.Internal; using Microsoft.DotNet.Cli.Utils; -using Microsoft.DotNet.Tools.Common; -using Microsoft.Extensions.EnvironmentAbstractions; using Microsoft.VisualStudio.SolutionPersistence; using Microsoft.VisualStudio.SolutionPersistence.Model; -using Microsoft.VisualStudio.SolutionPersistence.Serializer; namespace Microsoft.DotNet.Tools.Sln.List { @@ -41,13 +38,22 @@ public override int Execute() private async Task ListAllProjectsAsync(string solutionFileFullPath, CancellationToken cancellationToken) { + Guid solutionFolderGuid = new Guid(ProjectTypeGuids.SolutionFolderGuid); ISolutionSerializer serializer = SlnCommandParser.GetSolutionSerializer(solutionFileFullPath); SolutionModel solution = await serializer.OpenAsync(solutionFileFullPath, cancellationToken); - string[] paths = solution.SolutionProjects - .Where(solution => _displaySolutionFolders ? (solution.Type == ProjectTypeGuids.SolutionFolderGuid) : (solution.Type != ProjectTypeGuids.SolutionFolderGuid)) - .Select(folder => _displaySolutionFolders ? Path.GetFullPath(folder.FilePath) : folder.FilePath) - .ToArray(); - + string[] paths; + if (_displaySolutionFolders) + { + paths = solution.SolutionFolders + .Select(folder => folder.Path.Substring(1)) + .ToArray(); + } + else + { + paths = solution.SolutionProjects + .Select(project => project.FilePath) + .ToArray(); + } if (paths.Length == 0) { Reporter.Output.WriteLine(CommonLocalizableStrings.NoProjectsFound); From 2b14575b344ba83d4a8c79c368fe89058f4c28cb Mon Sep 17 00:00:00 2001 From: Eduardo Villalpando Mello Date: Thu, 31 Oct 2024 09:53:48 -0700 Subject: [PATCH 07/12] Standarize error messages and tests --- src/Cli/dotnet/commands/dotnet-sln/list/Program.cs | 3 ++- test/dotnet-sln.Tests/GivenDotnetSlnList.cs | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs b/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs index 9750ee5171de..bdb2b5a7983d 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs +++ b/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs @@ -7,6 +7,7 @@ using Microsoft.DotNet.Cli.Utils; using Microsoft.VisualStudio.SolutionPersistence; using Microsoft.VisualStudio.SolutionPersistence.Model; +using CommandLocalizableStrings = Microsoft.DotNet.Tools.CommonLocalizableStrings; namespace Microsoft.DotNet.Tools.Sln.List { @@ -32,7 +33,7 @@ public override int Execute() } catch (Exception ex) { - throw new GracefulException(ex.Message, ex); + throw new GracefulException(CommandLocalizableStrings.InvalidSolutionFormatString, solutionFileFullPath, ex.Message); } } diff --git a/test/dotnet-sln.Tests/GivenDotnetSlnList.cs b/test/dotnet-sln.Tests/GivenDotnetSlnList.cs index 77670963b1ad..a475080f2533 100644 --- a/test/dotnet-sln.Tests/GivenDotnetSlnList.cs +++ b/test/dotnet-sln.Tests/GivenDotnetSlnList.cs @@ -100,7 +100,8 @@ public void WhenInvalidSolutionIsPassedItPrintsErrorAndUsage(string solutionComm .WithWorkingDirectory(projectDirectory) .Execute(solutionCommand, "InvalidSolution.sln", "list"); cmd.Should().Fail(); - cmd.StdErr.Should().Be(string.Format(CommonLocalizableStrings.InvalidSolutionFormatString, "InvalidSolution.sln", LocalizableStrings.FileHeaderMissingError)); + cmd.StdErr.Should().Contain( + String.Format(CommonLocalizableStrings.InvalidSolutionFormatString, Path.Combine(projectDirectory, "InvalidSolution.sln"), "").TrimEnd(".")); cmd.StdOut.Should().BeVisuallyEquivalentToIfNotLocalized(""); } @@ -119,7 +120,8 @@ public void WhenInvalidSolutionIsFoundListPrintsErrorAndUsage(string solutionCom .WithWorkingDirectory(projectDirectory) .Execute(solutionCommand, "list"); cmd.Should().Fail(); - cmd.StdErr.Should().Be(string.Format(CommonLocalizableStrings.InvalidSolutionFormatString, solutionFullPath, LocalizableStrings.FileHeaderMissingError)); + cmd.StdErr.Should().Contain( + String.Format(CommonLocalizableStrings.InvalidSolutionFormatString, solutionFullPath, "").TrimEnd(".")); cmd.StdOut.Should().BeVisuallyEquivalentToIfNotLocalized(""); } From 83fad083e11b6491268b6ee8114467e6241f2932 Mon Sep 17 00:00:00 2001 From: Eduardo Villalpando Mello Date: Thu, 31 Oct 2024 10:51:06 -0700 Subject: [PATCH 08/12] Fix solution folder formatting --- src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs | 2 +- src/Cli/dotnet/commands/dotnet-sln/list/Program.cs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs b/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs index b039cddb3ea0..b2a2f685b752 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs +++ b/src/Cli/dotnet/commands/dotnet-sln/SlnCommandParser.cs @@ -67,7 +67,7 @@ internal static string GetSlnFileFullPath(string slnFileOrDirectory) { throw new GracefulException(CommonLocalizableStrings.MoreThanOneSolutionInDirectory, slnFileOrDirectory); } - return Path.GetFullPath(files.Single().ToString()); + return Path.GetFullPath(files.Single()); } throw new GracefulException(CommonLocalizableStrings.CouldNotFindSolutionOrDirectory, slnFileOrDirectory); } diff --git a/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs b/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs index bdb2b5a7983d..db4a3825ff72 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs +++ b/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs @@ -46,7 +46,8 @@ private async Task ListAllProjectsAsync(string solutionFileFullPath, Cancellatio if (_displaySolutionFolders) { paths = solution.SolutionFolders - .Select(folder => folder.Path.Substring(1)) + // VS-SolutionPersistence does not return a path object, so there might be issues with forward/backward slashes on different platforms + .Select(folder => Path.GetDirectoryName(folder.Path.TrimStart("/"))) .ToArray(); } else From 92fe6810442f8e23af1189ce3ecebd35e62dabba Mon Sep 17 00:00:00 2001 From: Eduardo Villalpando Mello Date: Fri, 1 Nov 2024 08:28:19 -0700 Subject: [PATCH 09/12] Nit: Address pr comments --- test/dotnet-sln.Tests/GivenDotnetSlnList.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/dotnet-sln.Tests/GivenDotnetSlnList.cs b/test/dotnet-sln.Tests/GivenDotnetSlnList.cs index a475080f2533..f8144602ad25 100644 --- a/test/dotnet-sln.Tests/GivenDotnetSlnList.cs +++ b/test/dotnet-sln.Tests/GivenDotnetSlnList.cs @@ -101,7 +101,7 @@ public void WhenInvalidSolutionIsPassedItPrintsErrorAndUsage(string solutionComm .Execute(solutionCommand, "InvalidSolution.sln", "list"); cmd.Should().Fail(); cmd.StdErr.Should().Contain( - String.Format(CommonLocalizableStrings.InvalidSolutionFormatString, Path.Combine(projectDirectory, "InvalidSolution.sln"), "").TrimEnd(".")); + string.Format(CommonLocalizableStrings.InvalidSolutionFormatString, Path.Combine(projectDirectory, "InvalidSolution.sln"), "").TrimEnd(".")); cmd.StdOut.Should().BeVisuallyEquivalentToIfNotLocalized(""); } @@ -121,7 +121,7 @@ public void WhenInvalidSolutionIsFoundListPrintsErrorAndUsage(string solutionCom .Execute(solutionCommand, "list"); cmd.Should().Fail(); cmd.StdErr.Should().Contain( - String.Format(CommonLocalizableStrings.InvalidSolutionFormatString, solutionFullPath, "").TrimEnd(".")); + string.Format(CommonLocalizableStrings.InvalidSolutionFormatString, solutionFullPath, "").TrimEnd(".")); cmd.StdOut.Should().BeVisuallyEquivalentToIfNotLocalized(""); } From ed3359fbbb784d9b95cc9fe8537a01e749403210 Mon Sep 17 00:00:00 2001 From: Eduardo Villalpando Mello Date: Mon, 4 Nov 2024 11:28:12 -0800 Subject: [PATCH 10/12] Remove unused variable --- src/Cli/dotnet/commands/dotnet-sln/list/Program.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs b/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs index db4a3825ff72..d2921f243767 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs +++ b/src/Cli/dotnet/commands/dotnet-sln/list/Program.cs @@ -39,7 +39,6 @@ public override int Execute() private async Task ListAllProjectsAsync(string solutionFileFullPath, CancellationToken cancellationToken) { - Guid solutionFolderGuid = new Guid(ProjectTypeGuids.SolutionFolderGuid); ISolutionSerializer serializer = SlnCommandParser.GetSolutionSerializer(solutionFileFullPath); SolutionModel solution = await serializer.OpenAsync(solutionFileFullPath, cancellationToken); string[] paths; From 7627ea0ff6b87606ad9fb8fdea9a793e62fcd6ec Mon Sep 17 00:00:00 2001 From: Eduardo Villalpando Mello Date: Mon, 4 Nov 2024 11:48:57 -0800 Subject: [PATCH 11/12] Address pr comments on translations --- src/Cli/dotnet/commands/dotnet-sln/LocalizableStrings.resx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Cli/dotnet/commands/dotnet-sln/LocalizableStrings.resx b/src/Cli/dotnet/commands/dotnet-sln/LocalizableStrings.resx index 9e4647d556fa..4748d3d4504b 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/LocalizableStrings.resx +++ b/src/Cli/dotnet/commands/dotnet-sln/LocalizableStrings.resx @@ -184,9 +184,9 @@ .slnx file {0} generated. - Cannot migrate .slnx file. + Only .sln files can be migrated to .slnx format. - Could not find serializer for file {0}. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. \ No newline at end of file From 4b39b9f0deee50b1de41f2d36af8968282fd8adb Mon Sep 17 00:00:00 2001 From: Eduardo Villalpando Mello Date: Mon, 4 Nov 2024 13:13:28 -0800 Subject: [PATCH 12/12] Update translations /build --- .../commands/dotnet-sln/xlf/LocalizableStrings.cs.xlf | 8 ++++---- .../commands/dotnet-sln/xlf/LocalizableStrings.de.xlf | 8 ++++---- .../commands/dotnet-sln/xlf/LocalizableStrings.es.xlf | 8 ++++---- .../commands/dotnet-sln/xlf/LocalizableStrings.fr.xlf | 8 ++++---- .../commands/dotnet-sln/xlf/LocalizableStrings.it.xlf | 8 ++++---- .../commands/dotnet-sln/xlf/LocalizableStrings.ja.xlf | 8 ++++---- .../commands/dotnet-sln/xlf/LocalizableStrings.ko.xlf | 8 ++++---- .../commands/dotnet-sln/xlf/LocalizableStrings.pl.xlf | 8 ++++---- .../commands/dotnet-sln/xlf/LocalizableStrings.pt-BR.xlf | 8 ++++---- .../commands/dotnet-sln/xlf/LocalizableStrings.ru.xlf | 8 ++++---- .../commands/dotnet-sln/xlf/LocalizableStrings.tr.xlf | 8 ++++---- .../dotnet-sln/xlf/LocalizableStrings.zh-Hans.xlf | 8 ++++---- .../dotnet-sln/xlf/LocalizableStrings.zh-Hant.xlf | 8 ++++---- 13 files changed, 52 insertions(+), 52 deletions(-) diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.cs.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.cs.xlf index 4bab05e710d3..f5b32233e7d0 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.cs.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.cs.xlf @@ -28,8 +28,8 @@ - Cannot migrate .slnx file. - Cannot migrate .slnx file. + Only .sln files can be migrated to .slnx format. + Only .sln files can be migrated to .slnx format. @@ -68,8 +68,8 @@ - Could not find serializer for file {0}. - Could not find serializer for file {0}. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.de.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.de.xlf index d5f7d7054d71..f8eb231f7950 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.de.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.de.xlf @@ -28,8 +28,8 @@ - Cannot migrate .slnx file. - Cannot migrate .slnx file. + Only .sln files can be migrated to .slnx format. + Only .sln files can be migrated to .slnx format. @@ -68,8 +68,8 @@ - Could not find serializer for file {0}. - Could not find serializer for file {0}. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.es.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.es.xlf index c36ef1717c81..6ed23a5e39fe 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.es.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.es.xlf @@ -28,8 +28,8 @@ - Cannot migrate .slnx file. - Cannot migrate .slnx file. + Only .sln files can be migrated to .slnx format. + Only .sln files can be migrated to .slnx format. @@ -68,8 +68,8 @@ - Could not find serializer for file {0}. - Could not find serializer for file {0}. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.fr.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.fr.xlf index 66cd0437b80d..b1d8c5880aff 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.fr.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.fr.xlf @@ -28,8 +28,8 @@ - Cannot migrate .slnx file. - Cannot migrate .slnx file. + Only .sln files can be migrated to .slnx format. + Only .sln files can be migrated to .slnx format. @@ -68,8 +68,8 @@ - Could not find serializer for file {0}. - Could not find serializer for file {0}. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.it.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.it.xlf index 63a4dca3e966..989a4f33844e 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.it.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.it.xlf @@ -28,8 +28,8 @@ - Cannot migrate .slnx file. - Cannot migrate .slnx file. + Only .sln files can be migrated to .slnx format. + Only .sln files can be migrated to .slnx format. @@ -68,8 +68,8 @@ - Could not find serializer for file {0}. - Could not find serializer for file {0}. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ja.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ja.xlf index fa49b36f3c7c..2683028f11aa 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ja.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ja.xlf @@ -28,8 +28,8 @@ - Cannot migrate .slnx file. - Cannot migrate .slnx file. + Only .sln files can be migrated to .slnx format. + Only .sln files can be migrated to .slnx format. @@ -68,8 +68,8 @@ - Could not find serializer for file {0}. - Could not find serializer for file {0}. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ko.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ko.xlf index ec6fcef3b737..895400338f29 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ko.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ko.xlf @@ -28,8 +28,8 @@ - Cannot migrate .slnx file. - Cannot migrate .slnx file. + Only .sln files can be migrated to .slnx format. + Only .sln files can be migrated to .slnx format. @@ -68,8 +68,8 @@ - Could not find serializer for file {0}. - Could not find serializer for file {0}. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.pl.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.pl.xlf index 601ff500d1cc..e384d5d00475 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.pl.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.pl.xlf @@ -28,8 +28,8 @@ - Cannot migrate .slnx file. - Cannot migrate .slnx file. + Only .sln files can be migrated to .slnx format. + Only .sln files can be migrated to .slnx format. @@ -68,8 +68,8 @@ - Could not find serializer for file {0}. - Could not find serializer for file {0}. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.pt-BR.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.pt-BR.xlf index 6d941b650f1e..ba4d879b8340 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.pt-BR.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.pt-BR.xlf @@ -28,8 +28,8 @@ - Cannot migrate .slnx file. - Cannot migrate .slnx file. + Only .sln files can be migrated to .slnx format. + Only .sln files can be migrated to .slnx format. @@ -68,8 +68,8 @@ - Could not find serializer for file {0}. - Could not find serializer for file {0}. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ru.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ru.xlf index 6960662f0eed..c5dfbd52a60c 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ru.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.ru.xlf @@ -28,8 +28,8 @@ - Cannot migrate .slnx file. - Cannot migrate .slnx file. + Only .sln files can be migrated to .slnx format. + Only .sln files can be migrated to .slnx format. @@ -68,8 +68,8 @@ - Could not find serializer for file {0}. - Could not find serializer for file {0}. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.tr.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.tr.xlf index a705f8605a87..fea7bcc4ea34 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.tr.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.tr.xlf @@ -28,8 +28,8 @@ - Cannot migrate .slnx file. - Cannot migrate .slnx file. + Only .sln files can be migrated to .slnx format. + Only .sln files can be migrated to .slnx format. @@ -68,8 +68,8 @@ - Could not find serializer for file {0}. - Could not find serializer for file {0}. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.zh-Hans.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.zh-Hans.xlf index 533a67153faf..82241d2d4a6a 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.zh-Hans.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.zh-Hans.xlf @@ -28,8 +28,8 @@ - Cannot migrate .slnx file. - Cannot migrate .slnx file. + Only .sln files can be migrated to .slnx format. + Only .sln files can be migrated to .slnx format. @@ -68,8 +68,8 @@ - Could not find serializer for file {0}. - Could not find serializer for file {0}. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. diff --git a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.zh-Hant.xlf b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.zh-Hant.xlf index fcf5d583a1ba..5b061ec4f5f2 100644 --- a/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.zh-Hant.xlf +++ b/src/Cli/dotnet/commands/dotnet-sln/xlf/LocalizableStrings.zh-Hant.xlf @@ -28,8 +28,8 @@ - Cannot migrate .slnx file. - Cannot migrate .slnx file. + Only .sln files can be migrated to .slnx format. + Only .sln files can be migrated to .slnx format. @@ -68,8 +68,8 @@ - Could not find serializer for file {0}. - Could not find serializer for file {0}. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions. + Could not read solution file {0}. Supported files are .sln and .slnx valid solutions.