Skip to content

Commit 7b89d4a

Browse files
Copilotnkolev92
andcommitted
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 <[email protected]> Agent-Logs-Url: https://github.com/NuGet/NuGet.Client/sessions/42973248-ebc6-4845-bdaa-c3f070e5ac66
1 parent 8e1ddca commit 7b89d4a

17 files changed

Lines changed: 194 additions & 7 deletions

File tree

src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1546,13 +1546,30 @@ private async Task<bool> ValidateConflictsAsync(IEnumerable<RestoreTargetGraph>
15461546
{
15471547
foreach (var versionConflict in graph.AnalyzeResult.VersionConflicts)
15481548
{
1549-
var message = string.Format(
1550-
CultureInfo.CurrentCulture,
1551-
Strings.Log_VersionConflict,
1552-
versionConflict.Selected.Key.Name,
1553-
versionConflict.Selected.GetIdAndVersionOrRange(),
1554-
_request.Project.Name)
1555-
+ $" {Environment.NewLine} {versionConflict.Selected.GetPathWithLastRange()} {Environment.NewLine} {versionConflict.Conflicting.GetPathWithLastRange()}.";
1549+
string message;
1550+
1551+
bool isCentralTransitive = versionConflict.Selected.Item?.IsCentralTransitive == true ||
1552+
versionConflict.Conflicting.Item?.IsCentralTransitive == true;
1553+
1554+
if (isCentralTransitive)
1555+
{
1556+
message = string.Format(
1557+
CultureInfo.CurrentCulture,
1558+
Strings.Log_VersionConflictForCentralTransitive,
1559+
versionConflict.Selected.Key.Name,
1560+
_request.Project.Name)
1561+
+ $" {Environment.NewLine} {versionConflict.Selected.GetPathWithLastRange()} {Environment.NewLine} {versionConflict.Conflicting.GetPathWithLastRange()}.";
1562+
}
1563+
else
1564+
{
1565+
message = string.Format(
1566+
CultureInfo.CurrentCulture,
1567+
Strings.Log_VersionConflict,
1568+
versionConflict.Selected.Key.Name,
1569+
versionConflict.Selected.GetIdAndVersionOrRange(),
1570+
_request.Project.Name)
1571+
+ $" {Environment.NewLine} {versionConflict.Selected.GetPathWithLastRange()} {Environment.NewLine} {versionConflict.Conflicting.GetPathWithLastRange()}.";
1572+
}
15561573

15571574
await logger.LogAsync(RestoreLogMessage.CreateError(NuGetLogCode.NU1107, message, versionConflict.Selected.Key.Name, graph.TargetGraphName));
15581575
return false;

src/NuGet.Core/NuGet.Commands/Strings.Designer.cs

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/NuGet.Core/NuGet.Commands/Strings.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,9 @@
179179
<data name="Log_VersionConflict" xml:space="preserve">
180180
<value>Version conflict detected for {0}. Install/reference {1} directly to project {2} to resolve this issue.</value>
181181
</data>
182+
<data name="Log_VersionConflictForCentralTransitive" xml:space="preserve">
183+
<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>
184+
</data>
182185
<data name="Error_UnknownBuildAction" xml:space="preserve">
183186
<value>Package '{0}' specifies an invalid build action '{1}' for file '{2}'.</value>
184187
</data>

src/NuGet.Core/NuGet.Commands/xlf/Strings.cs.xlf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -995,6 +995,11 @@ Upgradujte svou sadu .NET SDK nebo odeberte RestoreUseLegacyDependencyResolver,
995995
<target state="translated">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}.</target>
996996
<note />
997997
</trans-unit>
998+
<trans-unit id="Log_VersionConflictForCentralTransitive">
999+
<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>
1000+
<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>
1001+
<note />
1002+
</trans-unit>
9981003
<trans-unit id="Log_WritingAssetsFile">
9991004
<source>Writing assets file to disk. Path: {0}</source>
10001005
<target state="translated">Soubor prostředků se zapisuje na disk. Cesta: {0}</target>

src/NuGet.Core/NuGet.Commands/xlf/Strings.de.xlf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -995,6 +995,11 @@ Aktualisieren Sie Ihr .NET SDK oder entfernen Sie RestoreUseLegacyDependencyReso
995995
<target state="translated">Versionskonflikt entdeckt für "{0}". Installieren bzw. referenzieren Sie "{1}" direkt in Projekt "{2}", um dieses Problem zu beheben.</target>
996996
<note />
997997
</trans-unit>
998+
<trans-unit id="Log_VersionConflictForCentralTransitive">
999+
<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>
1000+
<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>
1001+
<note />
1002+
</trans-unit>
9981003
<trans-unit id="Log_WritingAssetsFile">
9991004
<source>Writing assets file to disk. Path: {0}</source>
10001005
<target state="translated">Die Assetdatei wird auf den Datenträger geschrieben. Pfad: {0}</target>

src/NuGet.Core/NuGet.Commands/xlf/Strings.es.xlf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -995,6 +995,11 @@ Actualice el SDK de .NET o quite RestoreUseLegacyDependencyResolver para usar es
995995
<target state="translated">Se detectó un conflicto de versiones para {0}. Para resolver este problema, instale o haga referencia a {1} directamente en el proyecto {2}.</target>
996996
<note />
997997
</trans-unit>
998+
<trans-unit id="Log_VersionConflictForCentralTransitive">
999+
<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>
1000+
<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>
1001+
<note />
1002+
</trans-unit>
9981003
<trans-unit id="Log_WritingAssetsFile">
9991004
<source>Writing assets file to disk. Path: {0}</source>
10001005
<target state="translated">Escribiendo el archivo de recursos en el disco. Ruta de acceso: {0}</target>

src/NuGet.Core/NuGet.Commands/xlf/Strings.fr.xlf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -995,6 +995,11 @@ Mettez à niveau votre Kit de développement logiciel (SDK) .NET ou supprimez Re
995995
<target state="translated">Conflit de version détecté pour {0}. Installez/référencez {1} directement au projet {2} pour résoudre ce problème.</target>
996996
<note />
997997
</trans-unit>
998+
<trans-unit id="Log_VersionConflictForCentralTransitive">
999+
<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>
1000+
<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>
1001+
<note />
1002+
</trans-unit>
9981003
<trans-unit id="Log_WritingAssetsFile">
9991004
<source>Writing assets file to disk. Path: {0}</source>
10001005
<target state="translated">Écriture du fichier des composants sur le disque. Chemin : {0}</target>

src/NuGet.Core/NuGet.Commands/xlf/Strings.it.xlf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -995,6 +995,11 @@ Per usare questa funzionalità, aggiornare .NET SDK o rimuovere RestoreUseLegacy
995995
<target state="translated">È stato rilevato un conflitto di versioni per {0}. Per risolvere questo problema, installare {1} o farvi riferimento direttamente nel progetto {2}.</target>
996996
<note />
997997
</trans-unit>
998+
<trans-unit id="Log_VersionConflictForCentralTransitive">
999+
<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>
1000+
<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>
1001+
<note />
1002+
</trans-unit>
9981003
<trans-unit id="Log_WritingAssetsFile">
9991004
<source>Writing assets file to disk. Path: {0}</source>
10001005
<target state="translated">Scrittura del file di asset sul disco. Percorso: {0}</target>

src/NuGet.Core/NuGet.Commands/xlf/Strings.ja.xlf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -995,6 +995,11 @@ Upgrade your .NET SDK or remove RestoreUseLegacyDependencyResolver to use this f
995995
<target state="translated">{0} のバージョンの競合が検出されました。この問題を解決するには、{1} をプロジェクト {2} に直接インストールするか、参照します。</target>
996996
<note />
997997
</trans-unit>
998+
<trans-unit id="Log_VersionConflictForCentralTransitive">
999+
<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>
1000+
<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>
1001+
<note />
1002+
</trans-unit>
9981003
<trans-unit id="Log_WritingAssetsFile">
9991004
<source>Writing assets file to disk. Path: {0}</source>
10001005
<target state="translated">アセット ファイルをディスクに書き込んでいます。パス: {0}</target>

src/NuGet.Core/NuGet.Commands/xlf/Strings.ko.xlf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -995,6 +995,11 @@ Upgrade your .NET SDK or remove RestoreUseLegacyDependencyResolver to use this f
995995
<target state="translated">{0}에 대해 버전 충돌이 검색되었습니다. 이 문제를 해결하려면 {1}을(를) {2} 프로젝트에 직접 설치/참조하세요.</target>
996996
<note />
997997
</trans-unit>
998+
<trans-unit id="Log_VersionConflictForCentralTransitive">
999+
<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>
1000+
<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>
1001+
<note />
1002+
</trans-unit>
9981003
<trans-unit id="Log_WritingAssetsFile">
9991004
<source>Writing assets file to disk. Path: {0}</source>
10001005
<target state="translated">자산 파일을 디스크에 쓰는 중입니다. 경로: {0}</target>

0 commit comments

Comments
 (0)