LocalPackageRepository returns IsLatestVersion=true 所有包

LocalPackageRepository returns IsLatestVersion=true for all packages

我在我的 C:\packages 上创建了一个文件夹。在里面我创建了两个具有相同 ID 但具有不同版本的包。我使用 Nuget.Core 创建指向此目录的 LocalPackageRepository。

当我使用 respository.FindPackages("myId") 查询包时,服务正确返回了两个包。但是,两个包的 IsLatestVersion 都是 true,即使它们的版本明显不同。

我尝试过的事情: 我知道这些包是通过源代码 here 发现的 OptimizedZipPackages,我找不到任何相关的建议来说明实施问题。

我将本地存储库添加到我的 Visual Studio NuGet 提要管理器中。当我查询该服务时,显示的是最新版本。

我创建包、实例化存储库的方式似乎有问题,或者它是库中的错误。

使用 NuGet 核心 v2.8.60318.667

查看源代码,如果 NuGet 包不是预发布版,LocalPackage IsLatestVersion 始终 returns 为真。

在 Visual Studio 中发生的事情是通过删除列表中除最新版本之外的所有版本来进一步过滤包列表,因此您只会看到最新版本。一种方法是使用 NuGet 中包含的扩展方法:

packages.DistinctLast<IPackage>(PackageEqualityComparer.Id);

DistinctLast 方法假定相同的 NuGet 包 ID 将一起出现在列表中,否则将无法正确过滤它们。

我相信您也可以使用与上述类似的AsCollapsed 扩展方法。它基本上是:

packages.DistinctLast<IPackage>(PackageEqualityComparer.Id, PackageEqualityComparer.Version);