/// <summary>
        /// Get an InteractivePackage for a restored NuGet package, populated with assembly references from the
        /// user's global package cache.
        /// </summary>
        /// <returns>An InteractivePackage with populated assembly references, or null if the LockFileLibrary
        /// is not of type "package".</returns>
        /// <param name="inputPackages">Input to RestorePackagesAsync, used to ensure the returned package
        /// has the same SupportedVersionRange as the requested package and to determine if this is a
        /// user-specified package or a dependency.</param>
        static InteractivePackage GetInteractivePackageFromLibrary(
            LockFileLibrary library,
            InteractiveNuGetProject project,
            IEnumerable <InteractivePackage> inputPackages)
        {
            if (library.Type != "package") // TODO: where does this string come from?
            {
                return(null);
            }

            var packageIdentity = new PackageIdentity(library.Name, library.Version);

            // All package files are listed within result.LockFile.Libraries[i].Files, but there are no
            // utilities to pick out framework-specific files. Using package readers probably slows
            // restore down but for now it's less code and more consistency.
            using (var packageReader = new PackageFolderReader(project.GetInstalledPath(packageIdentity)))
                return(GetInteractivePackageFromReader(packageReader, project, inputPackages));
        }
 public FilePath GetPackageInstallPath(InteractivePackage package)
 => project.GetInstalledPath(package.Identity);