Skip to content

Commit 36a9adb

Browse files
authored
Fix NU1107 message guidance for CPVM with transitive pinning (#7235)
1 parent bff510e commit 36a9adb

17 files changed

Lines changed: 181 additions & 7 deletions

File tree

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

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1551,13 +1551,32 @@ private async Task<bool> ValidateConflictsAsync(IEnumerable<RestoreTargetGraph>
15511551
{
15521552
foreach (var versionConflict in graph.AnalyzeResult.VersionConflicts)
15531553
{
1554-
var message = string.Format(
1555-
CultureInfo.CurrentCulture,
1556-
Strings.Log_VersionConflict,
1557-
versionConflict.Selected.Key.Name,
1558-
versionConflict.Selected.GetIdAndVersionOrRange(),
1559-
_request.Project.Name)
1560-
+ $" {Environment.NewLine} {versionConflict.Selected.GetPathWithLastRange()} {Environment.NewLine} {versionConflict.Conflicting.GetPathWithLastRange()}.";
1554+
string message;
1555+
1556+
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.
1557+
// If pinning is enabled, then this package is not centrally managed yet.
1558+
// If the conflicting package was centrally managed, it'd be pinned and a pinned package cannot cause downgrades or version conflicts.
1559+
// A pinned package would basically raise NU1109 if downgraded or no error otherwise.
1560+
1561+
if (isPinningEnabled)
1562+
{
1563+
message = string.Format(
1564+
CultureInfo.CurrentCulture,
1565+
Strings.Log_VersionConflictForCentralTransitive,
1566+
versionConflict.Selected.Key.Name,
1567+
versionConflict.Selected.GetIdAndVersionOrRange())
1568+
+ $" {Environment.NewLine} {versionConflict.Selected.GetPathWithLastRange()} {Environment.NewLine} {versionConflict.Conflicting.GetPathWithLastRange()}.";
1569+
}
1570+
else
1571+
{
1572+
message = string.Format(
1573+
CultureInfo.CurrentCulture,
1574+
Strings.Log_VersionConflict,
1575+
versionConflict.Selected.Key.Name,
1576+
versionConflict.Selected.GetIdAndVersionOrRange(),
1577+
_request.Project.Name)
1578+
+ $" {Environment.NewLine} {versionConflict.Selected.GetPathWithLastRange()} {Environment.NewLine} {versionConflict.Conflicting.GetPathWithLastRange()}.";
1579+
}
15611580

15621581
await logger.LogAsync(RestoreLogMessage.CreateError(NuGetLogCode.NU1107, message, versionConflict.Selected.Key.Name, graph.TargetGraphName));
15631582
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}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</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}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source>
1000+
<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>
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}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source>
1000+
<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>
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}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source>
1000+
<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>
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}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source>
1000+
<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>
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}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source>
1000+
<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>
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}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source>
1000+
<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>
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}. Central Package Management transitive pinning is enabled. Add a PackageVersion for {1} to resolve this issue.</source>
1000+
<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>
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)