protected override IPackage ResolveDependency(PackageDependency dependency)
{
Logger.Log(MessageLevel.Info, NuGetResources.Log_AttemptingToRetrievePackageFromSource, dependency);
// First try to get a local copy of the package
// Bug1638: Include prereleases when resolving locally installed dependencies.
IPackage package = Repository.ResolveDependency(dependency, ConstraintProvider, allowPrereleaseVersions: true, preferListedPackages: false);
// Next, query the source repo for the same dependency
IPackage sourcePackage = SourceRepository.ResolveDependency(dependency, ConstraintProvider, AllowPrereleaseVersions, preferListedPackages: true);
// We didn't find a copy in the local repository
if (package == null)
{
return sourcePackage;
}
// Only use the package from the source repository if it's a newer version (it'll only be newer in bug fixes)
if (sourcePackage != null && package.Version < sourcePackage.Version)
{
return sourcePackage;
}
return package;
}