| File: Extensions\LockFileExtensions.cs | Web Access |
| Project: src\sdk\src\Cli\Microsoft.DotNet.Cli.Utils\Microsoft.DotNet.Cli.Utils.csproj (Microsoft.DotNet.Cli.Utils) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using NuGet.Packaging; using NuGet.ProjectModel; namespace Microsoft.DotNet.Cli.Utils.Extensions; internal static class LockFileExtensions { public static string GetPackageDirectory(this LockFile lockFile, LockFileTargetLibrary library) { var packageFolders = lockFile.GetNormalizedPackageFolders(); var packageFoldersCount = packageFolders.Count(); var userPackageFolder = packageFoldersCount == 1 ? string.Empty : packageFolders.First(); var fallbackPackageFolders = packageFoldersCount > 1 ? packageFolders.Skip(1) : packageFolders; var packageDirectory = new FallbackPackagePathResolver(userPackageFolder, fallbackPackageFolders) .GetPackageDirectory(library.Name!, library.Version!)!; return packageDirectory; } public static IEnumerable<string> GetNormalizedPackageFolders(this LockFile lockFile) { return lockFile.PackageFolders.Select(p => PathUtility.EnsureNoTrailingDirectorySeparator(p.Path)); } }