diff --git a/src/Cli/dotnet/commands/dotnet-workload/WorkloadCommandParser.cs b/src/Cli/dotnet/commands/dotnet-workload/WorkloadCommandParser.cs index 7e2d7a20e8c7..81f12c6a03a8 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/WorkloadCommandParser.cs +++ b/src/Cli/dotnet/commands/dotnet-workload/WorkloadCommandParser.cs @@ -45,7 +45,10 @@ internal static string GetWorkloadsVersion(WorkloadInfoHelper workloadInfoHelper { workloadInfoHelper ??= new WorkloadInfoHelper(false); - return workloadInfoHelper.ManifestProvider.GetWorkloadVersion(); + (string version, string error) = workloadInfoHelper.ManifestProvider.GetWorkloadVersion(); + + // The explicit space here is intentional, as it's easy to miss in localization and crucial for parsing + return version + (error is not null ? ' ' + Workloads.Workload.List.LocalizableStrings.WorkloadVersionNotInstalledShort : string.Empty); } internal static void ShowWorkloadsInfo(ParseResult parseResult = null, WorkloadInfoHelper workloadInfoHelper = null, IReporter reporter = null, string dotnetDir = null, bool showVersion = true) @@ -56,9 +59,11 @@ internal static void ShowWorkloadsInfo(ParseResult parseResult = null, WorkloadI reporter ??= Utils.Reporter.Output; string dotnetPath = dotnetDir ?? Path.GetDirectoryName(Environment.ProcessPath); + string error = null; if (showVersion) { - reporter.WriteLine($" Workload version: {workloadInfoHelper.ManifestProvider.GetWorkloadVersion()}"); + (string version, error) = workloadInfoHelper.ManifestProvider.GetWorkloadVersion(); + reporter.WriteLine($" Workload version: {version}"); } var useWorkloadSets = InstallStateContents.FromPath(Path.Combine(WorkloadInstallType.GetInstallStateFolder(workloadInfoHelper._currentSdkFeatureBand, workloadInfoHelper.UserLocalPath), "default.json")).UseWorkloadSets; @@ -97,6 +102,11 @@ internal static void ShowWorkloadsInfo(ParseResult parseResult = null, WorkloadI ); reporter.WriteLine(""); } + + if (error is not null) + { + reporter.WriteLine(error); + } } private static int ProcessArgs(ParseResult parseResult) diff --git a/src/Cli/dotnet/commands/dotnet-workload/WorkloadHistoryRecorder.cs b/src/Cli/dotnet/commands/dotnet-workload/WorkloadHistoryRecorder.cs index b4aa226ba370..5beb3e3aacd7 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/WorkloadHistoryRecorder.cs +++ b/src/Cli/dotnet/commands/dotnet-workload/WorkloadHistoryRecorder.cs @@ -54,7 +54,7 @@ public void Run(Action workloadAction) private WorkloadHistoryState GetWorkloadState() { var resolver = _workloadResolverFunc(); - var currentWorkloadInfo = resolver.GetWorkloadVersion(); + var currentWorkloadVersion = resolver.GetWorkloadVersion().version; return new WorkloadHistoryState() { ManifestVersions = resolver.GetInstalledManifests().ToDictionary(manifest => manifest.Id.ToString(), manifest => $"{manifest.Version}/{manifest.ManifestFeatureBand}"), @@ -62,7 +62,7 @@ private WorkloadHistoryState GetWorkloadState() .GetInstalledWorkloads(new SdkFeatureBand(_workloadResolver.GetSdkFeatureBand())) .Select(id => id.ToString()) .ToList(), - WorkloadSetVersion = resolver.GetWorkloadVersion() + WorkloadSetVersion = currentWorkloadVersion }; } diff --git a/src/Cli/dotnet/commands/dotnet-workload/list/LocalizableStrings.resx b/src/Cli/dotnet/commands/dotnet-workload/list/LocalizableStrings.resx index 4ba629fee8d5..e82e8b1e6a75 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/list/LocalizableStrings.resx +++ b/src/Cli/dotnet/commands/dotnet-workload/list/LocalizableStrings.resx @@ -134,6 +134,9 @@ Found workload version {0} pinned in the global.json file at {1}. + + (not installed) + Found workload version {0} pinned in the global.json file at {1}, but it was not installed. Running `dotnet workload install`, `dotnet workload update`, or `dotnet workload restore` may fix this. diff --git a/src/Cli/dotnet/commands/dotnet-workload/list/WorkloadListCommand.cs b/src/Cli/dotnet/commands/dotnet-workload/list/WorkloadListCommand.cs index 40a32b23c7be..30f9e89b67b7 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/list/WorkloadListCommand.cs +++ b/src/Cli/dotnet/commands/dotnet-workload/list/WorkloadListCommand.cs @@ -93,7 +93,7 @@ public override int Execute() } else { - Reporter.WriteLine(string.Format(LocalizableStrings.WorkloadSetVersion, _workloadListHelper.WorkloadResolver.GetWorkloadVersion() ?? "unknown")); + Reporter.WriteLine(string.Format(LocalizableStrings.WorkloadSetVersion, _workloadListHelper.WorkloadResolver.GetWorkloadVersion().version ?? "unknown")); } Reporter.WriteLine(); diff --git a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.cs.xlf b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.cs.xlf index 722830ef8eb3..2a900b4f2dc2 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.cs.xlf +++ b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.cs.xlf @@ -32,6 +32,11 @@ Aktualizace jsou k dispozici pro následující úlohy: {0}. Pokud chcete získat nejnovější verzi, spusťte aktualizaci úlohy dotnet (`dotnet workload update`). {Locked="dotnet workload update"} + + (not installed) + (not installed) + + \ No newline at end of file diff --git a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.de.xlf b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.de.xlf index cc37a79c6050..6d8a6ad9375a 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.de.xlf +++ b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.de.xlf @@ -32,6 +32,11 @@ Updates sind für die folgenden Workloads verfügbar: {0}. Führen Sie „dotnet workload update“ aus, um die neueste Updates zu erhalten. {Locked="dotnet workload update"} + + (not installed) + (not installed) + + \ No newline at end of file diff --git a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.es.xlf b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.es.xlf index 0144e50a38cb..6fccba23b95c 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.es.xlf +++ b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.es.xlf @@ -32,6 +32,11 @@ Hay actualizaciones disponibles para las siguientes cargas de trabajo: {0}. Ejecute "dotnet workload update" para obtener la versión más reciente. {Locked="dotnet workload update"} + + (not installed) + (not installed) + + \ No newline at end of file diff --git a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.fr.xlf b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.fr.xlf index 651a34096ff9..fe1b3f8895a5 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.fr.xlf +++ b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.fr.xlf @@ -32,6 +32,11 @@ Des mises à jour sont disponibles pour les charges de travail suivantes : {0}. Exécutez `dotnet workload update` pour obtenir la dernière version. {Locked="dotnet workload update"} + + (not installed) + (not installed) + + \ No newline at end of file diff --git a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.it.xlf b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.it.xlf index 40e37f31dbe1..0a3bb9ad6c81 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.it.xlf +++ b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.it.xlf @@ -32,6 +32,11 @@ Gli aggiornamenti sono disponibili per i carichi di lavoro seguenti: {0}. Per ottenere la versione più recente, eseguire 'dotnet workload update'. {Locked="dotnet workload update"} + + (not installed) + (not installed) + + \ No newline at end of file diff --git a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.ja.xlf b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.ja.xlf index 906a1e304014..b0a53e52f449 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.ja.xlf +++ b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.ja.xlf @@ -32,6 +32,11 @@ 次のワークロードについて更新プログラムを入手可能です: {0}。最新版を取得するには、`dotnet workload update` を実行します。 {Locked="dotnet workload update"} + + (not installed) + (not installed) + + \ No newline at end of file diff --git a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.ko.xlf b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.ko.xlf index e3a03464b07a..41b8060ef14e 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.ko.xlf +++ b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.ko.xlf @@ -32,6 +32,11 @@ 다음 워크로드에 대한 업데이트를 사용할 수 있습니다. {0}. 최신 버전을 받으려면 `dotnet workload update`를 실행하세요. {Locked="dotnet workload update"} + + (not installed) + (not installed) + + \ No newline at end of file diff --git a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.pl.xlf b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.pl.xlf index c925df5fcd75..125782bec3e1 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.pl.xlf +++ b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.pl.xlf @@ -32,6 +32,11 @@ Aktualizacje są dostępne dla następujących obciążeń: {0}. Uruchom polecenie `dotnet workload update`, aby uzyskać najnowszą wersję. {Locked="dotnet workload update"} + + (not installed) + (not installed) + + \ No newline at end of file diff --git a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.pt-BR.xlf b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.pt-BR.xlf index d815267266d6..29bffc61132f 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.pt-BR.xlf +++ b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.pt-BR.xlf @@ -32,6 +32,11 @@ As atualizações estão disponíveis para as seguintes cargas de trabalho(s): {0}. Execute `dotnet workload update` para obter o mais recente. {Locked="dotnet workload update"} + + (not installed) + (not installed) + + \ No newline at end of file diff --git a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.ru.xlf b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.ru.xlf index 55c0c4924564..8f2c10c716f0 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.ru.xlf +++ b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.ru.xlf @@ -32,6 +32,11 @@ Обновления доступны для следующих рабочих нагрузок: {0}. Чтобы получить последнюю версию, запустите `dotnet workload update`. {Locked="dotnet workload update"} + + (not installed) + (not installed) + + \ No newline at end of file diff --git a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.tr.xlf b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.tr.xlf index e2fd1f6d4bbb..b60e77b79c1a 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.tr.xlf +++ b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.tr.xlf @@ -32,6 +32,11 @@ Şu iş yükleri için güncelleştirmeler var: {0}. En son sürümü almak için `dotnet workload update` çalıştırın. {Locked="dotnet workload update"} + + (not installed) + (not installed) + + \ No newline at end of file diff --git a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.zh-Hans.xlf b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.zh-Hans.xlf index 110a836e90c0..5cffb456a7de 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.zh-Hans.xlf +++ b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.zh-Hans.xlf @@ -32,6 +32,11 @@ 以下工作负载有可用的更新: {0}。请运行 `dotnet workload update` 以获取最新版本。 {Locked="dotnet workload update"} + + (not installed) + (not installed) + + \ No newline at end of file diff --git a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.zh-Hant.xlf b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.zh-Hant.xlf index c3838d6dd072..2d36f2b1639f 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.zh-Hant.xlf +++ b/src/Cli/dotnet/commands/dotnet-workload/list/xlf/LocalizableStrings.zh-Hant.xlf @@ -32,6 +32,11 @@ 以下工作負載有可用的更新: {0}。執行 `dotnet workload update` 以取得最新更新。 {Locked="dotnet workload update"} + + (not installed) + (not installed) + + \ No newline at end of file diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/IWorkloadManifestProvider.cs b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/IWorkloadManifestProvider.cs index f6a5e9676624..9fdf2626c517 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/IWorkloadManifestProvider.cs +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/IWorkloadManifestProvider.cs @@ -14,7 +14,7 @@ public interface IWorkloadManifestProvider string GetSdkFeatureBand(); - string? GetWorkloadVersion(); + (string? version, string? error) GetWorkloadVersion(); Dictionary GetAvailableWorkloadSets(); } diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/IWorkloadResolver.cs b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/IWorkloadResolver.cs index 054aa1201798..41ce098c36a5 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/IWorkloadResolver.cs +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/IWorkloadResolver.cs @@ -20,7 +20,7 @@ public interface IWorkloadResolver string GetManifestFeatureBand(string manifestId); IEnumerable GetInstalledManifests(); string GetSdkFeatureBand(); - string? GetWorkloadVersion(); + (string? version, string? error) GetWorkloadVersion(); IEnumerable GetUpdatedWorkloads(WorkloadResolver advertisingManifestResolver, IEnumerable installedWorkloads); WorkloadManifest GetManifestFromWorkload(WorkloadId workloadId); diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/SdkDirectoryWorkloadManifestProvider.cs b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/SdkDirectoryWorkloadManifestProvider.cs index 4acd8945ff9a..c4b8f67b8361 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/SdkDirectoryWorkloadManifestProvider.cs +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/SdkDirectoryWorkloadManifestProvider.cs @@ -243,20 +243,29 @@ void ThrowExceptionIfManifestsNotAvailable() } } - public string? GetWorkloadVersion() + public (string? version, string? error) GetWorkloadVersion() { if (_globalJsonWorkloadSetVersion != null) { - return _globalJsonWorkloadSetVersion; + // _exceptionToThrow is set to null here if and only if the workload set is not installed. + // If this came from --info or workload --version, the error won't be thrown, but we should still + // suggest running `dotnet workload restore` to the user. + return (_globalJsonWorkloadSetVersion, _exceptionToThrow?.Message); } ThrowExceptionIfManifestsNotAvailable(); if (_workloadSet?.Version is not null) { - return _workloadSet?.Version!; + return (_workloadSet.Version, null); } + var installStateFilePath = Path.Combine(WorkloadInstallType.GetInstallStateFolder(_sdkVersionBand, _sdkOrUserLocalPath), "default.json"); + var installState = InstallStateContents.FromPath(installStateFilePath)!; + string? shouldRestoreMessage = installState.UseWorkloadSets == true ? + Strings.ShouldInstallAWorkloadSet : + null; + using (SHA256 sha256Hash = SHA256.Create()) { byte[] bytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(string.Join(";", @@ -271,7 +280,7 @@ void ThrowExceptionIfManifestsNotAvailable() sb.Append(bytes[b].ToString("x2")); } - return $"{_sdkVersionBand.ToStringWithoutPrerelease()}-manifests.{sb}"; + return ($"{_sdkVersionBand.ToStringWithoutPrerelease()}-manifests.{sb}", shouldRestoreMessage); } } diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/Strings.resx b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/Strings.resx index cf418daa75cb..1f4d01f08f1b 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/Strings.resx +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/Strings.resx @@ -201,6 +201,9 @@ Workload version {0}, which was specified in {1}, was not found. Run "dotnet workload restore" to install this workload version. {Locked="dotnet workload restore"} + + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + Workload version {0} was not found. diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/TempDirectoryWorkloadManifestProvider.cs b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/TempDirectoryWorkloadManifestProvider.cs index 79d1351d9f90..cbf3163ea7fb 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/TempDirectoryWorkloadManifestProvider.cs +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/TempDirectoryWorkloadManifestProvider.cs @@ -53,7 +53,7 @@ public IEnumerable GetManifestDirectories() } public string GetSdkFeatureBand() => _sdkVersionBand; - public string? GetWorkloadVersion() => _sdkVersionBand.ToString() + ".2"; + public (string? version, string? error) GetWorkloadVersion() => (_sdkVersionBand.ToString() + ".2", null); public Dictionary GetAvailableWorkloadSets() => new(); } } diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/WorkloadResolver.cs b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/WorkloadResolver.cs index 3d9eba645554..ccdf344563ff 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/WorkloadResolver.cs +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/WorkloadResolver.cs @@ -115,7 +115,7 @@ public void RefreshWorkloadManifests() InitializeManifests(); } - public string? GetWorkloadVersion() => _manifestProvider.GetWorkloadVersion(); + public (string? version, string? error) GetWorkloadVersion() => _manifestProvider.GetWorkloadVersion(); private void LoadManifestsFromProvider(IWorkloadManifestProvider manifestProvider) { @@ -778,7 +778,7 @@ public void RefreshWorkloadManifests() { } public Dictionary GetAvailableWorkloadSets() => new(); public IEnumerable GetManifests() => Enumerable.Empty(); public string GetSdkFeatureBand() => _sdkFeatureBand; - public string? GetWorkloadVersion() => _sdkFeatureBand.ToString() + ".2"; + public (string? version, string? error) GetWorkloadVersion() => (_sdkFeatureBand + ".2", null); } } diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.cs.xlf b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.cs.xlf index 4407d1e29043..6768ed847635 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.cs.xlf +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.cs.xlf @@ -117,6 +117,11 @@ Přesměrování úlohy {0} má jiné klíče než redirect-to. + + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + + Unexpected token '{0}' at offset {1} Neočekávaný token {0} u posunu {1} diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.de.xlf b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.de.xlf index 4ef614824da0..bc469304b123 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.de.xlf +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.de.xlf @@ -117,6 +117,11 @@ Die Umleitungsworkload „{0}“ hat andere Schlüssel als „redirect-to“. + + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + + Unexpected token '{0}' at offset {1} Unerwartetes Token "{0}" bei Offset {1}. diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.es.xlf b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.es.xlf index 965f78c7a674..c6a6e96a9283 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.es.xlf +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.es.xlf @@ -117,6 +117,11 @@ La carga de trabajo de redireccionamiento '{0}' tiene claves distintas que las de 'redirect-to' + + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + + Unexpected token '{0}' at offset {1} Token "{0}" inesperado en el desplazamiento {1} diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.fr.xlf b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.fr.xlf index 86ea8311cbd8..7a225f0e7ca4 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.fr.xlf +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.fr.xlf @@ -117,6 +117,11 @@ La charge de travail de redirection « {0} » a des clés autres que « redirection vers ». + + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + + Unexpected token '{0}' at offset {1} Jeton '{0}' inattendu à l'offset {1} diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.it.xlf b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.it.xlf index 7bab4f663335..2c23e0e48458 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.it.xlf +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.it.xlf @@ -117,6 +117,11 @@ Il carico di lavoro '{0}' di reindirizzamento ha chiavi diverse da ' Redirect-to ' + + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + + Unexpected token '{0}' at offset {1} Token '{0}' imprevisto alla posizione di offset {1} diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.ja.xlf b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.ja.xlf index 7a8e0cf5bd18..95e2bad049f9 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.ja.xlf +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.ja.xlf @@ -117,6 +117,11 @@ リダイレクト ワークロード '{0}' に 'redirect-to' 以外のキーがあります + + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + + Unexpected token '{0}' at offset {1} オフセット {1} に予期しないトークン '{0}' があります diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.ko.xlf b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.ko.xlf index ece3a585d49f..43a29b8c2553 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.ko.xlf +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.ko.xlf @@ -117,6 +117,11 @@ 리디렉션 워크로드 '{0}'에 'redirect-to' 이외의 다른 키가 있습니다 + + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + + Unexpected token '{0}' at offset {1} 오프셋 {1}에 예기치 않은 토큰 '{0}'이(가) 있습니다. diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.pl.xlf b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.pl.xlf index 4d426d6393bb..ca7d434a99d3 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.pl.xlf +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.pl.xlf @@ -117,6 +117,11 @@ Obciążenie przekierowania „{0}” ma klucze inne niż „redirect-to” + + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + + Unexpected token '{0}' at offset {1} Nieoczekiwany token „{0}” pod przesunięciem {1} diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.pt-BR.xlf b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.pt-BR.xlf index 006a94cd72fa..f616ada54369 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.pt-BR.xlf +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.pt-BR.xlf @@ -117,6 +117,11 @@ A carga de trabalho de redirecionamento '{0}' tem chaves diferentes além de 'redirecionar-para' + + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + + Unexpected token '{0}' at offset {1} Token inesperado '{0}' no deslocamento {1} diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.ru.xlf b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.ru.xlf index c99667294093..3dc35fa05488 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.ru.xlf +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.ru.xlf @@ -117,6 +117,11 @@ Перенаправление рабочей нагрузки "{0}" содержит ключи, отличные от "redirect-to" + + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + + Unexpected token '{0}' at offset {1} Непредвиденный токен "{0}" в смещении {1} diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.tr.xlf b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.tr.xlf index c8522d74ad06..3d7438d26d40 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.tr.xlf +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.tr.xlf @@ -117,6 +117,11 @@ '{0}' yeniden yönlendirme iş yükünde 'redirect-to' dışında anahtarlar var + + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + + Unexpected token '{0}' at offset {1} {1} uzaklığında beklenmeyen '{0}' belirteci diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.zh-Hans.xlf b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.zh-Hans.xlf index 0aefce1fe3ef..b4ec7b079156 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.zh-Hans.xlf +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.zh-Hans.xlf @@ -117,6 +117,11 @@ 重定向工作负荷“{0}”具有“重定向到”以外的键 + + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + + Unexpected token '{0}' at offset {1} 偏移为 {1} 时意外出现的标记“{0}” diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.zh-Hant.xlf b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.zh-Hant.xlf index e34619e9f3f4..f9bee30f68cb 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.zh-Hant.xlf +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/xlf/Strings.zh-Hant.xlf @@ -117,6 +117,11 @@ 重新導向工作負載 '{0}' 具有 'redirect-to' 以外的其他金鑰 + + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + Workloads are configured to install and update using workload versions, but none were found. Run "dotnet workload restore" to install a workload version. + + Unexpected token '{0}' at offset {1} 位移 {1} 有未預期的權杖 '{0}' diff --git a/test/Microsoft.NET.Sdk.WorkloadManifestReader.Tests/FakeManifestProvider.cs b/test/Microsoft.NET.Sdk.WorkloadManifestReader.Tests/FakeManifestProvider.cs index 354aeb7ad8ee..f903f60210e1 100644 --- a/test/Microsoft.NET.Sdk.WorkloadManifestReader.Tests/FakeManifestProvider.cs +++ b/test/Microsoft.NET.Sdk.WorkloadManifestReader.Tests/FakeManifestProvider.cs @@ -40,7 +40,7 @@ public IEnumerable GetManifests() public string GetSdkFeatureBand() => "8.0.100"; public Dictionary GetAvailableWorkloadSets() => throw new NotImplementedException(); - public string? GetWorkloadVersion() => "8.0.100.2"; + public (string? version, string? error) GetWorkloadVersion() => ("8.0.100.2", null); } internal class InMemoryFakeManifestProvider : IWorkloadManifestProvider, IEnumerable<(string id, string content)> @@ -67,6 +67,6 @@ public IEnumerable GetManifests() IEnumerator IEnumerable.GetEnumerator() => throw new NotImplementedException(); public string GetSdkFeatureBand() => "8.0.100"; public Dictionary GetAvailableWorkloadSets() => throw new NotImplementedException(); - public string? GetWorkloadVersion() => "8.0.100.2"; + public (string? version, string? error) GetWorkloadVersion() => ("8.0.100.2", null); } } diff --git a/test/Microsoft.NET.Sdk.WorkloadManifestReader.Tests/SdkDirectoryWorkloadManifestProviderTests.cs b/test/Microsoft.NET.Sdk.WorkloadManifestReader.Tests/SdkDirectoryWorkloadManifestProviderTests.cs index e7676a0a78ea..973c9d8a46d3 100644 --- a/test/Microsoft.NET.Sdk.WorkloadManifestReader.Tests/SdkDirectoryWorkloadManifestProviderTests.cs +++ b/test/Microsoft.NET.Sdk.WorkloadManifestReader.Tests/SdkDirectoryWorkloadManifestProviderTests.cs @@ -93,14 +93,14 @@ var sdkDirectoryWorkloadManifestProvider if (useWorkloadSet) { - sdkDirectoryWorkloadManifestProvider.GetWorkloadVersion().Should().Be("8.0.200"); + sdkDirectoryWorkloadManifestProvider.GetWorkloadVersion().version.Should().Be("8.0.200"); } else { string[] manifests = sdkDirectoryWorkloadManifestProvider.GetManifests().OrderBy(m => m.ManifestId).Select(m => $"{m.ManifestId}.{m.ManifestFeatureBand}.{m.ManifestVersion}").ToArray(); manifests.Length.Should().Be(1); manifests.Should().Contain("android.8.0.200.33.0.2-rc.1"); - sdkDirectoryWorkloadManifestProvider.GetWorkloadVersion().Should().Be("8.0.200-manifests.4ba11739"); + sdkDirectoryWorkloadManifestProvider.GetWorkloadVersion().version.Should().Be("8.0.200-manifests.4ba11739"); } Directory.Delete(Path.Combine(_manifestRoot, "8.0.100"), recursive: true); diff --git a/test/dotnet-workload-install.Tests/MockManifestProvider.cs b/test/dotnet-workload-install.Tests/MockManifestProvider.cs index 94cc85ae5f1d..303dcf5ec6cc 100644 --- a/test/dotnet-workload-install.Tests/MockManifestProvider.cs +++ b/test/dotnet-workload-install.Tests/MockManifestProvider.cs @@ -48,6 +48,6 @@ public IEnumerable GetManifests() } public string GetSdkFeatureBand() => SdkFeatureBand.ToString(); - public string GetWorkloadVersion() => SdkFeatureBand.ToString() + ".2"; + public (string version, string error) GetWorkloadVersion() => (SdkFeatureBand.ToString() + ".2", null); } } diff --git a/test/dotnet-workload-search.Tests/MockWorkloadResolver.cs b/test/dotnet-workload-search.Tests/MockWorkloadResolver.cs index e7abd19ceff2..5dd3b380a5a0 100644 --- a/test/dotnet-workload-search.Tests/MockWorkloadResolver.cs +++ b/test/dotnet-workload-search.Tests/MockWorkloadResolver.cs @@ -39,7 +39,7 @@ public void RefreshWorkloadManifests() { /* noop */ } public IEnumerable GetInstalledManifests() => _installedManifests ?? throw new NotImplementedException(); public IWorkloadResolver CreateOverlayResolver(IWorkloadManifestProvider overlayManifestProvider) => throw new NotImplementedException(); public string GetSdkFeatureBand() => "12.0.400"; - public string GetWorkloadVersion() => "12.0.400.2"; + public (string version, string error) GetWorkloadVersion() => ("12.0.400.2", null); public IEnumerable GetUpdatedWorkloads(WorkloadResolver advertisingManifestResolver, IEnumerable installedWorkloads) => throw new NotImplementedException(); WorkloadResolver IWorkloadResolver.CreateOverlayResolver(IWorkloadManifestProvider overlayManifestProvider) => throw new NotImplementedException(); WorkloadManifest IWorkloadResolver.GetManifestFromWorkload(WorkloadId workloadId) => throw new NotImplementedException();