对于所有包,LocalPackageRepository都返回IsLatestVersion = true

时间:2015-06-10 22:44:50

标签: nuget nuget-server

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

当我使用controller/action/params查询包时,服务正确返回了这两个包。但是,两个包的IsLatestVersion true ,即使它们的版本明显不同。

我尝试过的事情: 我知道这些软件包是通过源here查看的OptimizedZipPackages,我找不到任何相关的建议来解决实现问题。

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

我如何创建软件包,实例化存储库或库中的错误似乎有些不对。

使用NuGet Core v2.8.60318.667

1 个答案:

答案 0 :(得分:1)

如果NuGet包不是预发行版,那么查看源代码LocalPackage总是为IsLatestVersion返回true。

在Visual Studio中,所发生的是通过删除列表中除最新版本之外的所有版本来进一步过滤软件包列表,这样您才能看到最新版本。一种方法是使用NuGet中包含的扩展方法:

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

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

我相信你也可以使用类似于上面的AsCollapsed扩展方法。它基本上是这样的:

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