X-Git-Url: http://git.sourceforge.jp/view?p=applistation%2FAppliStation.git;a=blobdiff_plain;f=na-get-lib%2FNaGet.Packages.Install%2FDependeciesResolver.cs;h=2399bf6ca86798d0cfaa412644c051a7feb45c36;hp=97ee7536097dffb945d2c1b9b283015b9293e0b1;hb=3a66cd13546cb82818e02539755082aa1a4f98ad;hpb=4923c4a97343ec325ad2abcd56ed6a35c0c4b56e diff --git a/na-get-lib/NaGet.Packages.Install/DependeciesResolver.cs b/na-get-lib/NaGet.Packages.Install/DependeciesResolver.cs index 97ee753..2399bf6 100644 --- a/na-get-lib/NaGet.Packages.Install/DependeciesResolver.cs +++ b/na-get-lib/NaGet.Packages.Install/DependeciesResolver.cs @@ -25,7 +25,7 @@ namespace NaGet.Packages.Install List depInsts; // 依存関係のインストールリスト - depInsts = CreateRequiresInstallations(insts, pkgListsMan); + depInsts = CreateRequiresInstallations(insts, pkgListsMan, null); dependencies = depInsts.ToArray(); // 依存解決をしたインストールリスト @@ -38,8 +38,9 @@ namespace NaGet.Packages.Install /// /// 対象インストールリスト /// 現在インストールされているか否かの判断に使われるパッケージリスト + /// 優先して使用をするパッケージのリスト。nullでもよい /// Requires依存による依存 - public static List CreateRequiresInstallations(Installation[] insts, PackageListsManager pkgListsMan) + public static List CreateRequiresInstallations(Installation[] insts, PackageListsManager pkgListsMan, ICollection preferencial) { List reqInsts = new List(); @@ -58,9 +59,19 @@ namespace NaGet.Packages.Install VersionComparetor vc = new VersionComparetor(); Package pkgToBeInstall = null; - foreach (Package pkg in pkgListsMan.availablePkgList.GetPackagesForEntry(entry)) { - if ((pkgToBeInstall == null) || (vc.Compare(pkgToBeInstall.Version, pkg.Version) < 0)) { - pkgToBeInstall = pkg; + if (preferencial != null) { + foreach (Package pkg in preferencial) { + if (entry.Match(pkg)) { + pkgToBeInstall = pkg; + break; + } + } + } + if (pkgToBeInstall == null) { + foreach (Package pkg in pkgListsMan.availablePkgList.GetPackagesForEntry(entry)) { + if ((pkgToBeInstall == null) || (vc.Compare(pkgToBeInstall.Version, pkg.Version) < 0)) { + pkgToBeInstall = pkg; + } } }