Skip to content

Commit f2f28de

Browse files
committed
address feedback
1 parent 9c38a5d commit f2f28de

10 files changed

Lines changed: 22 additions & 24 deletions

File tree

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ public LockFile CreateLockFile(LockFile previousLockFile,
162162
.OrderBy(graph => graph.Framework.ToString(), StringComparer.Ordinal)
163163
.ThenBy(graph => graph.RuntimeIdentifier, StringComparer.Ordinal))
164164
{
165-
var target = lockFile.Version >= 4 ?
165+
var target = lockFile.Version >= LockFileFormat.AliasedVersion ?
166166
new LockFileTarget
167167
{
168168
TargetFramework = targetGraph.Framework,
@@ -399,7 +399,7 @@ private static string GetFallbackFrameworkString(NuGetFramework framework)
399399

400400
private static void AddProjectFileDependenciesForPackageReference(PackageSpec project, LockFile lockFile, List<RestoreTargetGraph> targetGraphs)
401401
{
402-
bool isV4LockFile = lockFile.Version >= 4;
402+
bool isAliasedLockFile = lockFile.Version >= LockFileFormat.AliasedVersion;
403403

404404
foreach (var frameworkInfo in project.TargetFrameworks
405405
.OrderBy(framework => framework.TargetAlias,
@@ -440,7 +440,7 @@ private static void AddProjectFileDependenciesForPackageReference(PackageSpec pr
440440
}
441441

442442
// Add entry
443-
string framework = (isV4LockFile && !string.IsNullOrEmpty(frameworkInfo.TargetAlias)) ? frameworkInfo.TargetAlias : frameworkInfo.FrameworkName.ToString();
443+
string framework = (isAliasedLockFile && !string.IsNullOrEmpty(frameworkInfo.TargetAlias)) ? frameworkInfo.TargetAlias : frameworkInfo.FrameworkName.ToString();
444444
var dependencyGroup = new ProjectFileDependencyGroup(
445445
framework,
446446
uniqueDependencies.Select(x => x.ToLockFileDependencyGroupString())

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,8 @@ public void ApplyStandardProperties(RestoreRequest request)
205205

206206
request.RequestedRuntimes.UnionWith(Runtimes);
207207
request.FallbackRuntimes.UnionWith(FallbackRuntimes);
208-
// Use v3 for classic csproj.
209-
request.LockFileVersion = request.Project.RestoreMetadata?.UsingMicrosoftNETSdk == true ? LockFileFormat.Version : 3;
208+
// Use legacy version for classic csproj.
209+
request.LockFileVersion = request.Project.RestoreMetadata?.UsingMicrosoftNETSdk == true ? LockFileFormat.Version : LockFileFormat.LegacyVersion;
210210

211211
// Run runtime asset checks for project.json, and for other types if enabled.
212212
if (ValidateRuntimeAssets == null)

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,12 +153,12 @@ public RestoreCommand(RestoreRequest request)
153153
_request = request ?? throw new ArgumentNullException(nameof(request));
154154
_lockFileBuilderCache = request.LockFileBuilderCache;
155155

156-
// Validate the lock file version requested
157-
if (_request.LockFileVersion < 3 || _request.LockFileVersion > LockFileFormat.Version)
156+
// Validate the assets file version requested
157+
if (_request.LockFileVersion < LockFileFormat.LegacyVersion || _request.LockFileVersion > LockFileFormat.Version)
158158
{
159159
throw new ArgumentOutOfRangeException(
160160
paramName: nameof(request),
161-
message: $"Lock file version {_request.LockFileVersion} is not supported.");
161+
message: $"Assets file version {_request.LockFileVersion} is not supported.");
162162
}
163163

164164
var collectorLoggerHideWarningsAndErrors = request.Project.RestoreSettings.HideWarningsAndErrors

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,8 +341,8 @@ public Task<LibraryDependencyInfo> GetDependenciesAsync(
341341

342342
cancellationToken.ThrowIfCancellationRequested();
343343

344-
// Pass an empty alias since aliases are not supported for packages.
345-
LibraryRangeCacheKey key = new(libraryIdentity, targetFramework, alias: string.Empty);
344+
// Aliases are not supported for packages.
345+
LibraryRangeCacheKey key = new(libraryIdentity, targetFramework, alias: null);
346346

347347
return _dependencyInfoCache.GetOrAddAsync(
348348
key,

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,11 +216,13 @@ private static void ValidateProjectSpecPackageReference(PackageSpec spec, IEnume
216216
throw RestoreSpecException.Create(message, files);
217217
}
218218

219+
List<string> aliases = (spec.TargetFrameworks.Count > 1 || spec.RestoreMetadata.TargetFrameworks.Count > 1) ?
220+
spec.TargetFrameworks.Select(e => e.TargetAlias).ToList()
221+
: [];
222+
219223
//OriginalTargetFrameworks must match the aliases.
220224
if (spec.RestoreMetadata.TargetFrameworks.Count > 1)
221225
{
222-
var aliases = spec.TargetFrameworks.Select(e => e.TargetAlias).ToList();
223-
224226
if (!EqualityUtility.OrderedEquals(aliases, spec.RestoreMetadata.OriginalTargetFrameworks, e => e, StringComparer.OrdinalIgnoreCase, StringComparer.OrdinalIgnoreCase))
225227
{
226228
var message = string.Format(
@@ -235,7 +237,6 @@ private static void ValidateProjectSpecPackageReference(PackageSpec spec, IEnume
235237

236238
if (spec.TargetFrameworks.Count > 1)
237239
{
238-
var aliases = spec.TargetFrameworks.Select(e => e.TargetAlias).ToList();
239240
var uniqueAliases = new HashSet<string>(aliases, StringComparer.OrdinalIgnoreCase);
240241

241242
if (uniqueAliases.Count != aliases.Count)

src/NuGet.Core/NuGet.DependencyResolver.Core/LibraryRangeCacheKey.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace NuGet.DependencyResolver
1717
public LibraryRangeCacheKey(LibraryRange range, NuGetFramework framework, string? alias)
1818
{
1919
Framework = framework;
20-
Alias = alias;
20+
Alias = alias ?? string.Empty;
2121
LibraryRange = range;
2222
}
2323

@@ -52,7 +52,7 @@ public bool Equals(LibraryRangeCacheKey other)
5252
{
5353
return LibraryRange.Equals(other.LibraryRange)
5454
&& Framework.Equals(other.Framework)
55-
&& StringComparer.Ordinal.Equals(Alias, other.Alias);
55+
&& StringComparer.OrdinalIgnoreCase.Equals(Alias, other.Alias);
5656
}
5757

5858
public override string ToString()

src/NuGet.Core/NuGet.DependencyResolver.Core/Remote/RemoteDependencyWalker.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ private async ValueTask<GraphNode<RemoteResolveResult>> CreateGraphNodeAsync(
9393
libraryRange,
9494
framework,
9595
runtimeName,
96-
string.Empty,
96+
targetAlias: null,
9797
_context,
9898
CancellationToken.None);
9999

@@ -171,7 +171,7 @@ private async ValueTask<GraphNode<RemoteResolveResult>> CreateGraphNodeAsync(
171171
dependencyLibraryRange,
172172
framework,
173173
runtimeName,
174-
string.Empty,
174+
targetAlias: null,
175175
_context,
176176
CancellationToken.None);
177177

src/NuGet.Core/NuGet.ProjectModel/LockFile/LockFileFormat.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ namespace NuGet.ProjectModel
1818
public class LockFileFormat
1919
{
2020
public static readonly int Version = 4;
21+
public static readonly int AliasedVersion = 4;
22+
public static readonly int LegacyVersion = 3;
2123
// If this is ever renamed, you should also rename NoOpRestoreUtilities.NoOpCacheFileName to keep them in sync.
2224
public static readonly string AssetsFileName = "project.assets.json";
2325

src/NuGet.Core/NuGet.ProjectModel/LockFile/Utf8JsonStreamLockFileTargetConverterV4.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,6 @@ public LockFileTarget Read(ref Utf8JsonStreamReader reader)
2727
var propertyName = reader.GetString();
2828
var (targetFramework, runTimeFramework) = propertyName.SplitInTwo(LockFile.DirectorySeparatorChar);
2929

30-
// How do we differentiate between targetAlias and targetFramework here?
31-
// Legacy is really supposed to be 3.
32-
33-
// PackageSpec probably doesn't need to be versioned to be honest.
34-
// But the lock file does.
35-
// This gets fucking shit.
36-
3730
var lockFileTarget = new LockFileTarget
3831
{
3932
TargetAlias = targetFramework,
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
#nullable enable
22
static NuGet.ProjectModel.PackageSpecExtensions.GetNearestTargetFramework(this NuGet.ProjectModel.PackageSpec! project, NuGet.Frameworks.NuGetFramework! targetFramework, string! targetAlias) -> NuGet.ProjectModel.TargetFrameworkInformation!
3+
static readonly NuGet.ProjectModel.LockFileFormat.AliasedVersion -> int
4+
static readonly NuGet.ProjectModel.LockFileFormat.LegacyVersion -> int
35
~NuGet.ProjectModel.PackageSpecReferenceDependencyProvider.GetLibrary(NuGet.LibraryModel.LibraryRange libraryRange, NuGet.Frameworks.NuGetFramework targetFramework, string alias) -> NuGet.LibraryModel.Library

0 commit comments

Comments
 (0)