diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs index d5be42c56c..86876e3a68 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs @@ -43,13 +43,9 @@ namespace ICSharpCode.PackageManagement protected override IEnumerable GetFilteredPackagesBeforePagingResults(IQueryable allPackages) { - IEnumerable filteredPackages = base.GetFilteredPackagesBeforePagingResults(allPackages); - return GetDistinctPackagesById(filteredPackages); - } - - IEnumerable GetDistinctPackagesById(IEnumerable allPackages) - { - return allPackages.DistinctLast(PackageEqualityComparer.Id); + return base.GetFilteredPackagesBeforePagingResults(allPackages) + .Where(package => package.IsReleaseVersion()) + .DistinctLast(PackageEqualityComparer.Id); } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs index 641ebaa8ff..85b8979efc 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs @@ -358,5 +358,29 @@ namespace PackageManagement.Tests ApplicationException ex = Assert.Throws(() => CompleteReadPackagesTask()); Assert.AreEqual("Test", ex.Message); } + + [Test] + public void ReadPackages_RepositoryHasPrereleaseAndReleasePackage_HasReleasePackageOnly() + { + CreateViewModel(); + + var releasePackage = new FakePackage("Test", "1.0.0.0"); + var prereleasePackage = new FakePackage("Test", "1.1.0-alpha"); + + var packages = new FakePackage[] { + releasePackage, prereleasePackage + }; + + registeredPackageRepositories.FakeActiveRepository.FakePackages.AddRange(packages); + + viewModel.ReadPackages(); + CompleteReadPackagesTask(); + + var expectedPackages = new FakePackage[] { + releasePackage + }; + + PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels); + } } }