From 8e1ddca2a4497fe41c43def4f4fc93d18814b1fc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 25 Mar 2026 20:43:33 +0000 Subject: [PATCH 1/6] Initial plan From 7b89d4a8d716bee343e9ed85c29b4ebb94c2d5e9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 25 Mar 2026 21:08:44 +0000 Subject: [PATCH 2/6] Fix NU1107 message for CPVM with transitive pinning When a version conflict involves a centrally managed transitive package, provide guidance to update the centrally managed package version instead of suggesting to install/reference the package directly. New message: "Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version." Co-authored-by: nkolev92 <2878341+nkolev92@users.noreply.github.com> Agent-Logs-Url: https://github.com/NuGet/NuGet.Client/sessions/42973248-ebc6-4845-bdaa-c3f070e5ac66 --- .../RestoreCommand/RestoreCommand.cs | 31 +++++-- .../NuGet.Commands/Strings.Designer.cs | 9 ++ src/NuGet.Core/NuGet.Commands/Strings.resx | 3 + .../NuGet.Commands/xlf/Strings.cs.xlf | 5 + .../NuGet.Commands/xlf/Strings.de.xlf | 5 + .../NuGet.Commands/xlf/Strings.es.xlf | 5 + .../NuGet.Commands/xlf/Strings.fr.xlf | 5 + .../NuGet.Commands/xlf/Strings.it.xlf | 5 + .../NuGet.Commands/xlf/Strings.ja.xlf | 5 + .../NuGet.Commands/xlf/Strings.ko.xlf | 5 + .../NuGet.Commands/xlf/Strings.pl.xlf | 5 + .../NuGet.Commands/xlf/Strings.pt-BR.xlf | 5 + .../NuGet.Commands/xlf/Strings.ru.xlf | 5 + .../NuGet.Commands/xlf/Strings.tr.xlf | 5 + .../NuGet.Commands/xlf/Strings.zh-Hans.xlf | 5 + .../NuGet.Commands/xlf/Strings.zh-Hant.xlf | 5 + .../RestoreCommandTests.cs | 93 +++++++++++++++++++ 17 files changed, 194 insertions(+), 7 deletions(-) diff --git a/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs b/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs index 5b7ad5adbf2..133d5f85e02 100644 --- a/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs +++ b/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs @@ -1546,13 +1546,30 @@ private async Task ValidateConflictsAsync(IEnumerable { foreach (var versionConflict in graph.AnalyzeResult.VersionConflicts) { - var message = string.Format( - CultureInfo.CurrentCulture, - Strings.Log_VersionConflict, - versionConflict.Selected.Key.Name, - versionConflict.Selected.GetIdAndVersionOrRange(), - _request.Project.Name) - + $" {Environment.NewLine} {versionConflict.Selected.GetPathWithLastRange()} {Environment.NewLine} {versionConflict.Conflicting.GetPathWithLastRange()}."; + string message; + + bool isCentralTransitive = versionConflict.Selected.Item?.IsCentralTransitive == true || + versionConflict.Conflicting.Item?.IsCentralTransitive == true; + + if (isCentralTransitive) + { + message = string.Format( + CultureInfo.CurrentCulture, + Strings.Log_VersionConflictForCentralTransitive, + versionConflict.Selected.Key.Name, + _request.Project.Name) + + $" {Environment.NewLine} {versionConflict.Selected.GetPathWithLastRange()} {Environment.NewLine} {versionConflict.Conflicting.GetPathWithLastRange()}."; + } + else + { + message = string.Format( + CultureInfo.CurrentCulture, + Strings.Log_VersionConflict, + versionConflict.Selected.Key.Name, + versionConflict.Selected.GetIdAndVersionOrRange(), + _request.Project.Name) + + $" {Environment.NewLine} {versionConflict.Selected.GetPathWithLastRange()} {Environment.NewLine} {versionConflict.Conflicting.GetPathWithLastRange()}."; + } await logger.LogAsync(RestoreLogMessage.CreateError(NuGetLogCode.NU1107, message, versionConflict.Selected.Key.Name, graph.TargetGraphName)); return false; diff --git a/src/NuGet.Core/NuGet.Commands/Strings.Designer.cs b/src/NuGet.Core/NuGet.Commands/Strings.Designer.cs index 43b322ddfd6..023a2aed396 100644 --- a/src/NuGet.Core/NuGet.Commands/Strings.Designer.cs +++ b/src/NuGet.Core/NuGet.Commands/Strings.Designer.cs @@ -1763,6 +1763,15 @@ internal static string Log_VersionConflict { } } + /// + /// Looks up a localized string similar to Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.. + /// + internal static string Log_VersionConflictForCentralTransitive { + get { + return ResourceManager.GetString("Log_VersionConflictForCentralTransitive", resourceCulture); + } + } + /// /// Looks up a localized string similar to Writing assets file to disk. Path: {0}. /// diff --git a/src/NuGet.Core/NuGet.Commands/Strings.resx b/src/NuGet.Core/NuGet.Commands/Strings.resx index 169ac0ec224..125f2070417 100644 --- a/src/NuGet.Core/NuGet.Commands/Strings.resx +++ b/src/NuGet.Core/NuGet.Commands/Strings.resx @@ -179,6 +179,9 @@ Version conflict detected for {0}. Install/reference {1} directly to project {2} to resolve this issue. + + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + Package '{0}' specifies an invalid build action '{1}' for file '{2}'. diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.cs.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.cs.xlf index 8d045dbbf49..876b8bb3e04 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.cs.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.cs.xlf @@ -995,6 +995,11 @@ Upgradujte svou sadu .NET SDK nebo odeberte RestoreUseLegacyDependencyResolver, Pro {0} se zjistil konflikt. Pokud chcete tento problém vyřešit, nainstalujte nebo vytvořte odkaz na {1} přímo do projektu {2}. + + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + + Writing assets file to disk. Path: {0} Soubor prostředků se zapisuje na disk. Cesta: {0} diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.de.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.de.xlf index fb51958d874..be1b7afbf27 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.de.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.de.xlf @@ -995,6 +995,11 @@ Aktualisieren Sie Ihr .NET SDK oder entfernen Sie RestoreUseLegacyDependencyReso Versionskonflikt entdeckt für "{0}". Installieren bzw. referenzieren Sie "{1}" direkt in Projekt "{2}", um dieses Problem zu beheben. + + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + + Writing assets file to disk. Path: {0} Die Assetdatei wird auf den Datenträger geschrieben. Pfad: {0} diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.es.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.es.xlf index 08e8a0537a0..dd24357eb01 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.es.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.es.xlf @@ -995,6 +995,11 @@ Actualice el SDK de .NET o quite RestoreUseLegacyDependencyResolver para usar es Se detectó un conflicto de versiones para {0}. Para resolver este problema, instale o haga referencia a {1} directamente en el proyecto {2}. + + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + + Writing assets file to disk. Path: {0} Escribiendo el archivo de recursos en el disco. Ruta de acceso: {0} diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.fr.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.fr.xlf index 689c429363f..c188b72bce7 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.fr.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.fr.xlf @@ -995,6 +995,11 @@ Mettez à niveau votre Kit de développement logiciel (SDK) .NET ou supprimez Re Conflit de version détecté pour {0}. Installez/référencez {1} directement au projet {2} pour résoudre ce problème. + + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + + Writing assets file to disk. Path: {0} Écriture du fichier des composants sur le disque. Chemin : {0} diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.it.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.it.xlf index af232eb51ff..68f30f10720 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.it.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.it.xlf @@ -995,6 +995,11 @@ Per usare questa funzionalità, aggiornare .NET SDK o rimuovere RestoreUseLegacy È stato rilevato un conflitto di versioni per {0}. Per risolvere questo problema, installare {1} o farvi riferimento direttamente nel progetto {2}. + + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + + Writing assets file to disk. Path: {0} Scrittura del file di asset sul disco. Percorso: {0} diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ja.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ja.xlf index a9849704ef0..89180e07791 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ja.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ja.xlf @@ -995,6 +995,11 @@ Upgrade your .NET SDK or remove RestoreUseLegacyDependencyResolver to use this f {0} のバージョンの競合が検出されました。この問題を解決するには、{1} をプロジェクト {2} に直接インストールするか、参照します。 + + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + + Writing assets file to disk. Path: {0} アセット ファイルをディスクに書き込んでいます。パス: {0} diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ko.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ko.xlf index a8367bf4303..1b549cffb73 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ko.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ko.xlf @@ -995,6 +995,11 @@ Upgrade your .NET SDK or remove RestoreUseLegacyDependencyResolver to use this f {0}에 대해 버전 충돌이 검색되었습니다. 이 문제를 해결하려면 {1}을(를) {2} 프로젝트에 직접 설치/참조하세요. + + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + + Writing assets file to disk. Path: {0} 자산 파일을 디스크에 쓰는 중입니다. 경로: {0} diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.pl.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.pl.xlf index 19335382ff2..5a430d54237 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.pl.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.pl.xlf @@ -995,6 +995,11 @@ Uaktualnij zestaw .NET SDK lub usuń RestoreUseLegacyDependencyResolver, aby kor Wykryto konflikt wersji dla elementu {0}. Zainstaluj element {1} lub utwórz jego odwołanie bezpośrednio w projekcie {2}, aby rozwiązać ten problem. + + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + + Writing assets file to disk. Path: {0} Zapisywanie pliku zasobów na dysk. Ścieżka: {0} diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.pt-BR.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.pt-BR.xlf index a6477b4eaed..f24d602d80f 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.pt-BR.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.pt-BR.xlf @@ -995,6 +995,11 @@ Atualize o SDK do .NET ou remova RestoreUseLegacyDependencyResolver para usar es Conflito de versão detectado para {0}. Instale/referencie {1} diretamente no projeto {2} para resolver esse problema. + + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + + Writing assets file to disk. Path: {0} Gravando o arquivo de ativos no disco. Caminho: {0} diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ru.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ru.xlf index ec691099784..76f84d593fa 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ru.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ru.xlf @@ -995,6 +995,11 @@ Upgrade your .NET SDK or remove RestoreUseLegacyDependencyResolver to use this f Обнаружен конфликт версий для {0}. Установите или укажите прямую ссылку {1} на проект {2}, чтобы устранить эту проблему. + + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + + Writing assets file to disk. Path: {0} Запись файла ресурсов на диск. Путь: {0} diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.tr.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.tr.xlf index e7d3d260263..41c5f5012bb 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.tr.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.tr.xlf @@ -995,6 +995,11 @@ Bu özelliği kullanmak için .NET SDK'nizi yükseltin veya RestoreUseLegacyDepe {0} için sürüm çakışması algılandı. Bu sorunu çözmek için {1} öğesini doğrudan {2} projesine ekleyin veya burada başvurun. + + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + + Writing assets file to disk. Path: {0} Varlıklar dosyası diske yazılıyor. Yol: {0} diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hans.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hans.xlf index fa45230aee2..6531d1576c9 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hans.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hans.xlf @@ -995,6 +995,11 @@ Upgrade your .NET SDK or remove RestoreUseLegacyDependencyResolver to use this f {0} 中检测到版本冲突。直接安装/引用 {1} 到项目 {2} 可解决此问题。 + + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + + Writing assets file to disk. Path: {0} 将资产文件写入磁盘。路径: {0} diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hant.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hant.xlf index 519e11a6bce..f215e8d7944 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hant.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hant.xlf @@ -995,6 +995,11 @@ Upgrade your .NET SDK or remove RestoreUseLegacyDependencyResolver to use this f 偵測到 {0} 有版本衝突。請將 {1} 直接安裝/參考到專案 {2} 來解決此問題。 + + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version. + + Writing assets file to disk. Path: {0} 正在將資產檔案寫入磁碟。路徑: {0} diff --git a/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs b/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs index cc91e0228e6..c4818b11936 100644 --- a/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs +++ b/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs @@ -13,6 +13,7 @@ using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; +using System.Xml.Linq; using FluentAssertions; using Microsoft.Internal.NuGet.Testing.SignedPackages; using Moq; @@ -2024,6 +2025,98 @@ await SimpleTestPackageUtility.CreateFolderFeedV3Async( } } + [Fact] + public async Task RestoreCommand_VersionConflict_CentralTransitive_ShowsCorrectErrorMessage() + { + // Arrange + using var pathContext = new SimpleTestPathContext(); + var logger = new TestLogger(); + var projectName = "TestProject"; + var sources = new List { new PackageSource(pathContext.PackageSource) }; + + // Package x depends on z with exact version [1.0.0]. + // Package y depends on z >= 2.0.0 (compatible with central pin). + // The central pin for z is [2.0.0,), so z resolves to 2.0.0. + // Since 2.0.0 does not satisfy [1.0.0], this creates a version conflict (NU1107) + // where the selected node is the CentralTransitive pin for z. + var packageX = new SimpleTestPackageContext("x", "1.0.0") + { + Nuspec = XDocument.Parse($@" + + + x + 1.0.0 + + <dependencies> + <group> + <dependency id=""z"" version=""[1.0.0]"" /> + </group> + </dependencies> + </metadata> + </package>") + }; + + var packageY = new SimpleTestPackageContext("y", "1.0.0"); + var packageZ1 = new SimpleTestPackageContext("z", "1.0.0"); + var packageZ2 = new SimpleTestPackageContext("z", "2.0.0"); + + packageY.Dependencies.Add(packageZ2); + + await SimpleTestPackageUtility.CreateFolderFeedV3Async( + pathContext.PackageSource, + PackageSaveMode.Defaultv3, + packageX, + packageY, + packageZ1, + packageZ2); + + var project1Json = @" + { + ""restore"": { + ""centralPackageVersionsManagementEnabled"": true, + ""CentralPackageTransitivePinningEnabled"": true + }, + ""frameworks"": { + ""net472"": { + ""dependencies"": { + ""x"": { + ""version"": ""[1.0.0,)"", + ""target"": ""Package"", + ""versionCentrallyManaged"": true + }, + ""y"": { + ""version"": ""[1.0.0,)"", + ""target"": ""Package"", + ""versionCentrallyManaged"": true + } + }, + ""centralPackageVersions"": { + ""x"": ""[1.0.0,)"", + ""y"": ""[1.0.0,)"", + ""z"": ""[2.0.0,)"" + } + } + } + }"; + + var spec = ProjectTestHelpers.GetPackageSpecWithProjectNameAndSpec(projectName, pathContext.SolutionRoot, project1Json); + var request = new TestRestoreRequest(spec, sources, pathContext.UserPackagesFolder, logger); + var command = new RestoreCommand(request); + + // Act + var result = await command.ExecuteAsync(); + + // Assert + Assert.False(result.Success); + + var errorMessages = logger.LogMessages.Where(m => m.Level == LogLevel.Error && m.Code == NuGetLogCode.NU1107).ToList(); + Assert.NotEmpty(errorMessages); + + var errorMessage = errorMessages.First().Message; + Assert.Contains("transitively pinned centrally managed package", errorMessage); + Assert.Contains("Update the centrally managed package version to a higher version", errorMessage); + } + [Theory] [InlineData(true)] [InlineData(false)] From d3c65c0484aeb8ad827705d5c4793151d5b2ce50 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 26 Mar 2026 22:17:03 +0000 Subject: [PATCH 3/6] Update PR description to follow PR template Agent-Logs-Url: https://github.com/NuGet/NuGet.Client/sessions/df082b6e-9a66-4079-9c51-24f4b07d696c Co-authored-by: nkolev92 <2878341+nkolev92@users.noreply.github.com> --- .../RestoreCommandTests/RestoreCommandTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs b/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs index c4818b11936..13527583041 100644 --- a/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs +++ b/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs @@ -3747,3 +3747,4 @@ private Task<GraphNode<RemoteResolveResult>> DoWalkAsync(RemoteDependencyWalker } } } + From 9e36fa027ab8c2a741c61f90d194cd4f613a1939 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev <nikolce1kolev@gmail.com> Date: Thu, 26 Mar 2026 17:44:45 -0700 Subject: [PATCH 4/6] fix test --- .../RestoreCommandTests.cs | 48 +++++++------------ 1 file changed, 16 insertions(+), 32 deletions(-) diff --git a/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs b/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs index c4818b11936..f6ec66745af 100644 --- a/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs +++ b/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs @@ -13,7 +13,6 @@ using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; -using System.Xml.Linq; using FluentAssertions; using Microsoft.Internal.NuGet.Testing.SignedPackages; using Moq; @@ -2025,6 +2024,9 @@ await SimpleTestPackageUtility.CreateFolderFeedV3Async( } } + // P -> X -> Z [1.0.0] + // P -> Y -> Z >= 2.0.0 + // This creates a conflict. [Fact] public async Task RestoreCommand_VersionConflict_CentralTransitive_ShowsCorrectErrorMessage() { @@ -2034,41 +2036,24 @@ public async Task RestoreCommand_VersionConflict_CentralTransitive_ShowsCorrectE var projectName = "TestProject"; var sources = new List<PackageSource> { new PackageSource(pathContext.PackageSource) }; - // Package x depends on z with exact version [1.0.0]. - // Package y depends on z >= 2.0.0 (compatible with central pin). - // The central pin for z is [2.0.0,), so z resolves to 2.0.0. - // Since 2.0.0 does not satisfy [1.0.0], this creates a version conflict (NU1107) - // where the selected node is the CentralTransitive pin for z. - var packageX = new SimpleTestPackageContext("x", "1.0.0") - { - Nuspec = XDocument.Parse($@"<?xml version=""1.0"" encoding=""utf-8""?> - <package> - <metadata> - <id>x</id> - <version>1.0.0</version> - <title /> - <dependencies> - <group> - <dependency id=""z"" version=""[1.0.0]"" /> - </group> - </dependencies> - </metadata> - </package>") - }; + var packageX = new SimpleTestPackageContext("x", "1.0.0"); + packageX.Dependencies.Add(new SimpleTestPackageContext("z", "[1.0.0]")); var packageY = new SimpleTestPackageContext("y", "1.0.0"); var packageZ1 = new SimpleTestPackageContext("z", "1.0.0"); var packageZ2 = new SimpleTestPackageContext("z", "2.0.0"); + var packageZ3 = new SimpleTestPackageContext("z", "3.0.0"); packageY.Dependencies.Add(packageZ2); - await SimpleTestPackageUtility.CreateFolderFeedV3Async( + await SimpleTestPackageUtility.CreatePackagesWithoutDependenciesAsync( pathContext.PackageSource, - PackageSaveMode.Defaultv3, packageX, packageY, packageZ1, - packageZ2); + packageZ2, + packageZ3 + ); var project1Json = @" { @@ -2093,13 +2078,13 @@ await SimpleTestPackageUtility.CreateFolderFeedV3Async( ""centralPackageVersions"": { ""x"": ""[1.0.0,)"", ""y"": ""[1.0.0,)"", - ""z"": ""[2.0.0,)"" } } } }"; var spec = ProjectTestHelpers.GetPackageSpecWithProjectNameAndSpec(projectName, pathContext.SolutionRoot, project1Json); + spec.RestoreMetadata.UseLegacyDependencyResolver = true; var request = new TestRestoreRequest(spec, sources, pathContext.UserPackagesFolder, logger); var command = new RestoreCommand(request); @@ -2107,14 +2092,13 @@ await SimpleTestPackageUtility.CreateFolderFeedV3Async( var result = await command.ExecuteAsync(); // Assert - Assert.False(result.Success); + result.Success.Should().BeFalse(logger.ShowMessages()); - var errorMessages = logger.LogMessages.Where(m => m.Level == LogLevel.Error && m.Code == NuGetLogCode.NU1107).ToList(); - Assert.NotEmpty(errorMessages); + result.LockFile.LogMessages.Should().Contain(e => e.Code == NuGetLogCode.NU1107); - var errorMessage = errorMessages.First().Message; - Assert.Contains("transitively pinned centrally managed package", errorMessage); - Assert.Contains("Update the centrally managed package version to a higher version", errorMessage); + var errorMessage = result.LockFile.LogMessages[0].Message; + errorMessage.Should().Contain("transitively pinned centrally managed package"); + errorMessage.Should().Contain("Update the centrally managed package version to a higher version"); } [Theory] From f9f28a6ce334996c58a9f3ba4233a280e6c0841f Mon Sep 17 00:00:00 2001 From: Nikolche Kolev <nikolce1kolev@gmail.com> Date: Thu, 26 Mar 2026 18:05:42 -0700 Subject: [PATCH 5/6] cleanup --- .../RestoreCommand/RestoreCommand.cs | 10 ++++++---- .../NuGet.Commands/Strings.Designer.cs | 2 +- src/NuGet.Core/NuGet.Commands/Strings.resx | 2 +- .../NuGet.Commands/xlf/Strings.cs.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.de.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.es.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.fr.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.it.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.ja.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.ko.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.pl.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.pt-BR.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.ru.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.tr.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.zh-Hans.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.zh-Hant.xlf | 4 ++-- .../RestoreCommandTests/RestoreCommandTests.cs | 18 +++++++++--------- 17 files changed, 43 insertions(+), 41 deletions(-) diff --git a/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs b/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs index 133d5f85e02..b670d5a4417 100644 --- a/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs +++ b/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs @@ -1548,16 +1548,18 @@ private async Task<bool> ValidateConflictsAsync(IEnumerable<RestoreTargetGraph> { string message; - bool isCentralTransitive = versionConflict.Selected.Item?.IsCentralTransitive == true || - versionConflict.Conflicting.Item?.IsCentralTransitive == true; + bool isPinningEnabled = _request.Project.RestoreMetadata?.CentralPackageVersionsEnabled == true && _request.Project.RestoreMetadata?.CentralPackageTransitivePinningEnabled == true; // If pinning is enabled for this project, the error message can provide details about adding a PackageVersion. + // If pinning is enabled, then this package is not centrally managed yet. + // If the conflicting package was centrally managed, it'd be pinned and a pinned package cannot cause downgrades or version conflicts. + // A pinned package would basically raise NU1109 if downgraded or no error otherwise. - if (isCentralTransitive) + if (isPinningEnabled) { message = string.Format( CultureInfo.CurrentCulture, Strings.Log_VersionConflictForCentralTransitive, versionConflict.Selected.Key.Name, - _request.Project.Name) + versionConflict.Selected.GetIdAndVersionOrRange()) + $" {Environment.NewLine} {versionConflict.Selected.GetPathWithLastRange()} {Environment.NewLine} {versionConflict.Conflicting.GetPathWithLastRange()}."; } else diff --git a/src/NuGet.Core/NuGet.Commands/Strings.Designer.cs b/src/NuGet.Core/NuGet.Commands/Strings.Designer.cs index 023a2aed396..3f06f17a551 100644 --- a/src/NuGet.Core/NuGet.Commands/Strings.Designer.cs +++ b/src/NuGet.Core/NuGet.Commands/Strings.Designer.cs @@ -1764,7 +1764,7 @@ internal static string Log_VersionConflict { } /// <summary> - /// Looks up a localized string similar to Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.. + /// Looks up a localized string similar to Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.. /// </summary> internal static string Log_VersionConflictForCentralTransitive { get { diff --git a/src/NuGet.Core/NuGet.Commands/Strings.resx b/src/NuGet.Core/NuGet.Commands/Strings.resx index 125f2070417..c168e2fbfd1 100644 --- a/src/NuGet.Core/NuGet.Commands/Strings.resx +++ b/src/NuGet.Core/NuGet.Commands/Strings.resx @@ -180,7 +180,7 @@ <value>Version conflict detected for {0}. Install/reference {1} directly to project {2} to resolve this issue.</value> </data> <data name="Log_VersionConflictForCentralTransitive" xml:space="preserve"> - <value>Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</value> + <value>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</value> </data> <data name="Error_UnknownBuildAction" xml:space="preserve"> <value>Package '{0}' specifies an invalid build action '{1}' for file '{2}'.</value> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.cs.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.cs.xlf index 876b8bb3e04..b49dfc932ff 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.cs.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.cs.xlf @@ -996,8 +996,8 @@ Upgradujte svou sadu .NET SDK nebo odeberte RestoreUseLegacyDependencyResolver, <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</source> - <target state="new">Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.de.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.de.xlf index be1b7afbf27..09e0b41cbc4 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.de.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.de.xlf @@ -996,8 +996,8 @@ Aktualisieren Sie Ihr .NET SDK oder entfernen Sie RestoreUseLegacyDependencyReso <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</source> - <target state="new">Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.es.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.es.xlf index dd24357eb01..20d7eec445d 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.es.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.es.xlf @@ -996,8 +996,8 @@ Actualice el SDK de .NET o quite RestoreUseLegacyDependencyResolver para usar es <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</source> - <target state="new">Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.fr.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.fr.xlf index c188b72bce7..5af148703fb 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.fr.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.fr.xlf @@ -996,8 +996,8 @@ Mettez à niveau votre Kit de développement logiciel (SDK) .NET ou supprimez Re <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</source> - <target state="new">Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.it.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.it.xlf index 68f30f10720..67414011369 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.it.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.it.xlf @@ -996,8 +996,8 @@ Per usare questa funzionalità, aggiornare .NET SDK o rimuovere RestoreUseLegacy <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</source> - <target state="new">Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ja.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ja.xlf index 89180e07791..da0832b6d70 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ja.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ja.xlf @@ -996,8 +996,8 @@ Upgrade your .NET SDK or remove RestoreUseLegacyDependencyResolver to use this f <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</source> - <target state="new">Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ko.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ko.xlf index 1b549cffb73..b8c7cffb2a2 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ko.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ko.xlf @@ -996,8 +996,8 @@ Upgrade your .NET SDK or remove RestoreUseLegacyDependencyResolver to use this f <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</source> - <target state="new">Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.pl.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.pl.xlf index 5a430d54237..89691d935dc 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.pl.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.pl.xlf @@ -996,8 +996,8 @@ Uaktualnij zestaw .NET SDK lub usuń RestoreUseLegacyDependencyResolver, aby kor <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</source> - <target state="new">Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.pt-BR.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.pt-BR.xlf index f24d602d80f..65697b780c4 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.pt-BR.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.pt-BR.xlf @@ -996,8 +996,8 @@ Atualize o SDK do .NET ou remova RestoreUseLegacyDependencyResolver para usar es <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</source> - <target state="new">Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ru.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ru.xlf index 76f84d593fa..359825c3b5a 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ru.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ru.xlf @@ -996,8 +996,8 @@ Upgrade your .NET SDK or remove RestoreUseLegacyDependencyResolver to use this f <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</source> - <target state="new">Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.tr.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.tr.xlf index 41c5f5012bb..a5c260290cf 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.tr.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.tr.xlf @@ -996,8 +996,8 @@ Bu özelliği kullanmak için .NET SDK'nizi yükseltin veya RestoreUseLegacyDepe <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</source> - <target state="new">Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hans.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hans.xlf index 6531d1576c9..4fb31f25f73 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hans.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hans.xlf @@ -996,8 +996,8 @@ Upgrade your .NET SDK or remove RestoreUseLegacyDependencyResolver to use this f <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</source> - <target state="new">Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hant.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hant.xlf index f215e8d7944..777778d659b 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hant.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hant.xlf @@ -996,8 +996,8 @@ Upgrade your .NET SDK or remove RestoreUseLegacyDependencyResolver to use this f <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</source> - <target state="new">Version conflict detected for {0} transitively pinned centrally managed package in project {1}. Update the centrally managed package version to a higher version.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs b/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs index 1b4cc8f3757..9d2e501e2ae 100644 --- a/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs +++ b/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs @@ -2040,22 +2040,19 @@ public async Task RestoreCommand_VersionConflict_CentralTransitive_ShowsCorrectE packageX.Dependencies.Add(new SimpleTestPackageContext("z", "[1.0.0]")); var packageY = new SimpleTestPackageContext("y", "1.0.0"); - var packageZ1 = new SimpleTestPackageContext("z", "1.0.0"); var packageZ2 = new SimpleTestPackageContext("z", "2.0.0"); - var packageZ3 = new SimpleTestPackageContext("z", "3.0.0"); - packageY.Dependencies.Add(packageZ2); await SimpleTestPackageUtility.CreatePackagesWithoutDependenciesAsync( pathContext.PackageSource, packageX, packageY, - packageZ1, + new SimpleTestPackageContext("z", "1.0.0"), packageZ2, - packageZ3 + new SimpleTestPackageContext("z", "3.0.0") ); - var project1Json = @" + var packageSpec = @" { ""restore"": { ""centralPackageVersionsManagementEnabled"": true, @@ -2083,7 +2080,7 @@ await SimpleTestPackageUtility.CreatePackagesWithoutDependenciesAsync( } }"; - var spec = ProjectTestHelpers.GetPackageSpecWithProjectNameAndSpec(projectName, pathContext.SolutionRoot, project1Json); + var spec = ProjectTestHelpers.GetPackageSpecWithProjectNameAndSpec(projectName, pathContext.SolutionRoot, packageSpec); spec.RestoreMetadata.UseLegacyDependencyResolver = true; var request = new TestRestoreRequest(spec, sources, pathContext.UserPackagesFolder, logger); var command = new RestoreCommand(request); @@ -2097,8 +2094,11 @@ await SimpleTestPackageUtility.CreatePackagesWithoutDependenciesAsync( result.LockFile.LogMessages.Should().Contain(e => e.Code == NuGetLogCode.NU1107); var errorMessage = result.LockFile.LogMessages[0].Message; - errorMessage.Should().Contain("transitively pinned centrally managed package"); - errorMessage.Should().Contain("Update the centrally managed package version to a higher version"); + + var expectedMessage = string.Format( + Strings.Log_VersionConflictForCentralTransitive, + "z", "z 2.0.0"); + errorMessage.Should().StartWith(expectedMessage); } [Theory] From d97b65ac0b023099c8abba9b794f97a3dbf799b9 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev <nikolce1kolev@gmail.com> Date: Fri, 27 Mar 2026 12:07:04 -0700 Subject: [PATCH 6/6] feedback --- .../RestoreCommand/RestoreCommand.cs | 18 +++++++++--------- .../NuGet.Commands/Strings.Designer.cs | 2 +- src/NuGet.Core/NuGet.Commands/Strings.resx | 2 +- .../NuGet.Commands/xlf/Strings.cs.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.de.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.es.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.fr.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.it.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.ja.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.ko.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.pl.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.pt-BR.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.ru.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.tr.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.zh-Hans.xlf | 4 ++-- .../NuGet.Commands/xlf/Strings.zh-Hant.xlf | 4 ++-- 16 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs b/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs index b670d5a4417..8630a9117f7 100644 --- a/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs +++ b/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs @@ -1556,20 +1556,20 @@ private async Task<bool> ValidateConflictsAsync(IEnumerable<RestoreTargetGraph> if (isPinningEnabled) { message = string.Format( - CultureInfo.CurrentCulture, - Strings.Log_VersionConflictForCentralTransitive, - versionConflict.Selected.Key.Name, - versionConflict.Selected.GetIdAndVersionOrRange()) + CultureInfo.CurrentCulture, + Strings.Log_VersionConflictForCentralTransitive, + versionConflict.Selected.Key.Name, + versionConflict.Selected.GetIdAndVersionOrRange()) + $" {Environment.NewLine} {versionConflict.Selected.GetPathWithLastRange()} {Environment.NewLine} {versionConflict.Conflicting.GetPathWithLastRange()}."; } else { message = string.Format( - CultureInfo.CurrentCulture, - Strings.Log_VersionConflict, - versionConflict.Selected.Key.Name, - versionConflict.Selected.GetIdAndVersionOrRange(), - _request.Project.Name) + CultureInfo.CurrentCulture, + Strings.Log_VersionConflict, + versionConflict.Selected.Key.Name, + versionConflict.Selected.GetIdAndVersionOrRange(), + _request.Project.Name) + $" {Environment.NewLine} {versionConflict.Selected.GetPathWithLastRange()} {Environment.NewLine} {versionConflict.Conflicting.GetPathWithLastRange()}."; } diff --git a/src/NuGet.Core/NuGet.Commands/Strings.Designer.cs b/src/NuGet.Core/NuGet.Commands/Strings.Designer.cs index 3f06f17a551..b3079ef935f 100644 --- a/src/NuGet.Core/NuGet.Commands/Strings.Designer.cs +++ b/src/NuGet.Core/NuGet.Commands/Strings.Designer.cs @@ -1764,7 +1764,7 @@ internal static string Log_VersionConflict { } /// <summary> - /// Looks up a localized string similar to Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.. + /// Looks up a localized string similar to Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.. /// </summary> internal static string Log_VersionConflictForCentralTransitive { get { diff --git a/src/NuGet.Core/NuGet.Commands/Strings.resx b/src/NuGet.Core/NuGet.Commands/Strings.resx index c168e2fbfd1..33e5d574943 100644 --- a/src/NuGet.Core/NuGet.Commands/Strings.resx +++ b/src/NuGet.Core/NuGet.Commands/Strings.resx @@ -180,7 +180,7 @@ <value>Version conflict detected for {0}. Install/reference {1} directly to project {2} to resolve this issue.</value> </data> <data name="Log_VersionConflictForCentralTransitive" xml:space="preserve"> - <value>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</value> + <value>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</value> </data> <data name="Error_UnknownBuildAction" xml:space="preserve"> <value>Package '{0}' specifies an invalid build action '{1}' for file '{2}'.</value> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.cs.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.cs.xlf index b49dfc932ff..f6e49a20542 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.cs.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.cs.xlf @@ -996,8 +996,8 @@ Upgradujte svou sadu .NET SDK nebo odeberte RestoreUseLegacyDependencyResolver, <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> - <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.de.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.de.xlf index 09e0b41cbc4..4c973d1d3e7 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.de.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.de.xlf @@ -996,8 +996,8 @@ Aktualisieren Sie Ihr .NET SDK oder entfernen Sie RestoreUseLegacyDependencyReso <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> - <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.es.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.es.xlf index 20d7eec445d..5e78e218ffe 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.es.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.es.xlf @@ -996,8 +996,8 @@ Actualice el SDK de .NET o quite RestoreUseLegacyDependencyResolver para usar es <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> - <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.fr.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.fr.xlf index 5af148703fb..ca4eea0c2bc 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.fr.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.fr.xlf @@ -996,8 +996,8 @@ Mettez à niveau votre Kit de développement logiciel (SDK) .NET ou supprimez Re <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> - <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.it.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.it.xlf index 67414011369..d9ac30969db 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.it.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.it.xlf @@ -996,8 +996,8 @@ Per usare questa funzionalità, aggiornare .NET SDK o rimuovere RestoreUseLegacy <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> - <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ja.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ja.xlf index da0832b6d70..ee7ed5ed793 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ja.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ja.xlf @@ -996,8 +996,8 @@ Upgrade your .NET SDK or remove RestoreUseLegacyDependencyResolver to use this f <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> - <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ko.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ko.xlf index b8c7cffb2a2..c376f820507 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ko.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ko.xlf @@ -996,8 +996,8 @@ Upgrade your .NET SDK or remove RestoreUseLegacyDependencyResolver to use this f <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> - <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.pl.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.pl.xlf index 89691d935dc..c68e8dafc87 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.pl.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.pl.xlf @@ -996,8 +996,8 @@ Uaktualnij zestaw .NET SDK lub usuń RestoreUseLegacyDependencyResolver, aby kor <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> - <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.pt-BR.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.pt-BR.xlf index 65697b780c4..984c9b9cf24 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.pt-BR.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.pt-BR.xlf @@ -996,8 +996,8 @@ Atualize o SDK do .NET ou remova RestoreUseLegacyDependencyResolver para usar es <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> - <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ru.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ru.xlf index 359825c3b5a..548628058e5 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.ru.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.ru.xlf @@ -996,8 +996,8 @@ Upgrade your .NET SDK or remove RestoreUseLegacyDependencyResolver to use this f <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> - <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.tr.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.tr.xlf index a5c260290cf..eaade8586f1 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.tr.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.tr.xlf @@ -996,8 +996,8 @@ Bu özelliği kullanmak için .NET SDK'nizi yükseltin veya RestoreUseLegacyDepe <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> - <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hans.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hans.xlf index 4fb31f25f73..455043afbff 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hans.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hans.xlf @@ -996,8 +996,8 @@ Upgrade your .NET SDK or remove RestoreUseLegacyDependencyResolver to use this f <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> - <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile"> diff --git a/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hant.xlf b/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hant.xlf index 777778d659b..04dc1eba8fd 100644 --- a/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hant.xlf +++ b/src/NuGet.Core/NuGet.Commands/xlf/Strings.zh-Hant.xlf @@ -996,8 +996,8 @@ Upgrade your .NET SDK or remove RestoreUseLegacyDependencyResolver to use this f <note /> </trans-unit> <trans-unit id="Log_VersionConflictForCentralTransitive"> - <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</source> - <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion {1} to resolve this issue.</target> + <source>Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source> + <target state="new">Version conflict detected for {0}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</target> <note /> </trans-unit> <trans-unit id="Log_WritingAssetsFile">