private IEnumerable <ResolvedPackageReference> GetResolvedPackageReferences(
            IEnumerable <FileInfo> resolutions,
            IEnumerable <FileInfo> files,
            IEnumerable <DirectoryInfo> packageRoots)
        {
            foreach (var root in packageRoots)
            {
                if (TryGetPackageAndVersionFromPackageRoot(root, out var packageReference))
                {
                    var assemblyPaths = GetAssemblyPathsForPackage(root, resolutions);
                    var probingPaths  = new List <DirectoryInfo>();
                    probingPaths.Add(root);

                    // PackageReference thingy
                    var resolvedPackageReference =
                        new ResolvedPackageReference(
                            packageReference.PackageName,
                            packageReference.PackageVersion,
                            new List <FileInfo>(assemblyPaths).AsReadOnly(),
                            root,
                            new List <DirectoryInfo>(probingPaths).AsReadOnly());
                    yield return(resolvedPackageReference);
                }
            }
        }
        public void Handle(ResolvedPackageReference reference)
        {
            var assemblyFile = reference.AssemblyPaths.First();

            foreach (var dir in _probingPaths)
            {
                Logger.Log.Info("Probing: {dir}", dir);

                if (assemblyFile.FullName.StartsWith(dir.FullName))
                {
                    _resolvers[assemblyFile.FullName] = reference;
                }
            }
        }
        public void Handle(ResolvedPackageReference reference)
        {
            var assemblyFile = reference.AssemblyPaths.First();

            using var op = Log.OnEnterAndExit();

            if (_resolvedReferences.TryGetValue(assemblyFile.FullName, out var previous))
            {
                op.Info("Previously resolved {reference} at location {PackageRoot}", assemblyFile.FullName, previous.PackageRoot);
                return;
            }

            foreach (var dir in _probingDirectories)
            {
                if (IsSameDirectoryOrChildOf(
                        assemblyFile.FullName,
                        dir.FullName))
                {
                    op.Info("Resolved: {reference}", assemblyFile.FullName);
                    _resolvedReferences[assemblyFile.FullName] = reference;
                    return;
                }
            }
        }